3#include "../../global.hpp"
5#include "../_decl/decl_notify_observable.hpp"
7#include "../../_cexports/c_driver.h"
9#include "../../_decl/decl_device.hpp"
19 inline NotifyObservable::NotifyObservable(
const DevicePtr &parent,
int index)
23 CExports::CVNotifyInfo_t eventNumber = 0;
24 auto bufferSizeResult = CExports::NOGetDescription(parent_->Handle(),
static_cast<std::size_t>(index),
nullptr,
25 bufferSize, eventNumber);
26 if (bufferSizeResult < 0)
30 auto bufferResult = CExports::NOGetDescription(parent_->Handle(),
static_cast<std::size_t>(index), &buffer[0],
31 bufferSize, eventNumber);
35 eventNumber_ = eventNumber;
36 description_ =
String(buffer.begin(), buffer.end());
38 CExports::cvbres_t resultRegister =
39 CExports::NORegister(parent_->Handle(),
static_cast<CExports::CVNotifyEvent_t
>(eventNumber_),
40 &NotifyObservable::Callback,
this, cookie_);
41 if (resultRegister < 0)
45 inline NotifyObservable::~NotifyObservable()
48 CExports::NOUnregister(parent_->Handle(), cookie_);
53 CExports::cvbint64_t info = 0;
54 auto result = CExports::NOGetStatus(parent_->Handle(),
static_cast<CExports::CVNotifyEvent_t
>(
ID()),
55 CExports::CVNO_INFO_IS_AVAILABLE, info);
59 return (info) ? true :
false;
64 auto carrier = Internal::CbCarrier<void(
NotifyArgs)>::Create(handler);
65 return carrierContainer_.Register(carrier);
70 carrierContainer_.Unregister(eventCookie);
Event argument for notification events.
Definition decl_notify_observable.hpp:22
bool IsAvailable() const
Gets whether the current device can actually handle this event.
Definition detail_notify_observable.hpp:51
int ID() const noexcept
Get the native ID.
Definition decl_notify_observable.hpp:134
void UnregisterEvent(EventCookie eventCookie) noexcept
Manually unregister a listener to this observable.
Definition detail_notify_observable.hpp:68
EventCookie RegisterEvent(std::function< void(NotifyArgs)> handler)
Register a listener to this observable.
Definition detail_notify_observable.hpp:62
Cookie used to unregister event handlers.
Definition global.hpp:591
Namespace for driver or device related operations.
Definition decl_composite.hpp:28
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
std::string String
String for wide characters or unicode characters.
Definition string.hpp:49
std::shared_ptr< Device > DevicePtr
Convenience shared pointer for Device.
Definition global.hpp:98
T rethrow_exception(T... args)