38#ifndef INCLUDED_BLPAPI_EVENT
39#define INCLUDED_BLPAPI_EVENT
143int blpapi_Event_eventType(
const blpapi_Event_t *event);
157int blpapi_Event_addRef(
const blpapi_Event_t *event);
170int blpapi_Event_release(
const blpapi_Event_t *event);
180blpapi_EventQueue_t *blpapi_EventQueue_create(
void);
190int blpapi_EventQueue_destroy(blpapi_EventQueue_t *eventQueue);
206blpapi_Event_t *blpapi_EventQueue_nextEvent(
207 blpapi_EventQueue_t *eventQueue,
int timeout);
219int blpapi_EventQueue_purge(blpapi_EventQueue_t *eventQueue);
234int blpapi_EventQueue_tryNextEvent(
235 blpapi_EventQueue_t *eventQueue, blpapi_Event_t **eventPointer);
249blpapi_MessageIterator_t *blpapi_MessageIterator_create(
250 const blpapi_Event_t *event);
259void blpapi_MessageIterator_destroy(blpapi_MessageIterator_t *iterator);
273int blpapi_MessageIterator_next(
274 blpapi_MessageIterator_t *iterator, blpapi_Message_t **result);
286int blpapi_MessageIterator_addRef(
const blpapi_MessageIterator_t *iterator);
327 blpapi_Event_t *d_impl_p;
374 blpapi_MessageIterator_t *d_impl_p;
435 const
Message *operator->() const noexcept;
448 Event(blpapi_Event_t *handle);
482 blpapi_Event_t *impl() const;
519 blpapi_EventQueue_t *d_handle_p;
553 virtual void purge();
562 blpapi_EventQueue_t *handle()
const;
583 blpapi_MessageIterator_t *d_impl_p;
584 blpapi_Message_t *d_current_p;
655 : d_impl_p(original.d_impl_p)
658 blpapi_Event_addRef(d_impl_p);
665 blpapi_Event_release(d_impl_p);
674 swap(tmp.d_impl_p, d_impl_p);
681 return (
EventType)blpapi_Event_eventType(d_impl_p);
687inline blpapi_Event_t *Event::impl()
const {
return d_impl_p; }
704 return Event(blpapi_EventQueue_nextEvent(d_handle_p, timeout));
711 blpapi_Event_t *impl = 0;
712 int ret = blpapi_EventQueue_tryNextEvent(d_handle_p, &impl);
714 *
event =
Event(impl);
722inline blpapi_EventQueue_t *EventQueue::handle()
const {
return d_handle_p; }
731 , d_current_p(nullptr)
733 d_impl_p = blpapi_MessageIterator_create(event.impl());
738 blpapi_MessageIterator_destroy(d_impl_p);
743 return !blpapi_MessageIterator_next(d_impl_p, &d_current_p);
748 return d_current_p ? true :
false;
753 if (createClonable) {
754 BLPAPI_CALL_MESSAGE_ADDREF(d_current_p);
756 return Message(d_current_p, createClonable);
765 , d_currentMessage(nullptr)
773 d_impl_p = blpapi_MessageIterator_create(event.impl());
779 : d_impl_p(original.d_impl_p)
780 , d_currentMessage(original.d_currentMessage)
783 BLPAPI_CALL(blpapi_MessageIterator_addRef)(d_impl_p);
789 blpapi_MessageIterator_destroy(d_impl_p);
801 return d_currentMessage;
806 return &d_currentMessage;
811 d_currentMessage =
Message(
nullptr);
813 blpapi_Message_t *nextMessage =
nullptr;
814 blpapi_MessageIterator_next(d_impl_p, &nextMessage);
815 d_currentMessage =
Message(nextMessage);
830 swap(d_impl_p, other.d_impl_p);
831 swap(d_currentMessage, other.d_currentMessage);
843 if (lhs.d_impl_p == rhs.d_impl_p
844 && lhs.d_currentMessage.impl() == rhs.d_currentMessage.impl()) {
848 const bool lend = !lhs.d_impl_p || !lhs.d_currentMessage.impl();
849 const bool rend = !rhs.d_impl_p || !rhs.d_currentMessage.impl();
857 return !(lhs == rhs);
Provide functions for dispatchtbl.
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:707
EventQueue()
Definition blpapi_event.h:698
virtual ~EventQueue()
Definition blpapi_event.h:700
virtual Event nextEvent(int timeout=0)
Definition blpapi_event.h:702
virtual void purge()
Definition blpapi_event.h:719
Definition blpapi_event.h:372
const Message & operator*() const noexcept
Definition blpapi_event.h:799
Message value_type
Definition blpapi_event.h:380
const Message * operator->() const noexcept
Definition blpapi_event.h:804
~iterator()
Definition blpapi_event.h:787
void swap(iterator &other)
Definition blpapi_event.h:827
iterator()
Definition blpapi_event.h:763
iterator & operator=(const iterator &original)
Definition blpapi_event.h:792
Message & reference
Definition blpapi_event.h:382
std::input_iterator_tag iterator_category
Definition blpapi_event.h:383
Message * pointer
Definition blpapi_event.h:381
std::ptrdiff_t difference_type
Definition blpapi_event.h:379
iterator & operator++()
Definition blpapi_event.h:809
Definition blpapi_event.h:325
iterator end() const
Definition blpapi_event.h:692
EventType
The possible types of event.
Definition blpapi_event.h:331
@ AUTHORIZATION_STATUS
Status updates for user authorization.
Definition blpapi_event.h:350
@ SESSION_STATUS
Status updates for a session.
Definition blpapi_event.h:334
@ ADMIN
Admin event.
Definition blpapi_event.h:332
@ PARTIAL_RESPONSE
A partial response to a request.
Definition blpapi_event.h:342
@ SERVICE_STATUS
Status updates for a service.
Definition blpapi_event.h:346
@ UNKNOWN
Definition blpapi_event.h:360
@ REQUEST_STATUS
Status updates for a request.
Definition blpapi_event.h:338
@ TOKEN_STATUS
Status updates for a generate token request.
Definition blpapi_event.h:356
@ RESOLUTION_STATUS
Status updates for a resolution operation.
Definition blpapi_event.h:352
@ TIMEOUT
An Event returned from Session::nextEvent() if it timed out.
Definition blpapi_event.h:348
@ REQUEST
Request event. Provided to ProviderSession only.
Definition blpapi_event.h:358
@ SUBSCRIPTION_DATA
Data updates resulting from a subscription.
Definition blpapi_event.h:344
@ TOPIC_STATUS
Status updates about topics for service providers.
Definition blpapi_event.h:354
@ SUBSCRIPTION_STATUS
Status updates for a subscription.
Definition blpapi_event.h:336
@ RESPONSE
The final (possibly only) response to a request.
Definition blpapi_event.h:340
EventType eventType() const
Definition blpapi_event.h:679
Event & operator=(const Event &rhs)
Definition blpapi_event.h:669
bool isValid() const
Definition blpapi_event.h:684
Event()
Definition blpapi_event.h:644
~Event()
Definition blpapi_event.h:662
iterator begin() const
Definition blpapi_event.h:690
MessageIterator(const MessageIterator &)=delete
MessageIterator & operator=(const MessageIterator &)=delete
bool isValid() const
Definition blpapi_event.h:746
~MessageIterator()
Definition blpapi_event.h:736
bool next()
Definition blpapi_event.h:741
Message message(bool createClonable=false) const
Definition blpapi_event.h:751
Definition blpapi_message.h:344
void swap(Event::iterator &lhs, Event::iterator &rhs)
Swap the contents of the lhs and rhs iterators.
Definition blpapi_event.h:860
Definition blpapi_abstractsession.h:452
bool operator==(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:718
bool operator!=(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:741
Definition blpapi_abstractsession.h:451