73 using Callback = std::function<void(
const std::vector<EventCount>& counts)>;
76 class FirebirdCallback final :
public fb::IEventCallbackImpl<FirebirdCallback, impl::StatusWrapper>
84 void eventCallbackFunction(
unsigned length,
const std::uint8_t* events)
override
87 owner->handleEvent(length, events);
90 void addRef()
override
95 int release()
override
101 void detach()
noexcept
141 bool isListening() noexcept;
149 void handleEvent(
unsigned length, const std::uint8_t* events);
151 void cancelEventsHandle();
152 void decodeEventCounts();
157 std::vector<std::
string> eventNames;
159 FbRef<fb::IEvents> eventsHandle;
160 FirebirdCallback firebirdCallback;
161 std::vector<std::uint8_t> eventBuffer;
162 std::vector<std::uint8_t> resultBuffer;
163 std::vector<std::uint32_t> rawCounts;
164 std::vector<
unsigned> countOffsets;
165 std::deque<std::vector<
EventCount>> pendingNotifications;
166 std::thread dispatcher;
168 std::condition_variable condition;
169 bool listening = false;
170 bool running = false;