36#ifndef INCLUDED_BLPAPI_SESSION
37#define INCLUDED_BLPAPI_SESSION
67#ifndef INCLUDED_BLPAPI_ABSTRACTSESSION
71#ifndef INCLUDED_BLPAPI_CALL
75#ifndef INCLUDED_BLPAPI_CORRELATIONID
79#ifndef INCLUDED_BLPAPI_DEFS
83#ifndef INCLUDED_BLPAPI_EVENT
87#ifndef INCLUDED_BLPAPI_EVENTDISPATCHER
91#ifndef INCLUDED_BLPAPI_IDENTITY
95#ifndef INCLUDED_BLPAPI_REQUEST
99#ifndef INCLUDED_BLPAPI_REQUESTTEMPLATE
103#ifndef INCLUDED_BLPAPI_SERVICE
107#ifndef INCLUDED_BLPAPI_SESSIONOPTIONS
111#ifndef INCLUDED_BLPAPI_SUBSCRIPTIONLIST
115#ifndef INCLUDED_BLPAPI_TYPES
130typedef void (*blpapi_EventHandler_t)(
131 blpapi_Event_t *event, blpapi_Session_t *session,
void *userData);
133typedef void (*blpapi_SubscriptionPreprocessErrorHandler_t)(
134 const blpapi_CorrelationId_t *correlationId,
135 const char *subscriptionString,
137 const char *errorDescription,
141blpapi_Session_t *blpapi_Session_create(blpapi_SessionOptions_t *parameters,
142 blpapi_EventHandler_t handler,
143 blpapi_EventDispatcher_t *dispatcher,
147void blpapi_Session_destroy(blpapi_Session_t *session);
150int blpapi_Session_start(blpapi_Session_t *session);
153int blpapi_Session_startAsync(blpapi_Session_t *session);
156int blpapi_Session_stop(blpapi_Session_t *session);
159int blpapi_Session_stopAsync(blpapi_Session_t *session);
162int blpapi_Session_nextEvent(blpapi_Session_t *session,
163 blpapi_Event_t **eventPointer,
164 unsigned int timeoutInMilliseconds);
167int blpapi_Session_tryNextEvent(
168 blpapi_Session_t *session, blpapi_Event_t **eventPointer);
171int blpapi_Session_subscribe(blpapi_Session_t *session,
172 const blpapi_SubscriptionList_t *subscriptionList,
173 const blpapi_Identity_t *handle,
174 const char *requestLabel,
175 int requestLabelLen);
178int blpapi_Session_subscribeEx(blpapi_Session_t *session,
179 const blpapi_SubscriptionList_t *subscriptionList,
180 const blpapi_Identity_t *handle,
181 const char *requestLabel,
183 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
187int blpapi_Session_resubscribe(blpapi_Session_t *session,
188 const blpapi_SubscriptionList_t *resubscriptionList,
189 const char *requestLabel,
190 int requestLabelLen);
193int blpapi_Session_resubscribeEx(blpapi_Session_t *session,
194 const blpapi_SubscriptionList_t *resubscriptionList,
195 const char *requestLabel,
197 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
201int blpapi_Session_resubscribeWithId(blpapi_Session_t *session,
202 const blpapi_SubscriptionList_t *resubscriptionList,
203 int resubscriptionId,
204 const char *requestLabel,
205 int requestLabelLen);
208int blpapi_Session_resubscribeWithIdEx(blpapi_Session_t *session,
209 const blpapi_SubscriptionList_t *resubscriptionList,
210 int resubscriptionId,
211 const char *requestLabel,
213 blpapi_SubscriptionPreprocessErrorHandler_t errorHandler,
217int blpapi_Session_unsubscribe(blpapi_Session_t *session,
218 const blpapi_SubscriptionList_t *unsubscriptionList,
219 const char *requestLabel,
220 int requestLabelLen);
223int blpapi_Session_cancel(blpapi_Session_t *session,
224 const blpapi_CorrelationId_t *correlationIds,
225 size_t numCorrelationIds,
226 const char *requestLabel,
227 int requestLabelLen);
230int blpapi_Session_setStatusCorrelationId(blpapi_Session_t *session,
231 const blpapi_Service_t *service,
232 const blpapi_Identity_t *identity,
233 const blpapi_CorrelationId_t *correlationId);
236int blpapi_Session_sendRequest(blpapi_Session_t *session,
237 const blpapi_Request_t *request,
238 blpapi_CorrelationId_t *correlationId,
239 blpapi_Identity_t *identity,
240 blpapi_EventQueue_t *eventQueue,
241 const char *requestLabel,
242 int requestLabelLen);
245int blpapi_Session_sendRequestTemplate(blpapi_Session_t *session,
246 const blpapi_RequestTemplate_t *requestTemplate,
247 blpapi_CorrelationId_t *correlationId);
250int blpapi_Session_createSnapshotRequestTemplate(
251 blpapi_RequestTemplate_t **requestTemplate,
252 blpapi_Session_t *session,
253 const char *subscriptionString,
254 const blpapi_Identity_t *identity,
255 blpapi_CorrelationId_t *correlationId);
258int blpapi_Session_sendAuthorizationRequest(blpapi_Session_t *session,
259 const blpapi_Request_t *request,
260 blpapi_Identity_t *identity,
261 blpapi_CorrelationId_t *correlationId,
262 blpapi_EventQueue_t *eventQueue,
263 const char *requestLabel,
264 int requestLabelLen);
267int blpapi_Session_openService(
268 blpapi_Session_t *session,
const char *serviceName);
271int blpapi_Session_openServiceAsync(blpapi_Session_t *session,
272 const char *serviceName,
273 blpapi_CorrelationId_t *correlationId);
276int blpapi_Session_generateToken(blpapi_Session_t *session,
277 blpapi_CorrelationId_t *correlationId,
278 blpapi_EventQueue_t *eventQueue);
281int blpapi_Session_getService(blpapi_Session_t *session,
282 blpapi_Service_t **service,
283 const char *serviceName);
287blpapi_UserHandle_t *blpapi_Session_createUserHandle(
288 blpapi_Session_t *session);
291blpapi_Identity_t *blpapi_Session_createIdentity(blpapi_Session_t *session);
294blpapi_AbstractSession_t *blpapi_Session_getAbstractSession(
295 blpapi_Session_t *session);
298blpapi_SubscriptionIterator_t *blpapi_SubscriptionItr_create(
299 blpapi_Session_t *session);
302void blpapi_SubscriptionItr_destroy(blpapi_SubscriptionIterator_t *iterator);
305int blpapi_SubscriptionItr_next(blpapi_SubscriptionIterator_t *iterator,
306 const char **subscriptionString,
307 blpapi_CorrelationId_t *correlationId,
311int blpapi_SubscriptionItr_isValid(
312 const blpapi_SubscriptionIterator_t *iterator);
322#ifndef INCLUDED_CSTRING
324#define INCLUDED_CSTRING
369 blpapi_Event_t *event, blpapi_Session_t *,
void *userData);
379 = BLPAPI_SUBSCRIPTIONPREPROCESS_INVALID_SUBSCRIPTION_STRING,
383 = BLPAPI_SUBSCRIPTIONPREPROCESS_CORRELATIONID_ERROR
417 os <<
"InvalidSubscriptionString";
418 }
else if (error.
code
420 os <<
"CorrelationIdError";
425 os <<
"(" << error.
code <<
")";
426 os <<
", description: " << error.
description <<
"}";
432 const blpapi_CorrelationId_t *correlationId,
433 const char *subscriptionString,
435 const char *description,
438 typedef std::vector<SubscriptionPreprocessError> Errors;
439 Errors *errors =
reinterpret_cast<Errors *
>(userData);
517class Session :
public AbstractSession {
523 blpapi_Session_t *d_handle_p;
527 Session(
const Session&);
528 Session& operator=(
const Session&);
531 blpapi_Event_t *event, blpapi_Session_t *,
void *userData);
592 virtual bool start();
664 const char *requestLabel = 0,
665 int requestLabelLen = 0);
683 const char *requestLabel = 0,
684 int requestLabelLen = 0);
705 const char *requestLabel = 0,
706 int requestLabelLen = 0);
725 const char *requestLabel = 0,
726 int requestLabelLen = 0);
801 const char *requestLabel,
802 int requestLabelLen);
822 const char *requestLabel,
862 int resubscriptionId,
881 int resubscriptionId,
882 const char *requestLabel,
883 int requestLabelLen);
904 int resubscriptionId,
905 const char *requestLabel,
942 const char *requestLabel = 0,
943 int requestLabelLen = 0);
969 const char *requestLabel = 0,
970 int requestLabelLen = 0);
1011 const char *subscriptionString,
1090 blpapi_Session_t *
handle()
const;
1107class SubscriptionIterator {
1109 blpapi_SubscriptionIterator_t *d_handle_p;
1110 const char *d_subscriptionString;
1117 SubscriptionIterator(
const SubscriptionIterator&);
1118 SubscriptionIterator& operator=(
const SubscriptionIterator&);
1121 explicit SubscriptionIterator(
Session *session);
1170 blpapi_SubscriptionIterator_t *
handle()
const;
1188 blpapi_Event_t *event, blpapi_Session_t *,
void *userData)
1190 Session *session =
reinterpret_cast<Session *
>(userData);
1192 assert(session->d_eventHandler_p);
1203 : d_eventHandler_p(handler)
1205 if (dispatcher && !handler) {
1207 "Event dispatcher provided without handler.");
1209 d_handle_p = blpapi_Session_create(parameters.
handle(),
1211 dispatcher ? dispatcher->
impl() : 0,
1213 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1216inline Session::Session(blpapi_Session_t *newHandle)
1217 : d_handle_p(newHandle)
1219 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1226 return blpapi_Session_start(d_handle_p) ? false :
true;
1231 return blpapi_Session_startAsync(d_handle_p) ? false :
true;
1244 blpapi_Event_t *
event = 0;
1246 d_handle_p, &event,
static_cast<unsigned>(timeout)));
1247 return Event(event);
1252 blpapi_Event_t *impl = 0;
1253 int ret = blpapi_Session_tryNextEvent(d_handle_p, &impl);
1257 *
event =
Event(impl);
1263 const char *requestLabel,
1264 int requestLabelLen)
1267 subscriptions.impl(),
1276 const char *requestLabel,
1277 int requestLabelLen)
1281 subscribe(subscriptions, requestLabel, requestLabelLen);
1284 BLPAPI_CALL(blpapi_Session_subscribeEx)(d_handle_p,
1285 subscriptions.impl(),
1298 const char *requestLabel,
1299 int requestLabelLen)
1302 subscriptions.impl(),
1312 const char *requestLabel,
1313 int requestLabelLen)
1317 subscribe(subscriptions, identity, requestLabel, requestLabelLen);
1320 BLPAPI_CALL(blpapi_Session_subscribeEx)(d_handle_p,
1321 subscriptions.impl(),
1335 subscriptions.impl(),
1349 BLPAPI_CALL(blpapi_Session_resubscribeEx)(d_handle_p,
1350 subscriptions.impl(),
1361 const char *requestLabel,
1362 int requestLabelLen)
1365 d_handle_p, subscriptions.impl(), requestLabel, requestLabelLen));
1370 const char *requestLabel,
1371 int requestLabelLen,
1376 resubscribe(subscriptions, requestLabel, requestLabelLen);
1379 BLPAPI_CALL(blpapi_Session_resubscribeEx)(d_handle_p,
1380 subscriptions.impl(),
1395 subscriptions.impl(),
1403 int resubscriptionId,
1411 BLPAPI_CALL(blpapi_Session_resubscribeWithIdEx)(d_handle_p,
1412 subscriptions.impl(),
1424 int resubscriptionId,
1425 const char *requestLabel,
1426 int requestLabelLen)
1430 subscriptions.impl(),
1438 int resubscriptionId,
1439 const char *requestLabel,
1440 int requestLabelLen,
1451 BLPAPI_CALL(blpapi_Session_resubscribeWithIdEx)(d_handle_p,
1452 subscriptions.impl(),
1466 blpapi_Session_unsubscribe(d_handle_p, list.impl(), 0, 0));
1473 d_handle_p, service.
handle(), 0, &correlationID.impl()));
1481 blpapi_Session_setStatusCorrelationId(d_handle_p,
1484 &correlationID.impl()));
1491 const char *requestLabel,
1492 int requestLabelLen)
1498 &retCorrelationId.impl(),
1500 eventQueue ? eventQueue->
handle() : 0,
1504 return retCorrelationId;
1510 const char *requestLabel,
1511 int requestLabelLen)
1517 &retCorrelationId.impl(),
1519 eventQueue ? eventQueue->
handle() : 0,
1523 return retCorrelationId;
1533 blpapi_Session_sendRequestTemplate)(
1534 d_handle_p, requestTemplate.
impl(), &retCorrelationId.impl()));
1536 return retCorrelationId;
1540 const char *subscriptionString,
1544 blpapi_RequestTemplate_t *requestTemplate = 0;
1547 blpapi_Session_createSnapshotRequestTemplate)(&requestTemplate,
1551 const_cast<blpapi_CorrelationId_t *
>(&correlationID.impl())));
1562inline SubscriptionIterator::SubscriptionIterator(
Session *session)
1567 d_handle_p = blpapi_SubscriptionItr_create(session->
handle());
1572 blpapi_SubscriptionItr_destroy(d_handle_p);
1577 blpapi_CorrelationId_t nextCorrelationIdImpl;
1578 d_isValid = !blpapi_SubscriptionItr_next(d_handle_p,
1579 &d_subscriptionString,
1580 &nextCorrelationIdImpl,
1583 d_correlationId = d_isValid ?
CorrelationId(nextCorrelationIdImpl)
1602 return d_subscriptionString;
1611 return d_correlationId;
A common interface shared between publisher and consumer sessions.
Provide functions for dispatchtbl.
#define BLPAPI_CALL_SESSION_RESUBSCRIBEWITHID(a1, a2, a3, a4, a5)
Definition blpapi_call.h:414
#define BLPAPI_CALL(FUNCNAME)
Definition blpapi_call.h:361
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:225
Definition blpapi_eventdispatcher.h:132
blpapi_EventDispatcher_t * impl() const
Definition blpapi_eventdispatcher.h:214
Definition blpapi_session.h:350
virtual bool processEvent(const Event &event, Session *session)=0
virtual ~EventHandler()=0
Definition blpapi_session.h:1184
Definition blpapi_event.h:402
blpapi_EventQueue_t * handle() const
Definition blpapi_event.h:602
Definition blpapi_event.h:212
static void throwOnError(int errorCode)
Definition blpapi_exception.h:541
Definition blpapi_identity.h:147
blpapi_Identity_t * handle() const
Definition blpapi_identity.h:396
Definition blpapi_exception.h:253
Definition blpapi_requesttemplate.h:147
const blpapi_RequestTemplate_t * impl() const
Definition blpapi_requesttemplate.h:240
Definition blpapi_request.h:163
blpapi_Request_t * handle() const
Definition blpapi_request.h:763
Definition blpapi_service.h:320
blpapi_Service_t * handle() const
Definition blpapi_service.h:722
Definition blpapi_sessionoptions.h:447
blpapi_SessionOptions_t * handle() const
Definition blpapi_sessionoptions.h:1416
Definition blpapi_session.h:517
virtual ~Session()
Definition blpapi_session.h:1222
SubscriptionStatus
Definition blpapi_session.h:537
@ SUBSCRIBING
Initiated but no updates received.
Definition blpapi_session.h:540
@ CANCELLED
No longer active, terminated by Application.
Definition blpapi_session.h:544
@ SUBSCRIBED
Updates are flowing.
Definition blpapi_session.h:542
@ UNSUBSCRIBED
No longer active, terminated by API.
Definition blpapi_session.h:538
@ PENDING_CANCELLATION
Definition blpapi_session.h:546
virtual int tryNextEvent(Event *event)
Definition blpapi_session.h:1250
virtual bool startAsync()
Definition blpapi_session.h:1229
::BloombergLP::blpapi::EventHandler EventHandler
Definition blpapi_session.h:520
virtual Event nextEvent(int timeout=0)
Definition blpapi_session.h:1238
virtual void stop()
Definition blpapi_session.h:1234
friend void blpapi_eventHandlerAdapter(blpapi_Event_t *event, blpapi_Session_t *, void *userData)
Definition blpapi_session.h:1187
blpapi_Session_t * handle() const
Definition blpapi_session.h:1556
virtual RequestTemplate createSnapshotRequestTemplate(const char *subscriptionString, const CorrelationId &statusCid, const Identity &identity=Identity())
Definition blpapi_session.h:1539
virtual void setStatusCorrelationId(const Service &service, const CorrelationId &correlationID)
Definition blpapi_session.h:1469
virtual bool start()
Definition blpapi_session.h:1224
virtual CorrelationId sendRequest(const Request &request, const CorrelationId &correlationId=CorrelationId(), EventQueue *eventQueue=0, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:1507
virtual void stopAsync()
Definition blpapi_session.h:1236
virtual void unsubscribe(const SubscriptionList &subscriptionList)
Definition blpapi_session.h:1463
virtual void resubscribe(const SubscriptionList &subscriptions)
Definition blpapi_session.h:1332
virtual void subscribe(const SubscriptionList &subscriptionList, const Identity &identity, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:1296
const CorrelationId & correlationId() const
Definition blpapi_session.h:1605
~SubscriptionIterator()
Definition blpapi_session.h:1570
bool isValid() const
Definition blpapi_session.h:1589
bool next()
Definition blpapi_session.h:1575
Session::SubscriptionStatus subscriptionStatus() const
Definition blpapi_session.h:1615
const char * subscriptionString() const
Definition blpapi_session.h:1596
blpapi_SubscriptionIterator_t * handle() const
Definition blpapi_session.h:1591
Definition blpapi_subscriptionlist.h:316
std::vector< SubscriptionPreprocessError > SubscriptionPreprocessErrors
Definition blpapi_session.h:468
void blpapi_eventHandlerAdapter(blpapi_Event_t *event, blpapi_Session_t *, void *userData)
Definition blpapi_session.h:1187
void blpapi_SubscriptionPreprocess_handleError(const blpapi_CorrelationId_t *correlationId, const char *subscriptionString, int errorCode, const char *description, void *userData)
Definition blpapi_session.h:431
Definition blpapi_abstractsession.h:212
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:680
Definition blpapi_abstractsession.h:211
Definition blpapi_session.h:376
CorrelationId correlationId
Definition blpapi_session.h:390
SubscriptionPreprocessError(const CorrelationId &correlationId, const std::string &subscriptionString, int code, const char *description)
Definition blpapi_session.h:398
std::string description
Definition blpapi_session.h:396
int code
Definition blpapi_session.h:392
std::string subscriptionString
Definition blpapi_session.h:391
Code
Definition blpapi_session.h:377
@ e_invalidSubscriptionString
Invalid subscription string.
Definition blpapi_session.h:378
@ e_correlationIdError
Definition blpapi_session.h:382
Definition blpapi_session.h:446
Enum
Definition blpapi_session.h:451
@ e_returnIndividualErrors
Definition blpapi_session.h:460
@ e_failOnFirstError
Definition blpapi_session.h:453