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;
534 blpapi_EventQueue_t *d_handle_p;
568 virtual void purge();
577 blpapi_EventQueue_t *handle()
const;
598 blpapi_MessageIterator_t *d_impl_p;
599 blpapi_Message_t *d_current_p;
670 : d_impl_p(original.d_impl_p)
673 blpapi_Event_addRef(d_impl_p);
680 blpapi_Event_release(d_impl_p);
689 swap(tmp.d_impl_p, d_impl_p);
696 return (
EventType)blpapi_Event_eventType(d_impl_p);
702inline blpapi_Event_t *Event::impl()
const {
return d_impl_p; }
719 return Event(blpapi_EventQueue_nextEvent(d_handle_p, timeout));
726 blpapi_Event_t *impl = 0;
727 int ret = blpapi_EventQueue_tryNextEvent(d_handle_p, &impl);
729 *
event =
Event(impl);
737inline blpapi_EventQueue_t *EventQueue::handle()
const {
return d_handle_p; }
746 , d_current_p(nullptr)
748 d_impl_p = blpapi_MessageIterator_create(event.impl());
753 blpapi_MessageIterator_destroy(d_impl_p);
758 return !blpapi_MessageIterator_next(d_impl_p, &d_current_p);
763 return d_current_p ? true :
false;
768 if (createClonable) {
769 BLPAPI_CALL_MESSAGE_ADDREF(d_current_p);
771 return Message(d_current_p, createClonable);
780 , d_currentMessage(nullptr)
788 d_impl_p = blpapi_MessageIterator_create(event.impl());
794 : d_impl_p(original.d_impl_p)
795 , d_currentMessage(original.d_currentMessage)
798 BLPAPI_CALL(blpapi_MessageIterator_addRef)(d_impl_p);
804 blpapi_MessageIterator_destroy(d_impl_p);
816 return d_currentMessage;
821 return &d_currentMessage;
826 d_currentMessage =
Message(
nullptr);
828 blpapi_Message_t *nextMessage =
nullptr;
829 blpapi_MessageIterator_next(d_impl_p, &nextMessage);
830 d_currentMessage =
Message(nextMessage);
845 swap(d_impl_p, other.d_impl_p);
846 swap(d_currentMessage, other.d_currentMessage);
858 return "SESSION_STATUS";
860 return "SUBSCRIPTION_STATUS";
862 return "REQUEST_STATUS";
866 return "PARTIAL_RESPONSE";
868 return "SUBSCRIPTION_DATA";
870 return "SERVICE_STATUS";
874 return "AUTHORIZATION_STATUS";
876 return "RESOLUTION_STATUS";
878 return "TOPIC_STATUS";
880 return "TOKEN_STATUS";
899 if (lhs.d_impl_p == rhs.d_impl_p
900 && lhs.d_currentMessage.impl() == rhs.d_currentMessage.impl()) {
904 const bool lend = !lhs.d_impl_p || !lhs.d_currentMessage.impl();
905 const bool rend = !rhs.d_impl_p || !rhs.d_currentMessage.impl();
913 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:722
EventQueue()
Definition blpapi_event.h:713
virtual ~EventQueue()
Definition blpapi_event.h:715
virtual Event nextEvent(int timeout=0)
Definition blpapi_event.h:717
virtual void purge()
Definition blpapi_event.h:734
Definition blpapi_event.h:372
const Message & operator*() const noexcept
Definition blpapi_event.h:814
Message value_type
Definition blpapi_event.h:380
const Message * operator->() const noexcept
Definition blpapi_event.h:819
~iterator()
Definition blpapi_event.h:802
void swap(iterator &other)
Definition blpapi_event.h:842
iterator()
Definition blpapi_event.h:778
iterator & operator=(const iterator &original)
Definition blpapi_event.h:807
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:824
Definition blpapi_event.h:325
iterator end() const
Definition blpapi_event.h:707
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:694
Event & operator=(const Event &rhs)
Definition blpapi_event.h:684
bool isValid() const
Definition blpapi_event.h:699
Event()
Definition blpapi_event.h:659
~Event()
Definition blpapi_event.h:677
iterator begin() const
Definition blpapi_event.h:705
MessageIterator(const MessageIterator &)=delete
MessageIterator & operator=(const MessageIterator &)=delete
bool isValid() const
Definition blpapi_event.h:761
~MessageIterator()
Definition blpapi_event.h:751
bool next()
Definition blpapi_event.h:756
Message message(bool createClonable=false) const
Definition blpapi_event.h:766
Definition blpapi_message.h:344
constexpr const char * to_string(CorrelationId::ValueType valueType)
Definition blpapi_correlationid.h:830
void swap(Event::iterator &lhs, Event::iterator &rhs)
Swap the contents of the lhs and rhs iterators.
Definition blpapi_event.h:916
Definition blpapi_correlationid.h:499
Definition blpapi_abstractsession.h:448
bool operator==(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:749
bool operator!=(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:772
Definition blpapi_abstractsession.h:447