36#ifndef INCLUDED_BLPAPI_EVENT
37#define INCLUDED_BLPAPI_EVENT
135int blpapi_Event_eventType(
const blpapi_Event_t *event);
138int blpapi_Event_addRef(
const blpapi_Event_t *event);
141int blpapi_Event_release(
const blpapi_Event_t *event);
144blpapi_EventQueue_t *blpapi_EventQueue_create(
void);
147int blpapi_EventQueue_destroy(blpapi_EventQueue_t *eventQueue);
150blpapi_Event_t *blpapi_EventQueue_nextEvent(
151 blpapi_EventQueue_t *eventQueue,
int timeout);
154int blpapi_EventQueue_purge(blpapi_EventQueue_t *eventQueue);
157int blpapi_EventQueue_tryNextEvent(
158 blpapi_EventQueue_t *eventQueue, blpapi_Event_t **eventPointer);
161blpapi_MessageIterator_t *blpapi_MessageIterator_create(
162 const blpapi_Event_t *event);
165void blpapi_MessageIterator_destroy(blpapi_MessageIterator_t *iterator);
168int blpapi_MessageIterator_next(
169 blpapi_MessageIterator_t *iterator, blpapi_Message_t **result);
172int blpapi_MessageIterator_addRef(
const blpapi_MessageIterator_t *iterator);
214 blpapi_Event_t *d_impl_p;
261 blpapi_MessageIterator_t *d_impl_p;
322 const
Message *operator->() const noexcept;
335 Event(blpapi_Event_t *handle);
368 blpapi_Event_t *
impl() const;
404 blpapi_EventQueue_t *d_handle_p;
438 virtual void purge();
446 blpapi_EventQueue_t *
handle()
const;
466 blpapi_MessageIterator_t *d_impl_p;
467 blpapi_Message_t *d_current_p;
538 : d_impl_p(original.d_impl_p)
541 blpapi_Event_addRef(d_impl_p);
548 blpapi_Event_release(d_impl_p);
557 swap(tmp.d_impl_p, d_impl_p);
564 return (
EventType)blpapi_Event_eventType(d_impl_p);
585 return Event(blpapi_EventQueue_nextEvent(d_handle_p, timeout));
592 blpapi_Event_t *impl = 0;
593 int ret = blpapi_EventQueue_tryNextEvent(d_handle_p, &impl);
595 *
event =
Event(impl);
610 , d_current_p(nullptr)
612 d_impl_p = blpapi_MessageIterator_create(event.
impl());
617 blpapi_MessageIterator_destroy(d_impl_p);
622 return !blpapi_MessageIterator_next(d_impl_p, &d_current_p);
627 return d_current_p ? true :
false;
632 if (createClonable) {
635 return Message(d_current_p, createClonable);
644 , d_currentMessage(nullptr)
652 d_impl_p = blpapi_MessageIterator_create(event.impl());
658 : d_impl_p(original.d_impl_p)
659 , d_currentMessage(original.d_currentMessage)
662 BLPAPI_CALL(blpapi_MessageIterator_addRef)(d_impl_p);
668 blpapi_MessageIterator_destroy(d_impl_p);
680 return d_currentMessage;
685 return &d_currentMessage;
690 d_currentMessage =
Message(
nullptr);
692 blpapi_Message_t *nextMessage =
nullptr;
693 blpapi_MessageIterator_next(d_impl_p, &nextMessage);
694 d_currentMessage =
Message(nextMessage);
709 swap(d_impl_p, other.d_impl_p);
710 swap(d_currentMessage, other.d_currentMessage);
722 if (lhs.d_impl_p == rhs.d_impl_p
723 && lhs.d_currentMessage.impl() == rhs.d_currentMessage.impl()) {
727 const bool lend = !lhs.d_impl_p || !lhs.d_currentMessage.impl();
728 const bool rend = !rhs.d_impl_p || !rhs.d_currentMessage.impl();
736 return !(lhs == rhs);
Provide functions for dispatchtbl.
#define BLPAPI_CALL_MESSAGE_ADDREF(a1)
Definition blpapi_call.h:368
#define BLPAPI_CALL(FUNCNAME)
Definition blpapi_call.h:361
Common definitions used by the library.
Defines a message containing elements.
EventQueue(const EventQueue &)=delete
EventQueue & operator=(const EventQueue &)=delete
virtual int tryNextEvent(Event *event)
Definition blpapi_event.h:588
EventQueue()
Definition blpapi_event.h:579
virtual ~EventQueue()
Definition blpapi_event.h:581
virtual Event nextEvent(int timeout=0)
Definition blpapi_event.h:583
virtual void purge()
Definition blpapi_event.h:600
blpapi_EventQueue_t * handle() const
Definition blpapi_event.h:602
Definition blpapi_event.h:259
const Message & operator*() const noexcept
Definition blpapi_event.h:678
Message value_type
Definition blpapi_event.h:267
const Message * operator->() const noexcept
Definition blpapi_event.h:683
~iterator()
Definition blpapi_event.h:666
void swap(iterator &other)
Definition blpapi_event.h:706
iterator()
Definition blpapi_event.h:642
iterator & operator=(const iterator &original)
Definition blpapi_event.h:671
Message & reference
Definition blpapi_event.h:269
std::input_iterator_tag iterator_category
Definition blpapi_event.h:270
Message * pointer
Definition blpapi_event.h:268
std::ptrdiff_t difference_type
Definition blpapi_event.h:266
iterator & operator++()
Definition blpapi_event.h:688
Definition blpapi_event.h:212
iterator end() const
Definition blpapi_event.h:573
EventType
The possible types of event.
Definition blpapi_event.h:218
@ AUTHORIZATION_STATUS
Status updates for user authorization.
Definition blpapi_event.h:237
@ SESSION_STATUS
Status updates for a session.
Definition blpapi_event.h:221
@ ADMIN
Admin event.
Definition blpapi_event.h:219
@ PARTIAL_RESPONSE
A partial response to a request.
Definition blpapi_event.h:229
@ SERVICE_STATUS
Status updates for a service.
Definition blpapi_event.h:233
@ UNKNOWN
Definition blpapi_event.h:247
@ REQUEST_STATUS
Status updates for a request.
Definition blpapi_event.h:225
@ TOKEN_STATUS
Status updates for a generate token request.
Definition blpapi_event.h:243
@ RESOLUTION_STATUS
Status updates for a resolution operation.
Definition blpapi_event.h:239
@ TIMEOUT
An Event returned from Session::nextEvent() if it timed out.
Definition blpapi_event.h:235
@ REQUEST
Request event. Provided to ProviderSession only.
Definition blpapi_event.h:245
@ SUBSCRIPTION_DATA
Data updates resulting from a subscription.
Definition blpapi_event.h:231
@ TOPIC_STATUS
Status updates about topics for service providers.
Definition blpapi_event.h:241
@ SUBSCRIPTION_STATUS
Status updates for a subscription.
Definition blpapi_event.h:223
@ RESPONSE
The final (possibly only) response to a request.
Definition blpapi_event.h:227
EventType eventType() const
Definition blpapi_event.h:562
Event & operator=(const Event &rhs)
Definition blpapi_event.h:552
blpapi_Event_t * impl() const
Definition blpapi_event.h:569
bool isValid() const
Definition blpapi_event.h:567
Event()
Definition blpapi_event.h:527
~Event()
Definition blpapi_event.h:545
iterator begin() const
Definition blpapi_event.h:571
MessageIterator(const MessageIterator &)=delete
MessageIterator & operator=(const MessageIterator &)=delete
bool isValid() const
Definition blpapi_event.h:625
~MessageIterator()
Definition blpapi_event.h:615
bool next()
Definition blpapi_event.h:620
Message message(bool createClonable=false) const
Definition blpapi_event.h:630
Definition blpapi_message.h:177
void swap(Event::iterator &lhs, Event::iterator &rhs)
Swap the contents of the lhs and rhs iterators.
Definition blpapi_event.h:739
Definition blpapi_abstractsession.h:212
bool operator==(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:637
bool operator!=(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:660
Definition blpapi_abstractsession.h:211