BLPAPI C++ 3.25.10
Loading...
Searching...
No Matches
blpapi_session.h
Go to the documentation of this file.
1/* Copyright 2012. Bloomberg Finance L.P.
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to
5 * deal in the Software without restriction, including without limitation the
6 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7 * sell copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions: The above
9 * copyright notice and this permission notice shall be included in all copies
10 * or substantial portions of the Software.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 * IN THE SOFTWARE.
19 */
20
28#ifndef INCLUDED_BLPAPI_SESSION
29#define INCLUDED_BLPAPI_SESSION
30
59#ifndef INCLUDED_BLPAPI_ABSTRACTSESSION
61#endif
62
63#ifndef INCLUDED_BLPAPI_CALL
64#include <blpapi_call.h>
65#endif
66
67#ifndef INCLUDED_BLPAPI_CORRELATIONID
69#endif
70
71#ifndef INCLUDED_BLPAPI_DEFS
72#include <blpapi_defs.h>
73#endif
74
75#ifndef INCLUDED_BLPAPI_EVENT
76#include <blpapi_event.h>
77#endif
78
79#ifndef INCLUDED_BLPAPI_EVENTDISPATCHER
81#endif
82
83#ifndef INCLUDED_BLPAPI_IDENTITY
84#include <blpapi_identity.h>
85#endif
86
87#ifndef INCLUDED_BLPAPI_REQUEST
88#include <blpapi_request.h>
89#endif
90
91#ifndef INCLUDED_BLPAPI_REQUESTTEMPLATE
93#endif
94
95#ifndef INCLUDED_BLPAPI_SERVICE
96#include <blpapi_service.h>
97#endif
98
99#ifndef INCLUDED_BLPAPI_SESSIONOPTIONS
101#endif
102
103#ifndef INCLUDED_BLPAPI_SUBSCRIPTIONLIST
105#endif
106
107#ifndef INCLUDED_BLPAPI_TYPES
108#include <blpapi_types.h>
109#endif
110
111#include <stddef.h>
112
113#ifdef __cplusplus
114extern "C" {
115#endif
116
117typedef void (*blpapi_EventHandler_t)(
118 blpapi_Event_t *event, blpapi_Session_t *session, void *userData);
119
121 const blpapi_CorrelationId_t *correlationId,
122 const char *subscriptionString,
123 int errorCode,
124 const char *errorDescription,
125 void *userData);
126
129 blpapi_EventHandler_t handler,
130 blpapi_EventDispatcher_t *dispatcher,
131 void *userData);
132
135
138
141
144
147
150 blpapi_Event_t **eventPointer,
151 unsigned int timeoutInMilliseconds);
152
155 blpapi_Session_t *session, blpapi_Event_t **eventPointer);
156
159 const blpapi_SubscriptionList_t *subscriptionList,
160 const blpapi_Identity_t *handle,
161 const char *requestLabel,
162 int requestLabelLen);
163
166 const blpapi_SubscriptionList_t *subscriptionList,
167 const blpapi_Identity_t *handle,
168 const char *requestLabel,
169 int requestLabelLen,
171 void *userData);
172
175 const blpapi_SubscriptionList_t *resubscriptionList,
176 const char *requestLabel,
177 int requestLabelLen);
178
181 const blpapi_SubscriptionList_t *resubscriptionList,
182 const char *requestLabel,
183 int requestLabelLen,
185 void *userData);
186
189 const blpapi_SubscriptionList_t *resubscriptionList,
190 int resubscriptionId,
191 const char *requestLabel,
192 int requestLabelLen);
193
196 const blpapi_SubscriptionList_t *resubscriptionList,
197 int resubscriptionId,
198 const char *requestLabel,
199 int requestLabelLen,
201 void *userData);
202
205 const blpapi_SubscriptionList_t *unsubscriptionList,
206 const char *requestLabel,
207 int requestLabelLen);
208
211 const blpapi_CorrelationId_t *correlationIds,
212 size_t numCorrelationIds,
213 const char *requestLabel,
214 int requestLabelLen);
215
218 const blpapi_Service_t *service,
219 const blpapi_Identity_t *identity,
220 const blpapi_CorrelationId_t *correlationId);
221
224 const blpapi_Request_t *request,
225 blpapi_CorrelationId_t *correlationId,
226 blpapi_Identity_t *identity,
227 blpapi_EventQueue_t *eventQueue,
228 const char *requestLabel,
229 int requestLabelLen);
230
233 const blpapi_RequestTemplate_t *requestTemplate,
234 blpapi_CorrelationId_t *correlationId);
235
238 blpapi_RequestTemplate_t **requestTemplate,
239 blpapi_Session_t *session,
240 const char *subscriptionString,
241 const blpapi_Identity_t *identity,
242 blpapi_CorrelationId_t *correlationId);
243
246 const blpapi_Request_t *request,
247 blpapi_Identity_t *identity,
248 blpapi_CorrelationId_t *correlationId,
249 blpapi_EventQueue_t *eventQueue,
250 const char *requestLabel,
251 int requestLabelLen);
252
255 blpapi_Session_t *session, const char *serviceName);
256
259 const char *serviceName,
260 blpapi_CorrelationId_t *correlationId);
261
264 blpapi_CorrelationId_t *correlationId,
265 blpapi_EventQueue_t *eventQueue);
266
269 blpapi_Service_t **service,
270 const char *serviceName);
271
272// Deprecated: Use blpapi_Session_createIdentity instead
275 blpapi_Session_t *session);
276
279
282 blpapi_Session_t *session);
283
286 blpapi_Session_t *session);
287
290
293 const char **subscriptionString,
294 blpapi_CorrelationId_t *correlationId,
295 int *status);
296
299 const blpapi_SubscriptionIterator_t *iterator);
300
301#ifdef __cplusplus
302}
303
304#include <cassert>
305
306#ifndef INCLUDED_CSTRING
307#include <cstring> // for std::memset
308#define INCLUDED_CSTRING
309#endif
310
318namespace BloombergLP {
319namespace blpapi {
320
321class Session;
322
335
336 public:
337 virtual ~EventHandler() = 0;
338
339 virtual bool processEvent(const Event& event, Session *session) = 0;
350};
351
352extern "C" void blpapi_eventHandlerAdapter(
353 blpapi_Event_t *event, blpapi_Session_t *, void *userData);
393
394inline std::ostream& operator<<(
395 std::ostream& os, const SubscriptionPreprocessError& error)
396{
397 os << "{"
398 << "correlationId: " << error.correlationId
399 << ", subscriptionString: " << error.subscriptionString << ", code: ";
400 if (error.code
402 os << "InvalidSubscriptionString";
403 } else if (error.code
405 os << "CorrelationIdError";
406 } else {
407 os << "UNKNOWN";
408 }
409
410 os << "(" << error.code << ")";
411 os << ", description: " << error.description << "}";
412
413 return os;
414}
415
417 const blpapi_CorrelationId_t *correlationId,
418 const char *subscriptionString,
419 int errorCode,
420 const char *description,
421 void *userData)
422{
423 typedef std::vector<SubscriptionPreprocessError> Errors;
424 Errors *errors = reinterpret_cast<Errors *>(userData);
425 errors->emplace_back(CorrelationId(*correlationId),
426 subscriptionString,
427 errorCode,
428 description);
429}
430
452
453typedef std::vector<SubscriptionPreprocessError> SubscriptionPreprocessErrors;
454
502class Session : public AbstractSession {
503
504 public:
506
507 private:
508 blpapi_Session_t *d_handle_p;
509 EventHandler *d_eventHandler_p;
510
511 // NOT IMPLEMENTED
512 Session(const Session&);
513 Session& operator=(const Session&);
514
515 friend void blpapi_eventHandlerAdapter(
516 blpapi_Event_t *event, blpapi_Session_t *, void *userData);
517
518 public:
519 /*
520 * The possible statuses a subscription may be in.
521 */
533
534 explicit Session(const SessionOptions& options = SessionOptions(),
535 EventHandler *eventHandler = 0,
536 EventDispatcher *eventDispatcher = 0);
571
572 virtual ~Session();
577 virtual bool start();
588 virtual bool startAsync();
599 virtual void stop();
611 virtual void stopAsync();
623 virtual Event nextEvent(int timeout = 0);
639 virtual int tryNextEvent(Event *event);
647 virtual void subscribe(const SubscriptionList& subscriptionList,
648 const Identity& identity,
649 const char *requestLabel = 0,
650 int requestLabelLen = 0);
665 const SubscriptionList& subscriptionList,
666 const Identity& identity,
668 const char *requestLabel = 0,
669 int requestLabelLen = 0);
689 virtual void subscribe(const SubscriptionList& subscriptionList,
690 const char *requestLabel = 0,
691 int requestLabelLen = 0);
708 const SubscriptionList& subscriptionList,
710 const char *requestLabel = 0,
711 int requestLabelLen = 0);
732 virtual void unsubscribe(const SubscriptionList& subscriptionList);
753 virtual void resubscribe(const SubscriptionList& subscriptions);
768 const SubscriptionList& subscriptions,
785 virtual void resubscribe(const SubscriptionList& subscriptions,
786 const char *requestLabel,
787 int requestLabelLen);
806 const SubscriptionList& subscriptions,
807 const char *requestLabel,
808 int requestLabelLen,
829 virtual void resubscribe(
830 const SubscriptionList& subscriptions, int resubscriptionId);
846 const SubscriptionList& subscriptions,
847 int resubscriptionId,
865 virtual void resubscribe(const SubscriptionList& subscriptions,
866 int resubscriptionId,
867 const char *requestLabel,
868 int requestLabelLen);
888 const SubscriptionList& subscriptions,
889 int resubscriptionId,
890 const char *requestLabel,
891 int requestLabelLen,
913 virtual void setStatusCorrelationId(
914 const Service& service, const CorrelationId& correlationID);
915
916 virtual void setStatusCorrelationId(const Service& service,
917 const Identity& identity,
918 const CorrelationId& correlationID);
924 virtual CorrelationId sendRequest(const Request& request,
925 const CorrelationId& correlationId = CorrelationId(),
926 EventQueue *eventQueue = 0,
927 const char *requestLabel = 0,
928 int requestLabelLen = 0);
950 virtual CorrelationId sendRequest(const Request& request,
951 const Identity& user,
952 const CorrelationId& correlationId = CorrelationId(),
953 EventQueue *eventQueue = 0,
954 const char *requestLabel = 0,
955 int requestLabelLen = 0);
976 virtual CorrelationId sendRequest(const RequestTemplate& requestTemplate,
977 const CorrelationId& correlationId = CorrelationId());
996 const char *subscriptionString,
997 const CorrelationId& statusCid,
998 const Identity& identity = Identity());
1074 blpapi_Session_t *handle() const;
1075};
1076
1092
1094 const char *d_subscriptionString;
1095 CorrelationId d_correlationId;
1096 int d_status;
1097 bool d_isValid;
1098
1099 private:
1100 // NOT IMPLEMENTED
1102 SubscriptionIterator& operator=(const SubscriptionIterator&);
1103
1104 public:
1105 explicit SubscriptionIterator(Session *session);
1117 // MANIPULATORS
1118
1119 bool next();
1128 // ACCESSORS
1129
1130 bool isValid() const;
1136 const char *subscriptionString() const;
1144 const CorrelationId& correlationId() const;
1155};
1156
1160// ============================================================================
1161// INLINE FUNCTION DEFINITIONS
1162// ============================================================================
1163
1164// ------------------
1165// class EventHandler
1166// ------------------
1167
1169
1170// FREE FUNCTIONS
1171extern "C" inline void blpapi_eventHandlerAdapter(
1172 blpapi_Event_t *event, blpapi_Session_t *, void *userData)
1173{
1174 Session *session = reinterpret_cast<Session *>(userData);
1175 assert(session);
1176 assert(session->d_eventHandler_p);
1177 session->d_eventHandler_p->processEvent(Event(event), session);
1178}
1179
1180// -------------
1181// class Session
1182// -------------
1183
1184inline Session::Session(const SessionOptions& parameters,
1185 EventHandler *handler,
1186 EventDispatcher *dispatcher)
1187 : d_eventHandler_p(handler)
1188{
1189 if (dispatcher && !handler) {
1191 "Event dispatcher provided without handler.");
1192 }
1193 d_handle_p = blpapi_Session_create(parameters.handle(),
1194 handler ? &blpapi_eventHandlerAdapter : 0,
1195 dispatcher ? dispatcher->impl() : 0,
1196 this);
1197 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1198}
1199
1200inline Session::Session(blpapi_Session_t *newHandle)
1201 : d_handle_p(newHandle)
1202{
1203 initAbstractSessionHandle(blpapi_Session_getAbstractSession(d_handle_p));
1204}
1205
1207
1208inline bool Session::start()
1209{
1210 return blpapi_Session_start(d_handle_p) ? false : true;
1211}
1212
1214{
1215 return blpapi_Session_startAsync(d_handle_p) ? false : true;
1216}
1217
1218inline void Session::stop() { blpapi_Session_stop(d_handle_p); }
1219
1220inline void Session::stopAsync() { blpapi_Session_stopAsync(d_handle_p); }
1221
1222inline Event Session::nextEvent(int timeout)
1223{
1224 if (timeout < 0) {
1225 throw InvalidArgumentException("Timeout must be >= 0.");
1226 }
1227
1228 blpapi_Event_t *event = 0;
1230 d_handle_p, &event, static_cast<unsigned>(timeout)));
1231 return Event(event);
1232}
1233
1235{
1236 blpapi_Event_t *impl = 0;
1237 int ret = blpapi_Session_tryNextEvent(d_handle_p, &impl);
1238 if (0 == ret) {
1239 assert(event);
1240
1241 *event = Event(impl);
1242 }
1243 return ret;
1244}
1245
1246inline void Session::subscribe(const SubscriptionList& subscriptions,
1247 const char *requestLabel,
1248 int requestLabelLen)
1249{
1251 subscriptions.impl(),
1252 0, // identityHandle
1253 requestLabel,
1254 requestLabelLen));
1255}
1256
1258 const SubscriptionList& subscriptions,
1260 const char *requestLabel,
1261 int requestLabelLen)
1262{
1265 subscribe(subscriptions, requestLabel, requestLabelLen);
1266 } else {
1269 subscriptions.impl(),
1270 0, // identityHandle
1271 requestLabel,
1272 requestLabelLen,
1274 &errors));
1275 }
1276
1277 return errors;
1278}
1279
1280inline void Session::subscribe(const SubscriptionList& subscriptions,
1281 const Identity& identity,
1282 const char *requestLabel,
1283 int requestLabelLen)
1284{
1286 subscriptions.impl(),
1287 identity.handle(),
1288 requestLabel,
1289 requestLabelLen));
1290}
1291
1293 const SubscriptionList& subscriptions,
1294 const Identity& identity,
1296 const char *requestLabel,
1297 int requestLabelLen)
1298{
1301 subscribe(subscriptions, identity, requestLabel, requestLabelLen);
1302 } else {
1305 subscriptions.impl(),
1306 identity.handle(),
1307 requestLabel,
1308 requestLabelLen,
1310 &errors));
1311 }
1312
1313 return errors;
1314}
1315
1316inline void Session::resubscribe(const SubscriptionList& subscriptions)
1317{
1319 subscriptions.impl(),
1320 0, // requestLabel
1321 0)); // requestLabelLen
1322}
1323
1325 const SubscriptionList& subscriptions,
1327{
1330 resubscribe(subscriptions);
1331 } else {
1334 subscriptions.impl(),
1335 0, // requestLabel
1336 0, // requestLabelLen
1338 &errors));
1339 }
1340
1341 return errors;
1342}
1343
1344inline void Session::resubscribe(const SubscriptionList& subscriptions,
1345 const char *requestLabel,
1346 int requestLabelLen)
1347{
1349 d_handle_p, subscriptions.impl(), requestLabel, requestLabelLen));
1350}
1351
1353 const SubscriptionList& subscriptions,
1354 const char *requestLabel,
1355 int requestLabelLen,
1357{
1360 resubscribe(subscriptions, requestLabel, requestLabelLen);
1361 } else {
1364 subscriptions.impl(),
1365 requestLabel,
1366 requestLabelLen,
1368 &errors));
1369 }
1370
1371 return errors;
1372}
1373
1375 const SubscriptionList& subscriptions, int resubscriptionId)
1376{
1379 subscriptions.impl(),
1380 resubscriptionId,
1381 0, // requestLabel
1382 0)); // requestLabelLen
1383}
1384
1386 const SubscriptionList& subscriptions,
1387 int resubscriptionId,
1389{
1392 resubscribe(subscriptions, resubscriptionId);
1393 } else {
1396 subscriptions.impl(),
1397 resubscriptionId,
1398 0, // requestLabel
1399 0, // requestLabelLen
1401 &errors));
1402 }
1403
1404 return errors;
1405}
1406
1407inline void Session::resubscribe(const SubscriptionList& subscriptions,
1408 int resubscriptionId,
1409 const char *requestLabel,
1410 int requestLabelLen)
1411{
1414 subscriptions.impl(),
1415 resubscriptionId,
1416 requestLabel,
1417 requestLabelLen));
1418}
1419
1421 const SubscriptionList& subscriptions,
1422 int resubscriptionId,
1423 const char *requestLabel,
1424 int requestLabelLen,
1426{
1429 resubscribe(subscriptions,
1430 resubscriptionId,
1431 requestLabel,
1432 requestLabelLen);
1433 } else {
1436 subscriptions.impl(),
1437 resubscriptionId,
1438 requestLabel,
1439 requestLabelLen,
1441 &errors));
1442 }
1443
1444 return errors;
1445}
1446
1448{
1450 blpapi_Session_unsubscribe(d_handle_p, list.impl(), 0, 0));
1451}
1452
1454 const Service& service, const CorrelationId& correlationID)
1455{
1457 d_handle_p, service.handle(), 0, &correlationID.impl()));
1458}
1459
1460inline void Session::setStatusCorrelationId(const Service& service,
1461 const Identity& identity,
1462 const CorrelationId& correlationID)
1463{
1466 service.handle(),
1467 identity.handle(),
1468 &correlationID.impl()));
1469}
1470
1472 const Identity& identity,
1473 const CorrelationId& correlationId,
1474 EventQueue *eventQueue,
1475 const char *requestLabel,
1476 int requestLabelLen)
1477{
1478 CorrelationId retCorrelationId(correlationId);
1479
1481 request.handle(),
1482 &retCorrelationId.impl(),
1483 identity.handle(),
1484 eventQueue ? eventQueue->handle() : 0,
1485 requestLabel,
1486 requestLabelLen));
1487
1488 return retCorrelationId;
1489}
1490
1492 const CorrelationId& correlationId,
1493 EventQueue *eventQueue,
1494 const char *requestLabel,
1495 int requestLabelLen)
1496{
1497 CorrelationId retCorrelationId(correlationId);
1498
1500 request.handle(),
1501 &retCorrelationId.impl(),
1502 0,
1503 eventQueue ? eventQueue->handle() : 0,
1504 requestLabel,
1505 requestLabelLen));
1506
1507 return retCorrelationId;
1508}
1509
1511 const RequestTemplate& requestTemplate,
1512 const CorrelationId& correlationId)
1513{
1514 CorrelationId retCorrelationId(correlationId);
1515
1518 d_handle_p, requestTemplate.impl(), &retCorrelationId.impl()));
1519
1520 return retCorrelationId;
1521}
1522
1524 const char *subscriptionString,
1525 const CorrelationId& correlationID,
1526 const Identity& identity)
1527{
1528 blpapi_RequestTemplate_t *requestTemplate = 0;
1529
1532 d_handle_p,
1533 subscriptionString,
1534 identity.handle(),
1535 const_cast<blpapi_CorrelationId_t *>(&correlationID.impl())));
1536
1537 return RequestTemplate(requestTemplate);
1538}
1539
1540inline blpapi_Session_t *Session::handle() const { return d_handle_p; }
1541
1542// --------------------------
1543// class SubscriptionIterator
1544// --------------------------
1545
1546inline SubscriptionIterator::SubscriptionIterator(Session *session)
1547 : d_isValid(false)
1548{
1549 assert(session);
1550
1551 d_handle_p = blpapi_SubscriptionItr_create(session->handle());
1552}
1553
1558
1560{
1561 blpapi_CorrelationId_t nextCorrelationIdImpl;
1562 d_isValid = !blpapi_SubscriptionItr_next(d_handle_p,
1563 &d_subscriptionString,
1564 &nextCorrelationIdImpl,
1565 &d_status);
1566
1567 d_correlationId = d_isValid ? CorrelationId(nextCorrelationIdImpl)
1568 : CorrelationId();
1569
1570 return d_isValid;
1571}
1572
1573inline bool SubscriptionIterator::isValid() const { return d_isValid; }
1574
1576{
1577 return d_handle_p;
1578}
1579
1581{
1582 if (!isValid()) {
1584 }
1585
1586 return d_subscriptionString;
1587}
1588
1590{
1591 if (!isValid()) {
1593 }
1594
1595 return d_correlationId;
1596}
1597
1600{
1601 if (!isValid()) {
1603 }
1604
1605 return static_cast<Session::SubscriptionStatus>(d_status);
1606}
1607
1608} // close namespace blpapi
1609} // close namespace BloombergLP
1610
1611#endif // ifdef __cplusplus
1612
1613#endif // INCLUDED_BLPAPI_SESSION
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:406
#define BLPAPI_CALL(FUNCNAME)
Definition blpapi_call.h:353
Provide a key to identify individual subscriptions or requests.
Common definitions used by the library.
#define BLPAPI_SUBSCRIPTIONSTATUS_SUBSCRIBED
Definition blpapi_defs.h:105
#define BLPAPI_SUBSCRIPTIONSTATUS_PENDING_CANCELLATION
Definition blpapi_defs.h:107
#define BLPAPI_SUBSCRIPTIONSTATUS_CANCELLED
Definition blpapi_defs.h:106
#define BLPAPI_SUBSCRIPTIONSTATUS_SUBSCRIBING
Definition blpapi_defs.h:104
#define BLPAPI_SUBSCRIPTIONSTATUS_UNSUBSCRIBED
Definition blpapi_defs.h:103
#define BLPAPI_SUBSCRIPTIONPREPROCESS_CORRELATIONID_ERROR
Definition blpapi_defs.h:161
#define BLPAPI_EXPORT
Definition blpapi_defs.h:171
#define BLPAPI_SUBSCRIPTIONPREPROCESS_INVALID_SUBSCRIPTION_STRING
Definition blpapi_defs.h:160
struct blpapi_RequestTemplate blpapi_RequestTemplate_t
Definition blpapi_dispatchtbl.h:97
struct blpapi_Request blpapi_Request_t
Definition blpapi_dispatchtbl.h:81
struct blpapi_SubscriptionList blpapi_SubscriptionList_t
Definition blpapi_dispatchtbl.h:90
#define BLPAPI_ERROR_ILLEGAL_STATE
Definition blpapi_error.h:74
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).
BLPAPI_EXPORT int blpapi_Session_tryNextEvent(blpapi_Session_t *session, blpapi_Event_t **eventPointer)
BLPAPI_EXPORT void blpapi_Session_destroy(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_sendRequest(blpapi_Session_t *session, const blpapi_Request_t *request, blpapi_CorrelationId_t *correlationId, blpapi_Identity_t *identity, blpapi_EventQueue_t *eventQueue, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT int blpapi_SubscriptionItr_isValid(const blpapi_SubscriptionIterator_t *iterator)
BLPAPI_EXPORT int blpapi_Session_resubscribeWithId(blpapi_Session_t *session, const blpapi_SubscriptionList_t *resubscriptionList, int resubscriptionId, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT int blpapi_Session_unsubscribe(blpapi_Session_t *session, const blpapi_SubscriptionList_t *unsubscriptionList, const char *requestLabel, int requestLabelLen)
void(* blpapi_EventHandler_t)(blpapi_Event_t *event, blpapi_Session_t *session, void *userData)
Definition blpapi_session.h:117
BLPAPI_EXPORT int blpapi_Session_sendRequestTemplate(blpapi_Session_t *session, const blpapi_RequestTemplate_t *requestTemplate, blpapi_CorrelationId_t *correlationId)
BLPAPI_EXPORT int blpapi_Session_nextEvent(blpapi_Session_t *session, blpapi_Event_t **eventPointer, unsigned int timeoutInMilliseconds)
BLPAPI_EXPORT int blpapi_Session_subscribe(blpapi_Session_t *session, const blpapi_SubscriptionList_t *subscriptionList, const blpapi_Identity_t *handle, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT int blpapi_Session_getService(blpapi_Session_t *session, blpapi_Service_t **service, const char *serviceName)
BLPAPI_EXPORT int blpapi_Session_resubscribeWithIdEx(blpapi_Session_t *session, const blpapi_SubscriptionList_t *resubscriptionList, int resubscriptionId, const char *requestLabel, int requestLabelLen, blpapi_SubscriptionPreprocessErrorHandler_t errorHandler, void *userData)
BLPAPI_EXPORT int blpapi_Session_stopAsync(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_subscribeEx(blpapi_Session_t *session, const blpapi_SubscriptionList_t *subscriptionList, const blpapi_Identity_t *handle, const char *requestLabel, int requestLabelLen, blpapi_SubscriptionPreprocessErrorHandler_t errorHandler, void *userData)
BLPAPI_EXPORT int blpapi_Session_openServiceAsync(blpapi_Session_t *session, const char *serviceName, blpapi_CorrelationId_t *correlationId)
BLPAPI_EXPORT int blpapi_SubscriptionItr_next(blpapi_SubscriptionIterator_t *iterator, const char **subscriptionString, blpapi_CorrelationId_t *correlationId, int *status)
void(* blpapi_SubscriptionPreprocessErrorHandler_t)(const blpapi_CorrelationId_t *correlationId, const char *subscriptionString, int errorCode, const char *errorDescription, void *userData)
Definition blpapi_session.h:120
BLPAPI_EXPORT blpapi_AbstractSession_t * blpapi_Session_getAbstractSession(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_start(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_generateToken(blpapi_Session_t *session, blpapi_CorrelationId_t *correlationId, blpapi_EventQueue_t *eventQueue)
BLPAPI_EXPORT int blpapi_Session_cancel(blpapi_Session_t *session, const blpapi_CorrelationId_t *correlationIds, size_t numCorrelationIds, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT int blpapi_Session_resubscribeEx(blpapi_Session_t *session, const blpapi_SubscriptionList_t *resubscriptionList, const char *requestLabel, int requestLabelLen, blpapi_SubscriptionPreprocessErrorHandler_t errorHandler, void *userData)
BLPAPI_EXPORT int blpapi_Session_stop(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_startAsync(blpapi_Session_t *session)
BLPAPI_EXPORT int blpapi_Session_resubscribe(blpapi_Session_t *session, const blpapi_SubscriptionList_t *resubscriptionList, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT blpapi_Session_t * blpapi_Session_create(blpapi_SessionOptions_t *parameters, blpapi_EventHandler_t handler, blpapi_EventDispatcher_t *dispatcher, void *userData)
BLPAPI_EXPORT blpapi_UserHandle_t * blpapi_Session_createUserHandle(blpapi_Session_t *session)
BLPAPI_EXPORT blpapi_Identity_t * blpapi_Session_createIdentity(blpapi_Session_t *session)
BLPAPI_EXPORT void blpapi_SubscriptionItr_destroy(blpapi_SubscriptionIterator_t *iterator)
BLPAPI_EXPORT int blpapi_Session_setStatusCorrelationId(blpapi_Session_t *session, const blpapi_Service_t *service, const blpapi_Identity_t *identity, const blpapi_CorrelationId_t *correlationId)
BLPAPI_EXPORT int blpapi_Session_createSnapshotRequestTemplate(blpapi_RequestTemplate_t **requestTemplate, blpapi_Session_t *session, const char *subscriptionString, const blpapi_Identity_t *identity, blpapi_CorrelationId_t *correlationId)
BLPAPI_EXPORT int blpapi_Session_sendAuthorizationRequest(blpapi_Session_t *session, const blpapi_Request_t *request, blpapi_Identity_t *identity, blpapi_CorrelationId_t *correlationId, blpapi_EventQueue_t *eventQueue, const char *requestLabel, int requestLabelLen)
BLPAPI_EXPORT int blpapi_Session_openService(blpapi_Session_t *session, const char *serviceName)
BLPAPI_EXPORT blpapi_SubscriptionIterator_t * blpapi_SubscriptionItr_create(blpapi_Session_t *session)
A common interface shared between publish and consumer sessions.
Provide a list of subscriptions.
Provide BLPAPI types.
Definition blpapi_abstractsession.h:261
Definition blpapi_correlationid.h:201
Definition blpapi_eventdispatcher.h:116
blpapi_EventDispatcher_t * impl() const
Definition blpapi_eventdispatcher.h:198
Definition blpapi_session.h:334
virtual bool processEvent(const Event &event, Session *session)=0
virtual ~EventHandler()=0
Definition blpapi_session.h:1168
Definition blpapi_event.h:386
blpapi_EventQueue_t * handle() const
Definition blpapi_event.h:586
Definition blpapi_event.h:196
static void throwOnError(int errorCode)
Definition blpapi_exception.h:526
Definition blpapi_identity.h:131
blpapi_Identity_t * handle() const
Definition blpapi_identity.h:380
Definition blpapi_exception.h:238
Definition blpapi_requesttemplate.h:131
const blpapi_RequestTemplate_t * impl() const
Definition blpapi_requesttemplate.h:224
Definition blpapi_request.h:147
blpapi_Request_t * handle() const
Definition blpapi_request.h:718
Definition blpapi_service.h:304
blpapi_Service_t * handle() const
Definition blpapi_service.h:706
Definition blpapi_sessionoptions.h:431
blpapi_SessionOptions_t * handle() const
Definition blpapi_sessionoptions.h:1400
Definition blpapi_session.h:502
virtual ~Session()
Definition blpapi_session.h:1206
SubscriptionStatus
Definition blpapi_session.h:522
@ SUBSCRIBING
Initiated but no updates received.
Definition blpapi_session.h:525
@ CANCELLED
No longer active, terminated by Application.
Definition blpapi_session.h:529
@ SUBSCRIBED
Updates are flowing.
Definition blpapi_session.h:527
@ UNSUBSCRIBED
No longer active, terminated by API.
Definition blpapi_session.h:523
@ PENDING_CANCELLATION
Definition blpapi_session.h:531
virtual int tryNextEvent(Event *event)
Definition blpapi_session.h:1234
virtual bool startAsync()
Definition blpapi_session.h:1213
::BloombergLP::blpapi::EventHandler EventHandler
Definition blpapi_session.h:505
virtual Event nextEvent(int timeout=0)
Definition blpapi_session.h:1222
virtual void stop()
Definition blpapi_session.h:1218
friend void blpapi_eventHandlerAdapter(blpapi_Event_t *event, blpapi_Session_t *, void *userData)
Definition blpapi_session.h:1171
blpapi_Session_t * handle() const
Definition blpapi_session.h:1540
virtual RequestTemplate createSnapshotRequestTemplate(const char *subscriptionString, const CorrelationId &statusCid, const Identity &identity=Identity())
Definition blpapi_session.h:1523
virtual void setStatusCorrelationId(const Service &service, const CorrelationId &correlationID)
Definition blpapi_session.h:1453
virtual bool start()
Definition blpapi_session.h:1208
virtual CorrelationId sendRequest(const Request &request, const CorrelationId &correlationId=CorrelationId(), EventQueue *eventQueue=0, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:1491
virtual void stopAsync()
Definition blpapi_session.h:1220
virtual void unsubscribe(const SubscriptionList &subscriptionList)
Definition blpapi_session.h:1447
virtual void resubscribe(const SubscriptionList &subscriptions)
Definition blpapi_session.h:1316
virtual void subscribe(const SubscriptionList &subscriptionList, const Identity &identity, const char *requestLabel=0, int requestLabelLen=0)
Definition blpapi_session.h:1280
Definition blpapi_session.h:1091
const CorrelationId & correlationId() const
Definition blpapi_session.h:1589
~SubscriptionIterator()
Definition blpapi_session.h:1554
bool isValid() const
Definition blpapi_session.h:1573
bool next()
Definition blpapi_session.h:1559
Session::SubscriptionStatus subscriptionStatus() const
Definition blpapi_session.h:1599
const char * subscriptionString() const
Definition blpapi_session.h:1580
blpapi_SubscriptionIterator_t * handle() const
Definition blpapi_session.h:1575
Definition blpapi_subscriptionlist.h:300
std::vector< SubscriptionPreprocessError > SubscriptionPreprocessErrors
Definition blpapi_session.h:453
void blpapi_eventHandlerAdapter(blpapi_Event_t *event, blpapi_Session_t *, void *userData)
Definition blpapi_session.h:1171
void blpapi_SubscriptionPreprocess_handleError(const blpapi_CorrelationId_t *correlationId, const char *subscriptionString, int errorCode, const char *description, void *userData)
Definition blpapi_session.h:416
struct blpapi_Service blpapi_Service_t
Definition blpapi_types.h:166
struct blpapi_EventQueue blpapi_EventQueue_t
Definition blpapi_types.h:148
struct blpapi_Identity blpapi_Identity_t
Definition blpapi_types.h:188
struct blpapi_Event blpapi_Event_t
Definition blpapi_types.h:139
struct blpapi_Session blpapi_Session_t
Definition blpapi_types.h:169
struct blpapi_EventDispatcher blpapi_EventDispatcher_t
Definition blpapi_types.h:142
struct blpapi_SessionOptions blpapi_SessionOptions_t
Definition blpapi_types.h:172
struct blpapi_Identity blpapi_UserHandle_t
Definition blpapi_types.h:185
struct blpapi_AbstractSession blpapi_AbstractSession_t
Definition blpapi_types.h:127
struct blpapi_SubscriptionItrerator blpapi_SubscriptionIterator_t
Definition blpapi_types.h:181
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:592
Definition blpapi_abstractsession.h:195
CorrelationId correlationId
Definition blpapi_session.h:374
SubscriptionPreprocessError(const CorrelationId &correlationId, const std::string &subscriptionString, int code, const char *description)
Definition blpapi_session.h:382
std::string description
Definition blpapi_session.h:380
int code
Definition blpapi_session.h:376
std::string subscriptionString
Definition blpapi_session.h:375
@ e_invalidSubscriptionString
Invalid subscription string.
Definition blpapi_session.h:362
@ e_correlationIdError
Definition blpapi_session.h:366
@ e_returnIndividualErrors
Definition blpapi_session.h:445
@ e_failOnFirstError
Definition blpapi_session.h:438