BLPAPI C++ 3.26.5
Loading...
Searching...
No Matches
blpapi_providersession.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
35
36#ifndef INCLUDED_BLPAPI_PROVIDERSESSION
37#define INCLUDED_BLPAPI_PROVIDERSESSION
38
154
155#ifndef INCLUDED_BLPAPI_ABSTRACTSESSION
157#endif
158
159#ifndef INCLUDED_BLPAPI_CALL
160#include <blpapi_call.h>
161#endif
162
163#ifndef INCLUDED_BLPAPI_CORRELATIONID
164#include <blpapi_correlationid.h>
165#endif
166
167#ifndef INCLUDED_BLPAPI_DEFS
168#include <blpapi_defs.h>
169#endif
170
171#ifndef INCLUDED_BLPAPI_EVENT
172#include <blpapi_event.h>
173#endif
174
175#ifndef INCLUDED_BLPAPI_EVENTDISPATCHER
177#endif
178
179#ifndef INCLUDED_BLPAPI_IDENTITY
180#include <blpapi_identity.h>
181#endif
182
183#ifndef INCLUDED_BLPAPI_REQUEST
184#include <blpapi_request.h>
185#endif
186
187#ifndef INCLUDED_BLPAPI_RESOLUTIONLIST
189#endif
190
191#ifndef INCLUDED_BLPAPI_SERVICE
192#include <blpapi_service.h>
193#endif
194
195#ifndef INCLUDED_BLPAPI_SESSIONOPTIONS
197#endif
198
199#ifndef INCLUDED_BLPAPI_SUBSCRIPTIONLIST
201#endif
202
203#ifndef INCLUDED_BLPAPI_TOPIC
204#include <blpapi_topic.h>
205#endif
206
207#ifndef INCLUDED_BLPAPI_TOPICLIST
208#include <blpapi_topiclist.h>
209#endif
210
211#ifndef INCLUDED_BLPAPI_TYPES
212#include <blpapi_types.h>
213#endif
214
215#include <stddef.h>
216
217#ifdef __cplusplus
218extern "C" {
219#endif
220
222
225
226struct blpapi_ServiceRegistrationOptions;
227typedef struct blpapi_ServiceRegistrationOptions
228 blpapi_ServiceRegistrationOptions_t;
229
230typedef void (*blpapi_ProviderEventHandler_t)(blpapi_Event_t *event,
231 blpapi_ProviderSession_t *session,
232 void *userData);
233
234BLPAPI_EXPORT
235blpapi_ProviderSession_t *blpapi_ProviderSession_create(
236 blpapi_SessionOptions_t *parameters,
237 blpapi_ProviderEventHandler_t handler,
238 blpapi_EventDispatcher_t *dispatcher,
239 void *userData);
240
241BLPAPI_EXPORT
242void blpapi_ProviderSession_destroy(blpapi_ProviderSession_t *session);
243
244BLPAPI_EXPORT
245int blpapi_ProviderSession_start(blpapi_ProviderSession_t *session);
246
247BLPAPI_EXPORT
248int blpapi_ProviderSession_startAsync(blpapi_ProviderSession_t *session);
249
250BLPAPI_EXPORT
251int blpapi_ProviderSession_stop(blpapi_ProviderSession_t *session);
252
253BLPAPI_EXPORT
254int blpapi_ProviderSession_stopAsync(blpapi_ProviderSession_t *session);
255
256BLPAPI_EXPORT
257int blpapi_ProviderSession_nextEvent(blpapi_ProviderSession_t *session,
258 blpapi_Event_t **eventPointer,
259 unsigned int timeoutInMilliseconds);
260
261BLPAPI_EXPORT
262int blpapi_ProviderSession_tryNextEvent(
263 blpapi_ProviderSession_t *session, blpapi_Event_t **eventPointer);
264
265BLPAPI_EXPORT
266int blpapi_ProviderSession_registerService(blpapi_ProviderSession_t *session,
267 const char *serviceName,
268 const blpapi_Identity_t *identity,
269 blpapi_ServiceRegistrationOptions_t *registrationOptions);
270
271BLPAPI_EXPORT
272int blpapi_ProviderSession_activateSubServiceCodeRange(
273 blpapi_ProviderSession_t *session,
274 const char *serviceName,
275 int begin,
276 int end,
277 int priority);
278
279BLPAPI_EXPORT
280int blpapi_ProviderSession_deactivateSubServiceCodeRange(
281 blpapi_ProviderSession_t *session,
282 const char *serviceName,
283 int begin,
284 int end);
285
286BLPAPI_EXPORT
287int blpapi_ProviderSession_registerServiceAsync(
288 blpapi_ProviderSession_t *session,
289 const char *serviceName,
290 const blpapi_Identity_t *identity,
291 blpapi_CorrelationId_t *correlationId,
292 blpapi_ServiceRegistrationOptions_t *registrationOptions);
293
294BLPAPI_EXPORT
295int blpapi_ProviderSession_deregisterService(
296 blpapi_ProviderSession_t *session, const char *serviceName);
297
298BLPAPI_EXPORT
299int blpapi_ProviderSession_resolve(blpapi_ProviderSession_t *session,
300 blpapi_ResolutionList_t *resolutionList,
301 int resolveMode,
302 const blpapi_Identity_t *identity);
303
304BLPAPI_EXPORT
305int blpapi_ProviderSession_resolveAsync(blpapi_ProviderSession_t *session,
306 const blpapi_ResolutionList_t *resolutionList,
307 int resolveMode,
308 const blpapi_Identity_t *identity);
309
310BLPAPI_EXPORT
311int blpapi_ProviderSession_createTopics(blpapi_ProviderSession_t *session,
312 blpapi_TopicList_t *topicList,
313 int resolveMode,
314 const blpapi_Identity_t *identity);
315
316BLPAPI_EXPORT
317int blpapi_ProviderSession_createTopicsAsync(blpapi_ProviderSession_t *session,
318 const blpapi_TopicList_t *topicList,
319 int resolveMode,
320 const blpapi_Identity_t *identity);
321
322BLPAPI_EXPORT
323int blpapi_ProviderSession_getTopic(blpapi_ProviderSession_t *session,
324 const blpapi_Message_t *message,
325 blpapi_Topic_t **topic);
326
327BLPAPI_EXPORT
328int blpapi_ProviderSession_createTopic(blpapi_ProviderSession_t *session,
329 const blpapi_Message_t *message,
330 blpapi_Topic_t **topic);
331
332BLPAPI_EXPORT
333int blpapi_ProviderSession_createServiceStatusTopic(
334 blpapi_ProviderSession_t *session,
335 const blpapi_Service_t *service,
336 blpapi_Topic_t **topic);
337
338BLPAPI_EXPORT
339int blpapi_ProviderSession_deleteTopics(blpapi_ProviderSession_t *session,
340 const blpapi_Topic_t **topics,
341 size_t numTopics);
342
343BLPAPI_EXPORT
344int blpapi_ProviderSession_terminateSubscriptionsOnTopics(
345 blpapi_ProviderSession_t *session,
346 const blpapi_Topic_t **topics,
347 size_t numTopics,
348 const char *message);
349
350BLPAPI_EXPORT
351int blpapi_ProviderSession_publish(
352 blpapi_ProviderSession_t *session, blpapi_Event_t *event);
353
354BLPAPI_EXPORT
355int blpapi_ProviderSession_sendResponse(blpapi_ProviderSession_t *session,
356 blpapi_Event_t *event,
357 int isPartialResponse);
358
359BLPAPI_EXPORT
360blpapi_AbstractSession_t *blpapi_ProviderSession_getAbstractSession(
361 blpapi_ProviderSession_t *session);
362
363BLPAPI_EXPORT
364int blpapi_ProviderSession_flushPublishedEvents(
365 blpapi_ProviderSession_t *session, int *allFlushed, int timeoutMsecs);
366
367// ServiceRegistrationOptions
368
369BLPAPI_EXPORT
370blpapi_ServiceRegistrationOptions_t *blpapi_ServiceRegistrationOptions_create(
371 void);
372
373BLPAPI_EXPORT
374blpapi_ServiceRegistrationOptions_t *
375blpapi_ServiceRegistrationOptions_duplicate(
376 const blpapi_ServiceRegistrationOptions_t *parameters);
377
378BLPAPI_EXPORT
379void blpapi_ServiceRegistrationOptions_destroy(
380 blpapi_ServiceRegistrationOptions_t *parameters);
381
382BLPAPI_EXPORT
383void blpapi_ServiceRegistrationOptions_copy(
384 blpapi_ServiceRegistrationOptions_t *lhs,
385 const blpapi_ServiceRegistrationOptions_t *rhs);
386
387// SUBSERVICE CODES
388BLPAPI_EXPORT
389int blpapi_ServiceRegistrationOptions_addActiveSubServiceCodeRange(
390 blpapi_ServiceRegistrationOptions_t *parameters,
391 int start,
392 int end,
393 int priority);
394
395BLPAPI_EXPORT
396void blpapi_ServiceRegistrationOptions_removeAllActiveSubServiceCodeRanges(
397 blpapi_ServiceRegistrationOptions_t *parameters);
398
399BLPAPI_EXPORT
400void blpapi_ServiceRegistrationOptions_setGroupId(
401 blpapi_ServiceRegistrationOptions_t *parameters,
402 const char *groupId,
403 unsigned int groupIdLength);
404
405BLPAPI_EXPORT
406int blpapi_ServiceRegistrationOptions_setServicePriority(
407 blpapi_ServiceRegistrationOptions_t *parameters, int priority);
408
409BLPAPI_EXPORT
410void blpapi_ServiceRegistrationOptions_setPartsToRegister(
411 blpapi_ServiceRegistrationOptions_t *parameters, int parts);
412
413BLPAPI_EXPORT
414int blpapi_ServiceRegistrationOptions_getGroupId(
415 blpapi_ServiceRegistrationOptions_t *parameters,
416 char *groupdIdBuffer,
417 int *groupIdLength);
418
419BLPAPI_EXPORT
420int blpapi_ServiceRegistrationOptions_getServicePriority(
421 blpapi_ServiceRegistrationOptions_t *parameters);
422
423BLPAPI_EXPORT
424int blpapi_ServiceRegistrationOptions_getPartsToRegister(
425 blpapi_ServiceRegistrationOptions_t *parameters);
426
429
430#ifdef __cplusplus
431}
432
433#include <cassert>
434
441
442namespace BloombergLP {
443namespace blpapi {
444
446extern "C" inline void blpapi_providerEventHandlerAdapter(
447 blpapi_Event_t *event,
448 blpapi_ProviderSession_t *session,
449 void *userData);
451
452class ProviderSession;
453// ==========================
454// class ProviderEventHandler
455// ==========================
456
458 public:
460
461 virtual bool processEvent(const Event& event, ProviderSession *session)
462 = 0;
473};
474
486
487 blpapi_ServiceRegistrationOptions_t *d_handle_p;
488
489 public:
495 PRIORITY_LOW = BLPAPI_SERVICEREGISTRATIONOPTIONS_PRIORITY_LOW,
497 PRIORITY_MEDIUM = BLPAPI_SERVICEREGISTRATIONOPTIONS_PRIORITY_MEDIUM,
499 PRIORITY_HIGH = BLPAPI_SERVICEREGISTRATIONOPTIONS_PRIORITY_HIGH
501 };
502
506
507 PART_PUBLISHING = BLPAPI_REGISTRATIONPARTS_PUBLISHING,
509
510 PART_OPERATIONS = BLPAPI_REGISTRATIONPARTS_OPERATIONS,
513
515 = BLPAPI_REGISTRATIONPARTS_SUBSCRIBER_RESOLUTION,
518
520 = BLPAPI_REGISTRATIONPARTS_PUBLISHER_RESOLUTION,
524
525 PART_DEFAULT = BLPAPI_REGISTRATIONPARTS_DEFAULT
528 };
529
534
539
544
546 const ServiceRegistrationOptions& rhs);
551
552 void setGroupId(const char *groupId, unsigned int groupIdLength);
563
564 int setServicePriority(int priority);
576
577 void setPartsToRegister(int parts);
584
585 void addActiveSubServiceCodeRange(int begin, int end, int priority);
595
600
601 int getGroupId(char *groupId, int *groupIdLength) const;
610
611 int getServicePriority() const;
618
619 int getPartsToRegister() const;
624
626 blpapi_ServiceRegistrationOptions_t *handle() const;
628};
629
659class ProviderSession : public AbstractSession {
660
661 public:
663
664 private:
665 blpapi_ProviderSession_t *d_handle_p;
666 EventHandler *d_eventHandler_p;
667
668 private:
669 friend void blpapi_providerEventHandlerAdapter(blpapi_Event_t *event,
670 blpapi_ProviderSession_t *session,
671 void *userData);
672
673 void dispatchEvent(const Event& event);
674
675 private:
676 // NOT IMPLEMENTED
677 ProviderSession(const ProviderSession&);
678 ProviderSession& operator=(const ProviderSession&);
679
680 public:
682 AUTO_REGISTER_SERVICES = BLPAPI_RESOLVEMODE_AUTO_REGISTER_SERVICES,
684 DONT_REGISTER_SERVICES = BLPAPI_RESOLVEMODE_DONT_REGISTER_SERVICES
687 };
688
689 explicit ProviderSession(const SessionOptions& options = SessionOptions(),
690 EventHandler *eventHandler = 0,
691 EventDispatcher *eventDispatcher = 0);
725
727 explicit ProviderSession(blpapi_ProviderSession_t *handle);
729
730 virtual ~ProviderSession();
734
735 // MANIPULATORS
736 virtual bool start();
740
741 virtual bool startAsync();
745
746 virtual void stop();
750
751 virtual void stopAsync();
755
756 virtual Event nextEvent(int timeout = 0);
760
761 virtual int tryNextEvent(Event *event);
765
766 virtual bool registerService(const char *serviceName,
767 const Identity& providerIdentity = Identity(),
768 const ServiceRegistrationOptions& registrationOptions
792
793 virtual void activateSubServiceCodeRange(
794 const char *serviceName, int begin, int end, int priority);
806
808 const char *serviceName, int begin, int end);
817
818 virtual CorrelationId registerServiceAsync(const char *serviceName,
819 const Identity& providerIdentity = Identity(),
820 const CorrelationId& correlationId = CorrelationId(),
821 const ServiceRegistrationOptions& registrationOptions
846
847 virtual bool deregisterService(const char *serviceName);
863
864 virtual void resolve(ResolutionList *resolutionList,
866 const Identity& providerIdentity = Identity());
890
891 virtual void resolveAsync(const ResolutionList& resolutionList,
893 const Identity& providerIdentity = Identity());
915
916 virtual Topic getTopic(const Message& message);
925
926 virtual Topic createServiceStatusTopic(const Service& service);
932
933 virtual void publish(const Event& event);
937
938 virtual void sendResponse(
939 const Event& event, bool isPartialResponse = false);
945
946 virtual void createTopics(TopicList *topicList,
948 const Identity& providerIdentity = Identity());
965
966 virtual void createTopicsAsync(const TopicList& topicList,
968 const Identity& providerIdentity = Identity());
982
983 virtual void deleteTopic(const Topic& topic);
999
1000 virtual void deleteTopics(const std::vector<Topic>& topics);
1005
1006 virtual void deleteTopics(const Topic *topics, size_t numTopics);
1012
1013 virtual void terminateSubscriptionsOnTopic(
1014 const Topic& topic, const char *message = 0);
1024
1025 virtual void terminateSubscriptionsOnTopics(
1026 const std::vector<Topic>& topics, const char *message = 0);
1034
1035 virtual void terminateSubscriptionsOnTopics(
1036 const Topic *topics, size_t numTopics, const char *message = 0);
1045
1046 virtual bool flushPublishedEvents(int timeoutMsecs);
1058
1060 blpapi_ProviderSession_t *handle() const;
1065
1067 virtual Topic createTopic(const Message& message);
1074};
1075
1078
1079//=============================================================================
1080// INLINE FUNCTION DEFINITIONS
1081//=============================================================================
1082
1083// ---------------------
1084// class ProviderSession
1085// ---------------------
1086
1087inline ProviderSession::ProviderSession(const SessionOptions& parameters,
1088 EventHandler *handler,
1089 EventDispatcher *dispatcher)
1090 : d_eventHandler_p(handler)
1091{
1092 if (dispatcher && !handler) {
1094 "Event dispatcher provided without handler.");
1095 }
1096 d_handle_p = blpapi_ProviderSession_create(parameters.handle(),
1098 dispatcher ? dispatcher->impl() : 0,
1099 this);
1100 initAbstractSessionHandle(
1101 blpapi_ProviderSession_getAbstractSession(d_handle_p));
1102}
1103
1104inline ProviderSession::ProviderSession(blpapi_ProviderSession_t *newHandle)
1105 : d_handle_p(newHandle)
1106{
1107 initAbstractSessionHandle(
1108 blpapi_ProviderSession_getAbstractSession(d_handle_p));
1109}
1110
1112{
1113 blpapi_ProviderSession_destroy(d_handle_p);
1114}
1115
1117{
1118 return blpapi_ProviderSession_start(d_handle_p) ? false : true;
1119}
1120
1122{
1123 return blpapi_ProviderSession_startAsync(d_handle_p) ? false : true;
1124}
1125
1127{
1128 blpapi_ProviderSession_stop(d_handle_p);
1129}
1130
1132{
1133 blpapi_ProviderSession_stopAsync(d_handle_p);
1134}
1135
1137{
1138 if (timeout < 0) {
1139 throw InvalidArgumentException("Timeout must be >= 0.");
1140 }
1141
1142 blpapi_Event_t *event = 0;
1143 ExceptionUtil::throwOnError(blpapi_ProviderSession_nextEvent(
1144 d_handle_p, &event, static_cast<unsigned>(timeout)));
1145 return Event(event);
1146}
1147
1149{
1150 assert(event);
1151
1152 blpapi_Event_t *impl = 0;
1153 int ret = blpapi_ProviderSession_tryNextEvent(d_handle_p, &impl);
1154 if (0 == ret) {
1155 *event = Event(impl);
1156 }
1157 return ret;
1158}
1159
1160inline bool ProviderSession::registerService(const char *serviceName,
1161 const Identity& identity,
1162 const ServiceRegistrationOptions& registrationOptions)
1163{
1164 return blpapi_ProviderSession_registerService(d_handle_p,
1165 serviceName,
1166 identity.handle(),
1167 registrationOptions.handle())
1168 ? false
1169 : true;
1170}
1171
1173 const char *serviceName, int begin, int end, int priority)
1174{
1177 d_handle_p, serviceName, begin, end, priority));
1178}
1179
1181 const char *serviceName, int begin, int end)
1182{
1185 d_handle_p, serviceName, begin, end));
1186}
1187
1189 const char *serviceName,
1190 const Identity& identity,
1191 const CorrelationId& correlationId,
1192 const ServiceRegistrationOptions& registrationOptions)
1193{
1194 blpapi_CorrelationId_t retv = correlationId.impl();
1196 blpapi_ProviderSession_registerServiceAsync(d_handle_p,
1197 serviceName,
1198 identity.handle(),
1199 &retv,
1200 registrationOptions.handle()));
1201
1202 return CorrelationId(retv);
1203}
1204
1205inline bool ProviderSession::deregisterService(const char *serviceName)
1206{
1208 d_handle_p, serviceName)
1209 == 0
1210 ? true
1211 : false;
1212}
1213
1214inline void ProviderSession::resolve(ResolutionList *resolutionList,
1215 ResolveMode resolveMode,
1216 const Identity& identity)
1217{
1218 assert(resolutionList);
1219
1220 ExceptionUtil::throwOnError(blpapi_ProviderSession_resolve(d_handle_p,
1221 resolutionList->impl(),
1222 resolveMode,
1223 identity.handle()));
1224 return;
1225}
1226
1227inline void ProviderSession::resolveAsync(const ResolutionList& resolutionList,
1228 ResolveMode resolveMode,
1229 const Identity& identity)
1230{
1231 ExceptionUtil::throwOnError(blpapi_ProviderSession_resolveAsync(d_handle_p,
1232 resolutionList.impl(),
1233 resolveMode,
1234 identity.handle()));
1235 return;
1236}
1237
1239{
1240 blpapi_Topic_t *topic = 0;
1241 ExceptionUtil::throwOnError(blpapi_ProviderSession_createTopic(
1242 d_handle_p, message.impl(), &topic));
1243
1244 return Topic(topic);
1245}
1246
1248{
1249 blpapi_Topic_t *topic = 0;
1250 ExceptionUtil::throwOnError(blpapi_ProviderSession_getTopic(
1251 d_handle_p, message.impl(), &topic));
1252
1253 return Topic(topic);
1254}
1255
1257{
1258 blpapi_Topic_t *topic = 0;
1260 blpapi_ProviderSession_createServiceStatusTopic(
1261 d_handle_p, service.handle(), &topic));
1262
1263 return Topic(topic);
1264}
1265
1267 ResolveMode resolveMode,
1268 const Identity& identity)
1269{
1270 assert(topicList);
1271
1272 ExceptionUtil::throwOnError(blpapi_ProviderSession_createTopics(
1273 d_handle_p, topicList->impl(), resolveMode, identity.handle()));
1274 return;
1275}
1276
1278 ResolveMode resolveMode,
1279 const Identity& identity)
1280{
1281 ExceptionUtil::throwOnError(blpapi_ProviderSession_createTopicsAsync(
1282 d_handle_p, topicList.impl(), resolveMode, identity.handle()));
1283 return;
1284}
1285
1286inline void ProviderSession::deleteTopic(const Topic& topic)
1287{
1288 const blpapi_Topic_t *topicImpl = topic.impl();
1290 d_handle_p, &topicImpl, 1));
1291}
1292
1293inline void ProviderSession::deleteTopics(const std::vector<Topic>& topics)
1294{
1295 if (topics.size() == 0) {
1296 return;
1297 }
1298 std::vector<const blpapi_Topic_t *> topicImplList;
1299 topicImplList.reserve(topics.size());
1300 for (std::vector<Topic>::const_iterator it = topics.begin();
1301 it != topics.end();
1302 ++it) {
1303 topicImplList.push_back(it->impl());
1304 }
1306 d_handle_p, &topicImplList[0], topicImplList.size()));
1307}
1308
1310 const Topic *topics, size_t numTopics)
1311{
1312 if (numTopics == 0) {
1313 return;
1314 }
1315
1316 assert(topics);
1317
1318 std::vector<const blpapi_Topic_t *> topicImplList;
1319 topicImplList.reserve(numTopics);
1320 for (size_t i = 0; i < numTopics; ++i) {
1321 topicImplList.push_back(topics[i].impl());
1322 }
1324 d_handle_p, &topicImplList[0], topicImplList.size()));
1325}
1326
1328 const Topic& topic, const char *message)
1329{
1330 const blpapi_Topic_t *topicImpl = topic.impl();
1333 d_handle_p, &topicImpl, 1, message));
1334}
1335
1337 const std::vector<Topic>& topics, const char *message)
1338{
1339 if (topics.empty()) {
1340 return;
1341 }
1342 terminateSubscriptionsOnTopics(&topics.front(), topics.size(), message);
1343}
1344
1346 const Topic *topics, size_t numTopics, const char *message)
1347{
1348 if (numTopics == 0) {
1349 return;
1350 }
1351
1352 assert(topics);
1353
1354 std::vector<const blpapi_Topic_t *> topicImplList;
1355 topicImplList.reserve(numTopics);
1356 for (size_t i = 0; i < numTopics; ++i) {
1357 topicImplList.push_back(topics[i].impl());
1358 }
1361 d_handle_p,
1362 &topicImplList[0],
1363 topicImplList.size(),
1364 message));
1365}
1366
1367inline void ProviderSession::publish(const Event& event)
1368{
1370 blpapi_ProviderSession_publish(d_handle_p, event.impl()));
1371 return;
1372}
1373
1375 const Event& event, bool isPartialResponse)
1376{
1377 ExceptionUtil::throwOnError(blpapi_ProviderSession_sendResponse(
1378 d_handle_p, event.impl(), isPartialResponse));
1379 return;
1380}
1381
1382inline blpapi_ProviderSession_t *ProviderSession::handle() const
1383{
1384 return d_handle_p;
1385}
1386
1387inline void ProviderSession::dispatchEvent(const Event& event)
1388{
1389 assert(d_eventHandler_p);
1390
1391 d_eventHandler_p->processEvent(event, this);
1392}
1393
1394inline bool ProviderSession::flushPublishedEvents(int timeoutMsecs)
1395{
1396 int allFlushed = 0;
1397 int rc = BLPAPI_CALL(blpapi_ProviderSession_flushPublishedEvents)(
1398 d_handle_p, &allFlushed, timeoutMsecs);
1399 if (rc != 0) {
1401 }
1402 return allFlushed ? true : false;
1403}
1404
1405// --------------------------------
1406// class ServiceRegistrationOptions
1407// --------------------------------
1408
1410{
1411 d_handle_p = blpapi_ServiceRegistrationOptions_create();
1412}
1413
1415 const ServiceRegistrationOptions& original)
1416{
1417 d_handle_p
1418 = blpapi_ServiceRegistrationOptions_duplicate(original.handle());
1419}
1420
1422{
1423 blpapi_ServiceRegistrationOptions_destroy(d_handle_p);
1424}
1425
1427 const ServiceRegistrationOptions& rhs)
1428{
1429 blpapi_ServiceRegistrationOptions_copy(this->handle(), rhs.handle());
1430 return *this;
1431}
1432
1433// SUBSERVICE CODES
1435 int begin, int end, int priority)
1436{
1439 d_handle_p, begin, end, priority));
1440}
1441
1447
1449 const char *groupId, unsigned int groupIdLength)
1450{
1451 blpapi_ServiceRegistrationOptions_setGroupId(
1452 d_handle_p, groupId, groupIdLength);
1453}
1454
1456{
1457 return blpapi_ServiceRegistrationOptions_setServicePriority(
1458 d_handle_p, priority);
1459}
1460
1466
1468 char *groupIdBuffer, int *groupIdLength) const
1469{
1470 return blpapi_ServiceRegistrationOptions_getGroupId(
1471 d_handle_p, groupIdBuffer, groupIdLength);
1472}
1473
1475{
1476 return blpapi_ServiceRegistrationOptions_getServicePriority(d_handle_p);
1477}
1478
1484
1485inline blpapi_ServiceRegistrationOptions_t *
1486ServiceRegistrationOptions::handle() const
1487{
1488 return d_handle_p;
1489}
1490
1491// --------------------------
1492// class ProviderEventHandler
1493// --------------------------
1494
1496extern "C" inline void blpapi_providerEventHandlerAdapter(
1497 blpapi_Event_t *event, blpapi_ProviderSession_t *, void *userData)
1498{
1499 assert(userData);
1500
1501 reinterpret_cast<ProviderSession *>(userData)->dispatchEvent(Event(event));
1502}
1504
1505} // close namespace blpapi
1506} // close namespace BloombergLP
1507
1508#endif // #ifdef __cplusplus
1509#endif // #ifndef INCLUDED_BLPAPI_PROVIDERSESSION
A common interface shared between publisher and consumer sessions.
Provide functions for dispatchtbl.
#define BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_ADDACTIVATESUBSERVICECODERANGE(a1, a2, a3, a4)
Definition blpapi_call.h:452
#define BLPAPI_CALL_PROVIDERSESSION_DEACTIVATESUBSERVICECODERANGE( a1, a2, a3, a4)
Definition blpapi_call.h:448
#define BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_SETPARTSTOREGISTER(a1, a2)
Definition blpapi_call.h:431
#define BLPAPI_CALL_PROVIDERSESSION_DEREGISTERSERVICE(a1, a2)
Definition blpapi_call.h:428
#define BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_GETPARTSTOREGISTER(a1)
Definition blpapi_call.h:434
#define BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_REMOVEALLACTIVESUBSERVICECODERANGES(a1)
Definition blpapi_call.h:457
#define BLPAPI_CALL_PROVIDERSESSION_ACTIVATESUBSERVICECODERANGE( a1, a2, a3, a4, a5)
Definition blpapi_call.h:444
#define BLPAPI_CALL_PROVIDERSESSION_DELETETOPICS(a1, a2, a3)
Definition blpapi_call.h:437
#define BLPAPI_CALL(FUNCNAME)
Definition blpapi_call.h:361
#define BLPAPI_CALL_PROVIDERSESSION_TERMINATESUBSCRIPTIONSONTOPICS( a1, a2, a3, a4)
Definition blpapi_call.h:440
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 representation of a list of topics.
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.
Provide representation of a Topic.
Provide a representation of a list of topics.
Provide BLPAPI types.
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
Definition blpapi_event.h:212
blpapi_Event_t * impl() const
Definition blpapi_event.h:569
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_message.h:177
Definition blpapi_providersession.h:457
virtual ~ProviderEventHandler()
Definition blpapi_providersession.h:459
virtual bool processEvent(const Event &event, ProviderSession *session)=0
Definition blpapi_providersession.h:659
virtual void deleteTopic(const Topic &topic)
Definition blpapi_providersession.h:1286
virtual void deleteTopics(const std::vector< Topic > &topics)
Definition blpapi_providersession.h:1293
virtual void publish(const Event &event)
Definition blpapi_providersession.h:1367
virtual ~ProviderSession()
Definition blpapi_providersession.h:1111
virtual int tryNextEvent(Event *event)
Definition blpapi_providersession.h:1148
virtual void resolve(ResolutionList *resolutionList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1214
virtual void activateSubServiceCodeRange(const char *serviceName, int begin, int end, int priority)
Definition blpapi_providersession.h:1172
virtual bool registerService(const char *serviceName, const Identity &providerIdentity=Identity(), const ServiceRegistrationOptions &registrationOptions=ServiceRegistrationOptions())
Definition blpapi_providersession.h:1160
virtual bool startAsync()
Definition blpapi_providersession.h:1121
virtual Topic createServiceStatusTopic(const Service &service)
Definition blpapi_providersession.h:1256
virtual Topic createTopic(const Message &message)
Definition blpapi_providersession.h:1238
virtual void deactivateSubServiceCodeRange(const char *serviceName, int begin, int end)
Definition blpapi_providersession.h:1180
virtual Topic getTopic(const Message &message)
Definition blpapi_providersession.h:1247
virtual void sendResponse(const Event &event, bool isPartialResponse=false)
Definition blpapi_providersession.h:1374
virtual Event nextEvent(int timeout=0)
Definition blpapi_providersession.h:1136
ResolveMode
Definition blpapi_providersession.h:681
@ DONT_REGISTER_SERVICES
Definition blpapi_providersession.h:684
@ AUTO_REGISTER_SERVICES
Try to register services found in ResolutionList if necessary.
Definition blpapi_providersession.h:682
virtual void stop()
Definition blpapi_providersession.h:1126
virtual void createTopics(TopicList *topicList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1266
friend void blpapi_providerEventHandlerAdapter(blpapi_Event_t *event, blpapi_ProviderSession_t *session, void *userData)
virtual void createTopicsAsync(const TopicList &topicList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1277
::BloombergLP::blpapi::ProviderEventHandler EventHandler
Definition blpapi_providersession.h:662
virtual void terminateSubscriptionsOnTopic(const Topic &topic, const char *message=0)
Definition blpapi_providersession.h:1327
virtual bool start()
Definition blpapi_providersession.h:1116
virtual bool flushPublishedEvents(int timeoutMsecs)
Definition blpapi_providersession.h:1394
virtual bool deregisterService(const char *serviceName)
Definition blpapi_providersession.h:1205
virtual void stopAsync()
Definition blpapi_providersession.h:1131
virtual CorrelationId registerServiceAsync(const char *serviceName, const Identity &providerIdentity=Identity(), const CorrelationId &correlationId=CorrelationId(), const ServiceRegistrationOptions &registrationOptions=ServiceRegistrationOptions())
Definition blpapi_providersession.h:1188
virtual void resolveAsync(const ResolutionList &resolutionList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1227
virtual void terminateSubscriptionsOnTopics(const std::vector< Topic > &topics, const char *message=0)
Definition blpapi_providersession.h:1336
Definition blpapi_resolutionlist.h:211
const blpapi_ResolutionList_t * impl() const
Definition blpapi_resolutionlist.h:551
Definition blpapi_providersession.h:485
int getGroupId(char *groupId, int *groupIdLength) const
Definition blpapi_providersession.h:1467
void removeAllActiveSubServiceCodeRanges()
Definition blpapi_providersession.h:1442
ServiceRegistrationOptions()
Definition blpapi_providersession.h:1409
void setGroupId(const char *groupId, unsigned int groupIdLength)
Definition blpapi_providersession.h:1448
ServiceRegistrationOptions & operator=(const ServiceRegistrationOptions &rhs)
Definition blpapi_providersession.h:1426
int getPartsToRegister() const
Definition blpapi_providersession.h:1479
int setServicePriority(int priority)
Definition blpapi_providersession.h:1455
~ServiceRegistrationOptions()
Definition blpapi_providersession.h:1421
int getServicePriority() const
Definition blpapi_providersession.h:1474
RegistrationParts
Definition blpapi_providersession.h:505
@ PART_PUBLISHING
register to receive subscribe and unsubscribe messages
Definition blpapi_providersession.h:507
@ PART_DEFAULT
Definition blpapi_providersession.h:525
@ PART_OPERATIONS
Definition blpapi_providersession.h:510
@ PART_PUBLISHER_RESOLUTION
Definition blpapi_providersession.h:519
@ PART_SUBSCRIBER_RESOLUTION
Definition blpapi_providersession.h:514
void setPartsToRegister(int parts)
Definition blpapi_providersession.h:1461
ServiceRegistrationPriority
Definition blpapi_providersession.h:494
@ PRIORITY_MEDIUM
Medium priority (INT_MAX/2)
Definition blpapi_providersession.h:497
@ PRIORITY_LOW
Low priority (0)
Definition blpapi_providersession.h:495
@ PRIORITY_HIGH
High priority (INT_MAX)
Definition blpapi_providersession.h:499
void addActiveSubServiceCodeRange(int begin, int end, int priority)
Definition blpapi_providersession.h:1434
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_topiclist.h:193
const blpapi_TopicList_t * impl() const
Definition blpapi_topiclist.h:426
Definition blpapi_topic.h:130
const blpapi_Topic_t * impl() const
Definition blpapi_topic.h:237
Definition blpapi_abstractsession.h:212
Definition blpapi_abstractsession.h:211