38#ifndef INCLUDED_BLPAPI_SESSION
39#define INCLUDED_BLPAPI_SESSION
100typedef void (*blpapi_EventHandler_t)(
101 blpapi_Event_t *event, blpapi_Session_t *session,
void *userData);
110typedef void (*blpapi_SubscriptionPreprocessErrorHandler_t)(
111 const blpapi_CorrelationId_t *correlationId,
112 const char *subscriptionString,
114 const char *errorDescription,
139blpapi_Session_t *blpapi_Session_create(blpapi_SessionOptions_t *parameters,
140 blpapi_EventHandler_t handler,
141 blpapi_EventDispatcher_t *dispatcher,
154void blpapi_Session_destroy(blpapi_Session_t *session);
169int blpapi_Session_start(blpapi_Session_t *session);
184int blpapi_Session_startAsync(blpapi_Session_t *session);
200int blpapi_Session_stop(blpapi_Session_t *session);
215int blpapi_Session_stopAsync(blpapi_Session_t *session);
235int blpapi_Session_nextEvent(blpapi_Session_t *session,
236 blpapi_Event_t **eventPointer,
237 unsigned int timeoutInMilliseconds);
251int blpapi_Session_tryNextEvent(
252 blpapi_Session_t *session, blpapi_Event_t **eventPointer);
278int blpapi_Session_subscribe(blpapi_Session_t *session,
279 const blpapi_SubscriptionList_t *subscriptionList,
280 const blpapi_Identity_t *handle,
281 const char *requestLabel,
282 int requestLabelLen);
306int blpapi_Session_subscribeEx(blpapi_Session_t *session,
307 const blpapi_SubscriptionList_t *subscriptionList,
308 const blpapi_Identity_t *handle,
309 const char *requestLabel,
311 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
335int blpapi_Session_resubscribe(blpapi_Session_t *session,
336 const blpapi_SubscriptionList_t *resubscriptionList,
337 const char *requestLabel,
338 int requestLabelLen);
361int blpapi_Session_resubscribeEx(blpapi_Session_t *session,
362 const blpapi_SubscriptionList_t *resubscriptionList,
363 const char *requestLabel,
365 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
388int blpapi_Session_resubscribeWithId(blpapi_Session_t *session,
389 const blpapi_SubscriptionList_t *resubscriptionList,
390 int resubscriptionId,
391 const char *requestLabel,
392 int requestLabelLen);
417int blpapi_Session_resubscribeWithIdEx(blpapi_Session_t *session,
418 const blpapi_SubscriptionList_t *resubscriptionList,
419 int resubscriptionId,
420 const char *requestLabel,
422 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
445int blpapi_Session_unsubscribe(blpapi_Session_t *session,
446 const blpapi_SubscriptionList_t *unsubscriptionList,
447 const char *requestLabel,
448 int requestLabelLen);
471int blpapi_Session_cancel(blpapi_Session_t *session,
472 const blpapi_CorrelationId_t *correlationIds,
473 size_t numCorrelationIds,
474 const char *requestLabel,
475 int requestLabelLen);
494int blpapi_Session_setStatusCorrelationId(blpapi_Session_t *session,
495 const blpapi_Service_t *service,
496 const blpapi_Identity_t *identity,
497 const blpapi_CorrelationId_t *correlationId);
528int blpapi_Session_sendRequest(blpapi_Session_t *session,
529 const blpapi_Request_t *request,
530 blpapi_CorrelationId_t *correlationId,
531 blpapi_Identity_t *identity,
532 blpapi_EventQueue_t *eventQueue,
533 const char *requestLabel,
534 int requestLabelLen);
554int blpapi_Session_sendRequestTemplate(blpapi_Session_t *session,
555 const blpapi_RequestTemplate_t *requestTemplate,
556 blpapi_CorrelationId_t *correlationId);
588int blpapi_Session_createSnapshotRequestTemplate(
589 blpapi_RequestTemplate_t **requestTemplate,
590 blpapi_Session_t *session,
591 const char *subscriptionString,
592 const blpapi_Identity_t *identity,
593 blpapi_CorrelationId_t *correlationId);
618int blpapi_Session_sendAuthorizationRequest(blpapi_Session_t *session,
619 const blpapi_Request_t *request,
620 blpapi_Identity_t *identity,
621 blpapi_CorrelationId_t *correlationId,
622 blpapi_EventQueue_t *eventQueue,
623 const char *requestLabel,
624 int requestLabelLen);
640int blpapi_Session_openService(
641 blpapi_Session_t *session,
const char *serviceName);
660int blpapi_Session_openServiceAsync(blpapi_Session_t *session,
661 const char *serviceName,
662 blpapi_CorrelationId_t *correlationId);
679int blpapi_Session_generateToken(blpapi_Session_t *session,
680 blpapi_CorrelationId_t *correlationId,
681 blpapi_EventQueue_t *eventQueue);
700int blpapi_Session_getService(blpapi_Session_t *session,
701 blpapi_Service_t **service,
702 const char *serviceName);
716blpapi_UserHandle_t *blpapi_Session_createUserHandle(
717 blpapi_Session_t *session);
730blpapi_Identity_t *blpapi_Session_createIdentity(blpapi_Session_t *session);
743blpapi_AbstractSession_t *blpapi_Session_getAbstractSession(
744 blpapi_Session_t *session);
757blpapi_SubscriptionIterator_t *blpapi_SubscriptionItr_create(
758 blpapi_Session_t *session);
768void blpapi_SubscriptionItr_destroy(blpapi_SubscriptionIterator_t *iterator);
791int blpapi_SubscriptionItr_next(blpapi_SubscriptionIterator_t *iterator,
792 const char **subscriptionString,
793 blpapi_CorrelationId_t *correlationId,
806int blpapi_SubscriptionItr_isValid(
807 const blpapi_SubscriptionIterator_t *iterator);
859extern "C" void blpapi_eventHandlerAdapter(
860 blpapi_Event_t *event, blpapi_Session_t *,
void *userData);
871 = BLPAPI_SUBSCRIPTIONPREPROCESS_INVALID_SUBSCRIPTION_STRING,
875 = BLPAPI_SUBSCRIPTIONPREPROCESS_CORRELATIONID_ERROR
909 os <<
"InvalidSubscriptionString";
910 }
else if (error.
code
912 os <<
"CorrelationIdError";
917 os <<
"(" << error.
code <<
")";
918 os <<
", description: " << error.
description <<
"}";
924extern "C" inline void blpapi_SubscriptionPreprocess_handleError(
925 const blpapi_CorrelationId_t *correlationId,
926 const char *subscriptionString,
928 const char *description,
931 typedef std::vector<SubscriptionPreprocessError> Errors;
932 Errors *errors =
reinterpret_cast<Errors *
>(userData);
933 errors->emplace_back(CorrelationId(*correlationId),
1011class Session :
public AbstractSession {
1017 blpapi_Session_t *d_handle_p;
1021 Session(
const Session&);
1022 Session& operator=(
const Session&);
1025 blpapi_Event_t *event, blpapi_Session_t *,
void *userData);
1079 explicit Session(blpapi_Session_t *handle);
1086 virtual bool start();
1108 virtual void stop();
1158 const char *requestLabel = 0,
1159 int requestLabelLen = 0);
1177 const char *requestLabel = 0,
1178 int requestLabelLen = 0);
1199 const char *requestLabel = 0,
1200 int requestLabelLen = 0);
1219 const char *requestLabel = 0,
1220 int requestLabelLen = 0);
1295 const char *requestLabel,
1296 int requestLabelLen);
1316 const char *requestLabel,
1317 int requestLabelLen,
1356 int resubscriptionId,
1375 int resubscriptionId,
1376 const char *requestLabel,
1377 int requestLabelLen);
1398 int resubscriptionId,
1399 const char *requestLabel,
1400 int requestLabelLen,
1436 const char *requestLabel = 0,
1437 int requestLabelLen = 0);
1463 const char *requestLabel = 0,
1464 int requestLabelLen = 0);
1505 const char *subscriptionString,
1585 blpapi_Session_t *handle()
const;
1603class SubscriptionIterator {
1605 blpapi_SubscriptionIterator_t *d_handle_p;
1606 const char *d_subscriptionString;
1613 SubscriptionIterator(
const SubscriptionIterator&);
1614 SubscriptionIterator& operator=(
const SubscriptionIterator&);
1617 explicit SubscriptionIterator(
Session *session);
1667 blpapi_SubscriptionIterator_t *handle()
const;
1686extern "C" inline void blpapi_eventHandlerAdapter(
1687 blpapi_Event_t *event, blpapi_Session_t *,
void *userData)
1691 assert(session->d_eventHandler_p);
1703 : d_eventHandler_p(handler)
1705 if (dispatcher && !handler) {
1707 "Event dispatcher provided without handler.");
1709 d_handle_p = blpapi_Session_create(parameters.handle(),
1711 dispatcher ? dispatcher->impl() : 0,
1713 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1716inline Session::Session(blpapi_Session_t *newHandle)
1717 : d_handle_p(newHandle)
1719 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1726 return blpapi_Session_start(d_handle_p) ? false :
true;
1731 return blpapi_Session_startAsync(d_handle_p) ? false :
true;
1744 blpapi_Event_t *
event = 0;
1746 d_handle_p, &event,
static_cast<unsigned>(timeout)));
1747 return Event(event);
1752 blpapi_Event_t *impl = 0;
1753 int ret = blpapi_Session_tryNextEvent(d_handle_p, &impl);
1757 *
event =
Event(impl);
1763 const char *requestLabel,
1764 int requestLabelLen)
1767 subscriptions.impl(),
1776 const char *requestLabel,
1777 int requestLabelLen)
1781 subscribe(subscriptions, requestLabel, requestLabelLen);
1784 BLPAPI_CALL(blpapi_Session_subscribeEx)(d_handle_p,
1785 subscriptions.impl(),
1789 &blpapi_SubscriptionPreprocess_handleError,
1798 const char *requestLabel,
1799 int requestLabelLen)
1802 subscriptions.impl(),
1812 const char *requestLabel,
1813 int requestLabelLen)
1817 subscribe(subscriptions, identity, requestLabel, requestLabelLen);
1820 BLPAPI_CALL(blpapi_Session_subscribeEx)(d_handle_p,
1821 subscriptions.impl(),
1825 &blpapi_SubscriptionPreprocess_handleError,
1835 subscriptions.impl(),
1849 BLPAPI_CALL(blpapi_Session_resubscribeEx)(d_handle_p,
1850 subscriptions.impl(),
1853 &blpapi_SubscriptionPreprocess_handleError,
1861 const char *requestLabel,
1862 int requestLabelLen)
1865 d_handle_p, subscriptions.impl(), requestLabel, requestLabelLen));
1870 const char *requestLabel,
1871 int requestLabelLen,
1876 resubscribe(subscriptions, requestLabel, requestLabelLen);
1879 BLPAPI_CALL(blpapi_Session_resubscribeEx)(d_handle_p,
1880 subscriptions.impl(),
1883 &blpapi_SubscriptionPreprocess_handleError,
1894 BLPAPI_CALL_SESSION_RESUBSCRIBEWITHID(d_handle_p,
1895 subscriptions.impl(),
1903 int resubscriptionId,
1911 BLPAPI_CALL(blpapi_Session_resubscribeWithIdEx)(d_handle_p,
1912 subscriptions.impl(),
1916 &blpapi_SubscriptionPreprocess_handleError,
1924 int resubscriptionId,
1925 const char *requestLabel,
1926 int requestLabelLen)
1929 BLPAPI_CALL_SESSION_RESUBSCRIBEWITHID(d_handle_p,
1930 subscriptions.impl(),
1938 int resubscriptionId,
1939 const char *requestLabel,
1940 int requestLabelLen,
1951 BLPAPI_CALL(blpapi_Session_resubscribeWithIdEx)(d_handle_p,
1952 subscriptions.impl(),
1956 &blpapi_SubscriptionPreprocess_handleError,
1966 blpapi_Session_unsubscribe(d_handle_p, list.impl(), 0, 0));
1973 d_handle_p, service.handle(), 0, &correlationID.impl()));
1981 blpapi_Session_setStatusCorrelationId(d_handle_p,
1984 &correlationID.impl()));
1991 const char *requestLabel,
1992 int requestLabelLen)
1998 &retCorrelationId.impl(),
2000 eventQueue ? eventQueue->handle() : 0,
2004 return retCorrelationId;
2010 const char *requestLabel,
2011 int requestLabelLen)
2017 &retCorrelationId.impl(),
2019 eventQueue ? eventQueue->handle() : 0,
2023 return retCorrelationId;
2033 blpapi_Session_sendRequestTemplate)(
2034 d_handle_p, requestTemplate.impl(), &retCorrelationId.impl()));
2036 return retCorrelationId;
2040 const char *subscriptionString,
2044 blpapi_RequestTemplate_t *requestTemplate = 0;
2047 blpapi_Session_createSnapshotRequestTemplate)(&requestTemplate,
2051 const_cast<blpapi_CorrelationId_t *
>(&correlationID.impl())));
2057inline blpapi_Session_t *Session::handle()
const {
return d_handle_p; }
2064inline SubscriptionIterator::SubscriptionIterator(
Session *session)
2069 d_handle_p = blpapi_SubscriptionItr_create(session->handle());
2074 blpapi_SubscriptionItr_destroy(d_handle_p);
2079 blpapi_CorrelationId_t nextCorrelationIdImpl;
2080 d_isValid = !blpapi_SubscriptionItr_next(d_handle_p,
2081 &d_subscriptionString,
2082 &nextCorrelationIdImpl,
2085 d_correlationId = d_isValid ?
CorrelationId(nextCorrelationIdImpl)
2094inline blpapi_SubscriptionIterator_t *SubscriptionIterator::handle()
const
2106 return d_subscriptionString;
2115 return d_correlationId;
A common interface shared between publisher and consumer sessions.
Provide functions for dispatchtbl.
Provide a key to identify individual subscriptions or requests.
Common definitions used by the library.
A component which defines events related operations.
Provide a dispatcher to dispatch events.
Provide access to the entitlements for a user.
Defines a request which can be sent for a service.
Provide a handle for a request template.
A service which provides access to API data (provide or consume).
A common interface shared between publish and consumer sessions.
Provide a list of subscriptions.
Definition blpapi_correlationid.h:306
Definition blpapi_eventdispatcher.h:184
Definition blpapi_session.h:840
virtual bool processEvent(const Event &event, Session *session)=0
virtual ~EventHandler()=0
Definition blpapi_session.h:1682
Definition blpapi_event.h:517
Definition blpapi_event.h:325
static void throwOnError(int errorCode)
Definition blpapi_exception.h:556
Definition blpapi_identity.h:217
Definition blpapi_exception.h:268
Definition blpapi_requesttemplate.h:177
Definition blpapi_request.h:214
Definition blpapi_service.h:619
Definition blpapi_sessionoptions.h:1141
Definition blpapi_session.h:1011
virtual ~Session()
Definition blpapi_session.h:1722
SubscriptionStatus
Definition blpapi_session.h:1031
@ SUBSCRIBING
Initiated but no updates received.
Definition blpapi_session.h:1034
@ CANCELLED
No longer active, terminated by Application.
Definition blpapi_session.h:1038
@ SUBSCRIBED
Updates are flowing.
Definition blpapi_session.h:1036
@ UNSUBSCRIBED
No longer active, terminated by API.
Definition blpapi_session.h:1032
@ PENDING_CANCELLATION
Definition blpapi_session.h:1040
virtual int tryNextEvent(Event *event)
Definition blpapi_session.h:1750
virtual bool startAsync()
Definition blpapi_session.h:1729
::BloombergLP::blpapi::EventHandler EventHandler
Definition blpapi_session.h:1014
virtual Event nextEvent(int timeout=0)
Definition blpapi_session.h:1738
virtual void stop()
Definition blpapi_session.h:1734
friend void blpapi_eventHandlerAdapter(blpapi_Event_t *event, blpapi_Session_t *, void *userData)
virtual RequestTemplate createSnapshotRequestTemplate(const char *subscriptionString, const CorrelationId &statusCid, const Identity &identity=Identity())
Definition blpapi_session.h:2039
virtual void setStatusCorrelationId(const Service &service, const CorrelationId &correlationID)
Definition blpapi_session.h:1969
virtual bool start()
Definition blpapi_session.h:1724
virtual CorrelationId sendRequest(const Request &request, const CorrelationId &correlationId=CorrelationId(), EventQueue *eventQueue=0, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:2007
virtual void stopAsync()
Definition blpapi_session.h:1736
virtual void unsubscribe(const SubscriptionList &subscriptionList)
Definition blpapi_session.h:1963
virtual void resubscribe(const SubscriptionList &subscriptions)
Definition blpapi_session.h:1832
virtual void subscribe(const SubscriptionList &subscriptionList, const Identity &identity, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:1796
const CorrelationId & correlationId() const
Definition blpapi_session.h:2109
~SubscriptionIterator()
Definition blpapi_session.h:2072
bool isValid() const
Definition blpapi_session.h:2091
bool next()
Definition blpapi_session.h:2077
Session::SubscriptionStatus subscriptionStatus() const
Definition blpapi_session.h:2119
const char * subscriptionString() const
Definition blpapi_session.h:2100
Definition blpapi_subscriptionlist.h:414
std::vector< SubscriptionPreprocessError > SubscriptionPreprocessErrors
Definition blpapi_session.h:962
Definition blpapi_abstractsession.h:452
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:761
Definition blpapi_abstractsession.h:451
Definition blpapi_session.h:868
CorrelationId correlationId
Definition blpapi_session.h:882
SubscriptionPreprocessError(const CorrelationId &correlationId, const std::string &subscriptionString, int code, const char *description)
Definition blpapi_session.h:890
std::string description
Definition blpapi_session.h:888
int code
Definition blpapi_session.h:884
std::string subscriptionString
Definition blpapi_session.h:883
Code
Definition blpapi_session.h:869
@ e_invalidSubscriptionString
Invalid subscription string.
Definition blpapi_session.h:870
@ e_correlationIdError
Definition blpapi_session.h:874
Definition blpapi_session.h:940
Enum
Definition blpapi_session.h:945
@ e_returnIndividualErrors
Definition blpapi_session.h:954
@ e_failOnFirstError
Definition blpapi_session.h:947