IDS peak genericC++ v1.9.0
Loading...
Searching...
No Matches
peak_event_controller.hpp
Go to the documentation of this file.
1
11#pragma once
12
13
17#include <peak/dll_interface/peak_dll_interface_util.hpp>
19
20#include <cstddef>
21#include <cstdint>
22#include <memory>
23
24
25namespace peak
26{
27namespace core
28{
29
38{
39public:
40 EventController() = delete;
42 EventController(const EventController& other) = delete;
43 EventController& operator=(const EventController& other) = delete;
46
48 RawInformation Info(int32_t infoCommand) const;
49
59 size_t NumEventsInQueue() const;
60
70 uint64_t NumEventsFired() const;
71
81 size_t EventMaxSize() const;
82
92 size_t EventDataMaxSize() const;
93
109 std::unique_ptr<Event> WaitForEvent(Timeout timeout_ms);
110
118 void KillWait();
119
127 void FlushEvents();
128
137
138private:
139 friend ClassCreator<EventController>;
140 explicit EventController(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle);
141 PEAK_EVENT_CONTROLLER_HANDLE m_backendHandle;
142};
143
144} /* namespace core */
145} /* namespace peak */
146
147/* Implementation */
148namespace peak
149{
150namespace core
151{
152
154 : m_backendHandle(eventControllerHandle)
155{}
156
161
162inline RawInformation EventController::Info(int32_t infoCommand) const
163{
164 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
166 m_backendHandle, infoCommand, dataType, buffer, bufferSize);
167 });
168}
169
171{
172 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* numEventsInQueue) {
173 return PEAK_C_ABI_PREFIX PEAK_EventController_GetNumEventsInQueue(m_backendHandle, numEventsInQueue);
174 });
175}
176
177inline uint64_t EventController::NumEventsFired() const
178{
179 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* numEventsFired) {
180 return PEAK_C_ABI_PREFIX PEAK_EventController_GetNumEventsFired(m_backendHandle, numEventsFired);
181 });
182}
183
184inline size_t EventController::EventMaxSize() const
185{
186 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* eventMaxSize) {
187 return PEAK_C_ABI_PREFIX PEAK_EventController_GetEventMaxSize(m_backendHandle, eventMaxSize);
188 });
189}
190
192{
193 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* eventDataMaxSize) {
194 return PEAK_C_ABI_PREFIX PEAK_EventController_GetEventDataMaxSize(m_backendHandle, eventDataMaxSize);
195 });
196}
197
198inline std::unique_ptr<Event> EventController::WaitForEvent(Timeout timeout_ms)
199{
200 auto eventHandle = QueryNumericFromCInterfaceFunction<PEAK_EVENT_HANDLE>(
201 [&](PEAK_EVENT_HANDLE* _eventHandle) {
202 return PEAK_C_ABI_PREFIX PEAK_EventController_WaitForEvent(m_backendHandle, timeout_ms, _eventHandle);
203 });
204
205 return std::make_unique<ClassCreator<Event>>(eventHandle);
206}
207
209{
210 CallAndCheckCInterfaceFunction(
211 [&] { return PEAK_C_ABI_PREFIX PEAK_EventController_KillWait(m_backendHandle); });
212}
213
215{
216 CallAndCheckCInterfaceFunction(
217 [&] { return PEAK_C_ABI_PREFIX PEAK_EventController_FlushEvents(m_backendHandle); });
218}
219
221{
222 return static_cast<EventType>(
223 QueryNumericFromCInterfaceFunction<PEAK_EVENT_TYPE>([&](PEAK_EVENT_TYPE* controlledEventType) {
225 m_backendHandle, controlledEventType);
226 }));
227}
228
229} /* namespace core */
230} /* namespace peak */
Encapsulates the GenTL event functionality associated with one GenTL Event handle.
Definition peak_event_controller.hpp:38
void FlushEvents()
Discards all events in queue.
Definition peak_event_controller.hpp:214
EventType ControlledEventType() const
Returns the controlled event type.
Definition peak_event_controller.hpp:220
std::unique_ptr< Event > WaitForEvent(Timeout timeout_ms)
Blocking wait for an event.
Definition peak_event_controller.hpp:198
RawInformation Info(int32_t infoCommand) const
Delivers information based on the given GenTL info command.
Definition peak_event_controller.hpp:162
EventController & operator=(const EventController &other)=delete
size_t EventDataMaxSize() const
Returns the maximum size of the data of an event in bytes.
Definition peak_event_controller.hpp:191
~EventController()
Definition peak_event_controller.hpp:157
void KillWait()
Terminates a wait for an event.
Definition peak_event_controller.hpp:208
size_t NumEventsInQueue() const
Returns the number of events in queue.
Definition peak_event_controller.hpp:170
EventController(const EventController &other)=delete
EventController & operator=(EventController &&other)=delete
size_t EventMaxSize() const
Returns the maximum size of an event in bytes.
Definition peak_event_controller.hpp:184
uint64_t NumEventsFired() const
Returns the number of fired events.
Definition peak_event_controller.hpp:177
EventController(EventController &&other)=delete
Represents a timeout value in milliseconds.
Definition peak_timeout.hpp:31
EventType
Different types of events.
Definition peak_event.hpp:35
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
PEAK_C_API PEAK_EventController_FlushEvents(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle)
Tells the given event controller to flush all events in queue.
struct PEAK_EVENT * PEAK_EVENT_HANDLE
Definition peak_backend.h:468
int32_t PEAK_EVENT_TYPE
Definition peak_backend.h:168
PEAK_C_API PEAK_EventController_GetEventMaxSize(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, size_t *eventMaxSize)
Asks the event controller for the maximum size of an event.
struct PEAK_EVENT_CONTROLLER * PEAK_EVENT_CONTROLLER_HANDLE
Definition peak_backend.h:464
PEAK_C_API PEAK_EventController_GetEventDataMaxSize(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, size_t *eventDataMaxSize)
Asks the event controller for the maximum size of an event's data.
PEAK_C_API PEAK_EventController_GetInfo(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, int32_t infoCommand, int32_t *infoDataType, uint8_t *info, size_t *infoSize)
Asks the given event controller for an information based on a specific command.
PEAK_C_API PEAK_EventController_WaitForEvent(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, uint64_t timeout_ms, PEAK_EVENT_HANDLE *eventHandle)
Tells the given event controller to wait for an event with the given timeout.
PEAK_C_API PEAK_EventController_GetNumEventsInQueue(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, size_t *numEventsInQueue)
Asks the event controller for its number of events in queue.
PEAK_C_API PEAK_EventController_GetNumEventsFired(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, uint64_t *numEventsFired)
Asks the event controller for its number of fired events.
PEAK_C_API PEAK_EventController_GetControlledEventType(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle, PEAK_EVENT_TYPE *controlledEventType)
Asks the event controller for its controlled event type.
PEAK_C_API PEAK_EventController_KillWait(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle)
Tells the given event controller to kill a wait for an event.
PEAK_C_API PEAK_EventController_Destruct(PEAK_EVENT_CONTROLLER_HANDLE eventControllerHandle)
Destroys the given event controller.
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:16
The struct returned by all raw information functions.
Definition peak_common_structs.hpp:25