38#ifndef INCLUDED_BLPAPI_PROVIDERSESSION
39#define INCLUDED_BLPAPI_PROVIDERSESSION
156#ifndef INCLUDED_BLPAPI_ABSTRACTSESSION
160#ifndef INCLUDED_BLPAPI_CALL
164#ifndef INCLUDED_BLPAPI_CORRELATIONID
168#ifndef INCLUDED_BLPAPI_DEFS
172#ifndef INCLUDED_BLPAPI_EVENT
176#ifndef INCLUDED_BLPAPI_EVENTDISPATCHER
180#ifndef INCLUDED_BLPAPI_IDENTITY
184#ifndef INCLUDED_BLPAPI_REQUEST
188#ifndef INCLUDED_BLPAPI_RESOLUTIONLIST
192#ifndef INCLUDED_BLPAPI_SERVICE
196#ifndef INCLUDED_BLPAPI_SESSIONOPTIONS
200#ifndef INCLUDED_BLPAPI_SUBSCRIPTIONLIST
204#ifndef INCLUDED_BLPAPI_TOPIC
208#ifndef INCLUDED_BLPAPI_TOPICLIST
212#ifndef INCLUDED_BLPAPI_TYPES
227struct blpapi_ServiceRegistrationOptions;
228typedef struct blpapi_ServiceRegistrationOptions
229 blpapi_ServiceRegistrationOptions_t;
238typedef void (*blpapi_ProviderEventHandler_t)(blpapi_Event_t *event,
239 blpapi_ProviderSession_t *session,
265blpapi_ProviderSession_t *blpapi_ProviderSession_create(
266 blpapi_SessionOptions_t *parameters,
267 blpapi_ProviderEventHandler_t handler,
268 blpapi_EventDispatcher_t *dispatcher,
281void blpapi_ProviderSession_destroy(blpapi_ProviderSession_t *session);
296int blpapi_ProviderSession_start(blpapi_ProviderSession_t *session);
309int blpapi_ProviderSession_startAsync(blpapi_ProviderSession_t *session);
325int blpapi_ProviderSession_stop(blpapi_ProviderSession_t *session);
340int blpapi_ProviderSession_stopAsync(blpapi_ProviderSession_t *session);
360int blpapi_ProviderSession_nextEvent(blpapi_ProviderSession_t *session,
361 blpapi_Event_t **eventPointer,
362 unsigned int timeoutInMilliseconds);
376int blpapi_ProviderSession_tryNextEvent(
377 blpapi_ProviderSession_t *session, blpapi_Event_t **eventPointer);
400int blpapi_ProviderSession_registerService(blpapi_ProviderSession_t *session,
401 const char *serviceName,
402 const blpapi_Identity_t *identity,
403 blpapi_ServiceRegistrationOptions_t *registrationOptions);
424int blpapi_ProviderSession_activateSubServiceCodeRange(
425 blpapi_ProviderSession_t *session,
426 const char *serviceName,
447int blpapi_ProviderSession_deactivateSubServiceCodeRange(
448 blpapi_ProviderSession_t *session,
449 const char *serviceName,
473int blpapi_ProviderSession_registerServiceAsync(
474 blpapi_ProviderSession_t *session,
475 const char *serviceName,
476 const blpapi_Identity_t *identity,
477 blpapi_CorrelationId_t *correlationId,
478 blpapi_ServiceRegistrationOptions_t *registrationOptions);
500int blpapi_ProviderSession_deregisterService(
501 blpapi_ProviderSession_t *session,
const char *serviceName);
524int blpapi_ProviderSession_resolve(blpapi_ProviderSession_t *session,
525 blpapi_ResolutionList_t *resolutionList,
527 const blpapi_Identity_t *identity);
548int blpapi_ProviderSession_resolveAsync(blpapi_ProviderSession_t *session,
549 const blpapi_ResolutionList_t *resolutionList,
551 const blpapi_Identity_t *identity);
573int blpapi_ProviderSession_createTopics(blpapi_ProviderSession_t *session,
574 blpapi_TopicList_t *topicList,
576 const blpapi_Identity_t *identity);
596int blpapi_ProviderSession_createTopicsAsync(blpapi_ProviderSession_t *session,
597 const blpapi_TopicList_t *topicList,
599 const blpapi_Identity_t *identity);
618int blpapi_ProviderSession_getTopic(blpapi_ProviderSession_t *session,
619 const blpapi_Message_t *message,
620 blpapi_Topic_t **topic);
640int blpapi_ProviderSession_createTopic(blpapi_ProviderSession_t *session,
641 const blpapi_Message_t *message,
642 blpapi_Topic_t **topic);
660int blpapi_ProviderSession_createServiceStatusTopic(
661 blpapi_ProviderSession_t *session,
662 const blpapi_Service_t *service,
663 blpapi_Topic_t **topic);
684int blpapi_ProviderSession_deleteTopics(blpapi_ProviderSession_t *session,
685 const blpapi_Topic_t **topics,
706int blpapi_ProviderSession_terminateSubscriptionsOnTopics(
707 blpapi_ProviderSession_t *session,
708 const blpapi_Topic_t **topics,
710 const char *message);
727int blpapi_ProviderSession_publish(
728 blpapi_ProviderSession_t *session, blpapi_Event_t *event);
747int blpapi_ProviderSession_sendResponse(blpapi_ProviderSession_t *session,
748 blpapi_Event_t *event,
749 int isPartialResponse);
761blpapi_AbstractSession_t *blpapi_ProviderSession_getAbstractSession(
762 blpapi_ProviderSession_t *session);
782int blpapi_ProviderSession_flushPublishedEvents(
783 blpapi_ProviderSession_t *session,
int *allFlushed,
int timeoutMsecs);
798blpapi_ServiceRegistrationOptions_t *blpapi_ServiceRegistrationOptions_create(
811blpapi_ServiceRegistrationOptions_t *
812blpapi_ServiceRegistrationOptions_duplicate(
813 const blpapi_ServiceRegistrationOptions_t *parameters);
823void blpapi_ServiceRegistrationOptions_destroy(
824 blpapi_ServiceRegistrationOptions_t *parameters);
835void blpapi_ServiceRegistrationOptions_copy(
836 blpapi_ServiceRegistrationOptions_t *lhs,
837 const blpapi_ServiceRegistrationOptions_t *rhs);
856int blpapi_ServiceRegistrationOptions_addActiveSubServiceCodeRange(
857 blpapi_ServiceRegistrationOptions_t *parameters,
869void blpapi_ServiceRegistrationOptions_removeAllActiveSubServiceCodeRanges(
870 blpapi_ServiceRegistrationOptions_t *parameters);
888void blpapi_ServiceRegistrationOptions_setGroupId(
889 blpapi_ServiceRegistrationOptions_t *parameters,
891 unsigned int groupIdLength);
907int blpapi_ServiceRegistrationOptions_setServicePriority(
908 blpapi_ServiceRegistrationOptions_t *parameters,
int priority);
920void blpapi_ServiceRegistrationOptions_setPartsToRegister(
921 blpapi_ServiceRegistrationOptions_t *parameters,
int parts);
939int blpapi_ServiceRegistrationOptions_getGroupId(
940 blpapi_ServiceRegistrationOptions_t *parameters,
941 char *groupdIdBuffer,
952int blpapi_ServiceRegistrationOptions_getServicePriority(
953 blpapi_ServiceRegistrationOptions_t *parameters);
964int blpapi_ServiceRegistrationOptions_getPartsToRegister(
965 blpapi_ServiceRegistrationOptions_t *parameters);
985extern "C" inline void blpapi_providerEventHandlerAdapter(
986 blpapi_Event_t *event,
987 blpapi_ProviderSession_t *session,
1026 blpapi_ServiceRegistrationOptions_t *d_handle_p;
1054 = BLPAPI_REGISTRATIONPARTS_SUBSCRIBER_RESOLUTION,
1059 = BLPAPI_REGISTRATIONPARTS_PUBLISHER_RESOLUTION,
1091 void setGroupId(
const char *groupId,
unsigned int groupIdLength);
1140 int getGroupId(
char *groupId,
int *groupIdLength)
const;
1165 blpapi_ServiceRegistrationOptions_t *handle()
const;
1198class ProviderSession :
public AbstractSession {
1204 blpapi_ProviderSession_t *d_handle_p;
1209 blpapi_ProviderSession_t *session,
1212 void dispatchEvent(
const Event& event);
1216 ProviderSession(
const ProviderSession&);
1217 ProviderSession& operator=(
const ProviderSession&);
1275 virtual bool start();
1285 virtual void stop();
1333 const char *serviceName,
int begin,
int end,
int priority);
1347 const char *serviceName,
int begin,
int end);
1478 const Event& event,
bool isPartialResponse =
false);
1539 virtual void deleteTopics(
const std::vector<Topic>& topics);
1553 const Topic& topic,
const char *message = 0);
1564 const std::vector<Topic>& topics,
const char *message = 0);
1574 const Topic *topics,
size_t numTopics,
const char *message = 0);
1598 blpapi_ProviderSession_t *handle()
const;
1655 : d_eventHandler_p(handler)
1657 if (dispatcher && !handler) {
1659 "Event dispatcher provided without handler.");
1661 d_handle_p = blpapi_ProviderSession_create(parameters.handle(),
1663 dispatcher ? dispatcher->impl() : 0,
1665 initAbstractSessionHandle(
1666 blpapi_ProviderSession_getAbstractSession(d_handle_p));
1670inline ProviderSession::ProviderSession(blpapi_ProviderSession_t *newHandle)
1671 : d_handle_p(newHandle)
1673 initAbstractSessionHandle(
1674 blpapi_ProviderSession_getAbstractSession(d_handle_p));
1680 blpapi_ProviderSession_destroy(d_handle_p);
1685 return blpapi_ProviderSession_start(d_handle_p) ? false :
true;
1690 return blpapi_ProviderSession_startAsync(d_handle_p) ? false :
true;
1695 blpapi_ProviderSession_stop(d_handle_p);
1700 blpapi_ProviderSession_stopAsync(d_handle_p);
1709 blpapi_Event_t *
event = 0;
1711 d_handle_p, &event,
static_cast<unsigned>(timeout)));
1712 return Event(event);
1719 blpapi_Event_t *impl = 0;
1720 int ret = blpapi_ProviderSession_tryNextEvent(d_handle_p, &impl);
1722 *
event =
Event(impl);
1731 return blpapi_ProviderSession_registerService(d_handle_p,
1734 registrationOptions.handle())
1740 const char *serviceName,
int begin,
int end,
int priority)
1743 BLPAPI_CALL_PROVIDERSESSION_ACTIVATESUBSERVICECODERANGE(
1744 d_handle_p, serviceName, begin, end, priority));
1748 const char *serviceName,
int begin,
int end)
1751 BLPAPI_CALL_PROVIDERSESSION_DEACTIVATESUBSERVICECODERANGE(
1752 d_handle_p, serviceName, begin, end));
1756 const char *serviceName,
1761 blpapi_CorrelationId_t retv = correlationId.impl();
1763 blpapi_ProviderSession_registerServiceAsync(d_handle_p,
1767 registrationOptions.handle()));
1774 return BLPAPI_CALL_PROVIDERSESSION_DEREGISTERSERVICE(
1775 d_handle_p, serviceName)
1785 assert(resolutionList);
1788 resolutionList->impl(),
1790 identity.handle()));
1799 resolutionList.impl(),
1801 identity.handle()));
1807 blpapi_Topic_t *topic = 0;
1809 d_handle_p, message.impl(), &topic));
1811 return Topic(topic);
1816 blpapi_Topic_t *topic = 0;
1818 d_handle_p, message.impl(), &topic));
1820 return Topic(topic);
1825 blpapi_Topic_t *topic = 0;
1827 blpapi_ProviderSession_createServiceStatusTopic(
1828 d_handle_p, service.handle(), &topic));
1830 return Topic(topic);
1840 d_handle_p, topicList->impl(), resolveMode, identity.handle()));
1849 d_handle_p, topicList.impl(), resolveMode, identity.handle()));
1855 const blpapi_Topic_t *topicImpl = topic.impl();
1857 d_handle_p, &topicImpl, 1));
1862 if (topics.size() == 0) {
1865 std::vector<const blpapi_Topic_t *> topicImplList;
1866 topicImplList.reserve(topics.size());
1867 for (std::vector<Topic>::const_iterator it = topics.begin();
1870 topicImplList.push_back(it->impl());
1873 d_handle_p, &topicImplList[0], topicImplList.size()));
1877 const Topic *topics,
size_t numTopics)
1879 if (numTopics == 0) {
1885 std::vector<const blpapi_Topic_t *> topicImplList;
1886 topicImplList.reserve(numTopics);
1887 for (
size_t i = 0; i < numTopics; ++i) {
1888 topicImplList.push_back(topics[i].impl());
1891 d_handle_p, &topicImplList[0], topicImplList.size()));
1895 const Topic& topic,
const char *message)
1897 const blpapi_Topic_t *topicImpl = topic.impl();
1899 BLPAPI_CALL_PROVIDERSESSION_TERMINATESUBSCRIPTIONSONTOPICS(
1900 d_handle_p, &topicImpl, 1, message));
1904 const std::vector<Topic>& topics,
const char *message)
1906 if (topics.empty()) {
1913 const Topic *topics,
size_t numTopics,
const char *message)
1915 if (numTopics == 0) {
1921 std::vector<const blpapi_Topic_t *> topicImplList;
1922 topicImplList.reserve(numTopics);
1923 for (
size_t i = 0; i < numTopics; ++i) {
1924 topicImplList.push_back(topics[i].impl());
1927 BLPAPI_CALL_PROVIDERSESSION_TERMINATESUBSCRIPTIONSONTOPICS(
1930 topicImplList.size(),
1937 blpapi_ProviderSession_publish(d_handle_p, event.impl()));
1942 const Event& event,
bool isPartialResponse)
1945 d_handle_p, event.impl(), isPartialResponse));
1950inline blpapi_ProviderSession_t *ProviderSession::handle()
const
1956inline void ProviderSession::dispatchEvent(
const Event& event)
1958 assert(d_eventHandler_p);
1966 int rc = BLPAPI_CALL(blpapi_ProviderSession_flushPublishedEvents)(
1967 d_handle_p, &allFlushed, timeoutMsecs);
1971 return allFlushed ? true :
false;
1980 d_handle_p = blpapi_ServiceRegistrationOptions_create();
1987 = blpapi_ServiceRegistrationOptions_duplicate(original.handle());
1992 blpapi_ServiceRegistrationOptions_destroy(d_handle_p);
1998 blpapi_ServiceRegistrationOptions_copy(this->handle(), rhs.handle());
2004 int begin,
int end,
int priority)
2007 BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_ADDACTIVATESUBSERVICECODERANGE(
2008 d_handle_p, begin, end, priority));
2013 BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_REMOVEALLACTIVESUBSERVICECODERANGES(
2018 const char *groupId,
unsigned int groupIdLength)
2020 blpapi_ServiceRegistrationOptions_setGroupId(
2021 d_handle_p, groupId, groupIdLength);
2026 return blpapi_ServiceRegistrationOptions_setServicePriority(
2027 d_handle_p, priority);
2032 BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_SETPARTSTOREGISTER(
2037 char *groupIdBuffer,
int *groupIdLength)
const
2039 return blpapi_ServiceRegistrationOptions_getGroupId(
2040 d_handle_p, groupIdBuffer, groupIdLength);
2045 return blpapi_ServiceRegistrationOptions_getServicePriority(d_handle_p);
2050 return BLPAPI_CALL_SERVICEREGISTRATIONOPTIONS_GETPARTSTOREGISTER(
2055inline blpapi_ServiceRegistrationOptions_t *
2056ServiceRegistrationOptions::handle()
const
2067extern "C" inline void blpapi_providerEventHandlerAdapter(
2068 blpapi_Event_t *event, blpapi_ProviderSession_t *,
void *userData)
2072 reinterpret_cast<ProviderSession *
>(userData)->dispatchEvent(Event(event));
2084 return "PRIORITY_LOW";
2086 return "PRIORITY_MEDIUM";
2088 return "PRIORITY_HIGH";
2102 return "PART_PUBLISHING";
2104 return "PART_OPERATIONS";
2106 return "PART_SUBSCRIBER_RESOLUTION";
2108 return "PART_PUBLISHER_RESOLUTION";
2110 return "PART_DEFAULT";
2121 switch (resolveMode) {
2123 return "AUTO_REGISTER_SERVICES";
2125 return "DONT_REGISTER_SERVICES";
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 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.
Definition blpapi_correlationid.h:322
Definition blpapi_eventdispatcher.h:184
Definition blpapi_session.h:840
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_message.h:344
Definition blpapi_providersession.h:996
virtual ~ProviderEventHandler()
Definition blpapi_providersession.h:998
virtual bool processEvent(const Event &event, ProviderSession *session)=0
Definition blpapi_providersession.h:1198
virtual void deleteTopic(const Topic &topic)
Definition blpapi_providersession.h:1853
virtual void deleteTopics(const std::vector< Topic > &topics)
Definition blpapi_providersession.h:1860
virtual void publish(const Event &event)
Definition blpapi_providersession.h:1934
virtual ~ProviderSession()
Definition blpapi_providersession.h:1678
virtual int tryNextEvent(Event *event)
Definition blpapi_providersession.h:1715
virtual void resolve(ResolutionList *resolutionList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1781
virtual void activateSubServiceCodeRange(const char *serviceName, int begin, int end, int priority)
Definition blpapi_providersession.h:1739
virtual bool registerService(const char *serviceName, const Identity &providerIdentity=Identity(), const ServiceRegistrationOptions ®istrationOptions=ServiceRegistrationOptions())
Definition blpapi_providersession.h:1727
virtual bool startAsync()
Definition blpapi_providersession.h:1688
virtual Topic createServiceStatusTopic(const Service &service)
Definition blpapi_providersession.h:1823
virtual Topic createTopic(const Message &message)
Definition blpapi_providersession.h:1805
virtual void deactivateSubServiceCodeRange(const char *serviceName, int begin, int end)
Definition blpapi_providersession.h:1747
virtual Topic getTopic(const Message &message)
Definition blpapi_providersession.h:1814
virtual void sendResponse(const Event &event, bool isPartialResponse=false)
Definition blpapi_providersession.h:1941
virtual Event nextEvent(int timeout=0)
Definition blpapi_providersession.h:1703
ResolveMode
Definition blpapi_providersession.h:1220
@ DONT_REGISTER_SERVICES
Definition blpapi_providersession.h:1223
@ AUTO_REGISTER_SERVICES
Try to register services found in ResolutionList if necessary.
Definition blpapi_providersession.h:1221
virtual void stop()
Definition blpapi_providersession.h:1693
virtual void createTopics(TopicList *topicList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1833
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:1844
::BloombergLP::blpapi::ProviderEventHandler EventHandler
Definition blpapi_providersession.h:1201
virtual void terminateSubscriptionsOnTopic(const Topic &topic, const char *message=0)
Definition blpapi_providersession.h:1894
virtual bool start()
Definition blpapi_providersession.h:1683
virtual bool flushPublishedEvents(int timeoutMsecs)
Definition blpapi_providersession.h:1963
virtual bool deregisterService(const char *serviceName)
Definition blpapi_providersession.h:1772
virtual void stopAsync()
Definition blpapi_providersession.h:1698
virtual CorrelationId registerServiceAsync(const char *serviceName, const Identity &providerIdentity=Identity(), const CorrelationId &correlationId=CorrelationId(), const ServiceRegistrationOptions ®istrationOptions=ServiceRegistrationOptions())
Definition blpapi_providersession.h:1755
virtual void resolveAsync(const ResolutionList &resolutionList, ResolveMode resolveMode=DONT_REGISTER_SERVICES, const Identity &providerIdentity=Identity())
Definition blpapi_providersession.h:1794
virtual void terminateSubscriptionsOnTopics(const std::vector< Topic > &topics, const char *message=0)
Definition blpapi_providersession.h:1903
Definition blpapi_resolutionlist.h:418
Definition blpapi_providersession.h:1024
int getGroupId(char *groupId, int *groupIdLength) const
Definition blpapi_providersession.h:2036
void removeAllActiveSubServiceCodeRanges()
Definition blpapi_providersession.h:2011
ServiceRegistrationOptions()
Definition blpapi_providersession.h:1978
void setGroupId(const char *groupId, unsigned int groupIdLength)
Definition blpapi_providersession.h:2017
ServiceRegistrationOptions & operator=(const ServiceRegistrationOptions &rhs)
Definition blpapi_providersession.h:1995
int getPartsToRegister() const
Definition blpapi_providersession.h:2048
int setServicePriority(int priority)
Definition blpapi_providersession.h:2024
~ServiceRegistrationOptions()
Definition blpapi_providersession.h:1990
int getServicePriority() const
Definition blpapi_providersession.h:2043
RegistrationParts
Definition blpapi_providersession.h:1044
@ PART_PUBLISHING
register to receive subscribe and unsubscribe messages
Definition blpapi_providersession.h:1046
@ PART_DEFAULT
Definition blpapi_providersession.h:1064
@ PART_OPERATIONS
Definition blpapi_providersession.h:1049
@ PART_PUBLISHER_RESOLUTION
Definition blpapi_providersession.h:1058
@ PART_SUBSCRIBER_RESOLUTION
Definition blpapi_providersession.h:1053
void setPartsToRegister(int parts)
Definition blpapi_providersession.h:2030
ServiceRegistrationPriority
Definition blpapi_providersession.h:1033
@ PRIORITY_MEDIUM
Medium priority (INT_MAX/2)
Definition blpapi_providersession.h:1036
@ PRIORITY_LOW
Low priority (0)
Definition blpapi_providersession.h:1034
@ PRIORITY_HIGH
High priority (INT_MAX)
Definition blpapi_providersession.h:1038
void addActiveSubServiceCodeRange(int begin, int end, int priority)
Definition blpapi_providersession.h:2003
Definition blpapi_service.h:616
Definition blpapi_sessionoptions.h:1141
Definition blpapi_topiclist.h:337
Definition blpapi_topic.h:177
constexpr const char * to_string(CorrelationId::ValueType valueType)
Definition blpapi_correlationid.h:830
Definition blpapi_abstractsession.h:448
Definition blpapi_abstractsession.h:447