/* Copyright 2012. Bloomberg Finance L.P.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions: The above
* copyright notice and this permission notice shall be included in all copies
* or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
// blpapi_dispatchtbl.h -*-C++-*-
#ifndef INCLUDED_BLPAPI_DISPATCHTBL
#define INCLUDED_BLPAPI_DISPATCHTBL
//@PURPOSE: Work with dispatch table
//
//@DESCRIPTION: This provides dispatch table for extended exported functions.
// These functions are called through dispatch table based on preprocessors. It
// avoids direct call of these functions by applications. So when blpapi DLL
// is rolled back to the previous versions, blpapi DLL still can be loaded.
// We only support dispatchtbl on windows currently
#if defined(_WIN32) || defined(__WIN32__)
#include <blpapi_defs.h>
#include <blpapi_correlationid.h>
#include <blpapi_streamproxy.h>
#include <blpapi_types.h>
#include <blpapi_versionmacros.h>
#include <stddef.h>
#ifdef __cplusplus
#ifndef BLPAPI_MIN_VERSION
#define BLPAPI_MIN_VERSION BLPAPI_SDK_VERSION
#endif
#ifndef BLPAPI_TARGET_VERSION
#define BLPAPI_TARGET_VERSION BLPAPI_SDK_VERSION
#endif
#if BLPAPI_MIN_VERSION > BLPAPI_TARGET_VERSION
#error "Min required version cannot be greater than target version"
#endif
extern "C" {
// Forward declarations
struct blpapi_EventFormatter;
typedef struct blpapi_EventFormatter blpapi_EventFormat_t;
struct blpapi_Topic;
typedef struct blpapi_Topic blpapi_Topic_t;
struct blpapi_Message;
typedef struct blpapi_Message blpapi_Message_t;
struct blpapi_Request;
typedef struct blpapi_Request blpapi_Request_t;
struct blpapi_HighPrecisionDatetime_tag;
typedef struct blpapi_HighPrecisionDatetime_tag blpapi_HighPrecisionDatetime_t;
struct blpapi_TimePoint;
typedef struct blpapi_TimePoint blpapi_TimePoint_t;
struct blpapi_SubscriptionList;
typedef struct blpapi_SubscriptionList blpapi_SubscriptionList_t;
struct blpapi_ServiceRegistrationOptions;
typedef struct blpapi_ServiceRegistrationOptions
blpapi_ServiceRegistrationOptions_t;
// End Forward declarations
// Function dispatch table declaration
typedef struct blpapi_FunctionEntries {
int (*blpapi_EventFormatter_appendMessageSeq)(
blpapi_EventFormatter_t* formatter,
char const* typeString,
blpapi_Name_t* typeName,
const blpapi_Topic_t* topic,
unsigned int sequenceNumber,
unsigned int);
int (*blpapi_EventFormatter_appendRecapMessageSeq)(
blpapi_EventFormatter_t* formatter,
const blpapi_Topic_t *topic,
const blpapi_CorrelationId_t *cid,
unsigned int sequenceNumber,
unsigned int);
int (*blpapi_Message_addRef)(
const blpapi_Message_t* message);
int (*blpapi_Message_release)(
const blpapi_Message_t* message);
void (*blpapi_SessionOptions_setMaxEventQueueSize)(
blpapi_SessionOptions_t *parameters,
size_t maxEventQueueSize);
int (*blpapi_SessionOptions_setSlowConsumerWarningHiWaterMark)(
blpapi_SessionOptions_t *parameters,
float hiWaterMark);
int (*blpapi_SessionOptions_setSlowConsumerWarningLoWaterMark)(
blpapi_SessionOptions_t *parameters,
float loWaterMark);
void (*blpapi_Request_setPreferredRoute)(
blpapi_Request_t *request,
blpapi_CorrelationId_t *correlationId);
int (*blpapi_Message_fragmentType)(
const blpapi_Message_t *message);
size_t (*blpapi_SessionOptions_maxEventQueueSize)(
blpapi_SessionOptions_t *parameters);
float (*blpapi_SessionOptions_slowConsumerWarningHiWaterMark)(
blpapi_SessionOptions_t *parameters);
float (*blpapi_SessionOptions_slowConsumerWarningLoWaterMark)(
blpapi_SessionOptions_t *parameters);
int (*blpapi_SessionOptions_setDefaultKeepAliveInactivityTime)(
blpapi_SessionOptions_t *parameters,
int inactivityTime);
int (*blpapi_SessionOptions_setDefaultKeepAliveResponseTimeout)(
blpapi_SessionOptions_t *parameters,
int responseTimeout);
int (*blpapi_SessionOptions_defaultKeepAliveInactivityTime)(
blpapi_SessionOptions_t *parameters);
int (*blpapi_SessionOptions_defaultKeepAliveResponseTimeout)(
blpapi_SessionOptions_t *parameters);
int (*blpapi_HighPrecisionDatetime_compare)(
const blpapi_HighPrecisionDatetime_t*,
const blpapi_HighPrecisionDatetime_t*);
int (*blpapi_HighPrecisionDatetime_print)(
const blpapi_HighPrecisionDatetime_t*,
blpapi_StreamWriter_t,
void*,
int,
int);
int (*blpapi_Element_getValueAsHighPrecisionDatetime)(
const blpapi_Element_t*,
blpapi_HighPrecisionDatetime_t*,
size_t);
int (*blpapi_Element_setValueHighPrecisionDatetime)(
blpapi_Element_t*,
const blpapi_HighPrecisionDatetime_t*,
size_t);
int (*blpapi_Element_setElementHighPrecisionDatetime)(
blpapi_Element_t*,
const char*,
const blpapi_Name_t*,
const blpapi_HighPrecisionDatetime_t*);
int (*blpapi_Session_resubscribeWithId)(
blpapi_Session_t*,
const blpapi_SubscriptionList_t*,
int,
const char*,
int);
int (*blpapi_EventFormatter_setValueNull)(
blpapi_EventFormatter_t *,
const char *,
const blpapi_Name_t *);
int (*blpapi_DiagnosticsUtil_memoryInfo)(
char *,
size_t);
int (*blpapi_SessionOptions_setKeepAliveEnabled)(
blpapi_SessionOptions_t *,
int);
int (*blpapi_SessionOptions_keepAliveEnabled)(
blpapi_SessionOptions_t *);
int (*blpapi_SubscriptionList_addResolved)(
blpapi_SubscriptionList_t *,
const char *,
const blpapi_CorrelationId_t *);
int (*blpapi_SubscriptionList_isResolvedAt)(
blpapi_SubscriptionList_t *,
int *,
size_t);
int (*blpapi_ProviderSession_deregisterService)(
blpapi_ProviderSession_t *session,
const char* serviceName);
void (*blpapi_ServiceRegistrationOptions_setPartsToRegister)(
blpapi_ServiceRegistrationOptions_t *session,
int parts);
int (*blpapi_ServiceRegistrationOptions_getPartsToRegister)(
blpapi_ServiceRegistrationOptions_t *session);
int (*blpapi_ProviderSession_deleteTopics)(
blpapi_ProviderSession_t* session,
const blpapi_Topic_t** topics,
size_t numTopics);
int (*blpapi_ProviderSession_activateSubServiceCodeRange)(
blpapi_ProviderSession_t *session,
const char* serviceName,
int begin,
int end,
int priority);
int (*blpapi_ProviderSession_deactivateSubServiceCodeRange)(
blpapi_ProviderSession_t *session,
const char* serviceName,
int begin,
int end);
int (*blpapi_ServiceRegistrationOptions_addActiveSubServiceCodeRange)(
blpapi_ServiceRegistrationOptions_t *parameters,
int start,
int end,
int priority);
void
(*blpapi_ServiceRegistrationOptions_removeAllActiveSubServiceCodeRanges)(
blpapi_ServiceRegistrationOptions_t *parameters);
void (*blpapi_Logging_logTestMessage)(
blpapi_Logging_Severity_t severity);
const char *(*blpapi_getVersionIdentifier)();
int (*blpapi_Message_timeReceived)(
const blpapi_Message_t *message,
blpapi_TimePoint_t *timeReceived);
int (*blpapi_SessionOptions_recordSubscriptionDataReceiveTimes)(
blpapi_SessionOptions_t *parameters);
void (*blpapi_SessionOptions_setRecordSubscriptionDataReceiveTimes)(
blpapi_SessionOptions_t *parameters,
int shouldRecord);
long long (*blpapi_TimePointUtil_nanosecondsBetween)(
const blpapi_TimePoint_t *start,
const blpapi_TimePoint_t *end);
int (*blpapi_HighResolutionClock_now)(
blpapi_TimePoint_t *timePoint);
int (*blpapi_HighPrecisionDatetime_fromTimePoint)(
blpapi_HighPrecisionDatetime_t *datetime,
const blpapi_TimePoint_t *timePoint,
short offset);
} blpapi_FunctionEntries_t;
BLPAPI_EXPORT extern size_t g_blpapiFunctionTableSize;
BLPAPI_EXPORT extern blpapi_FunctionEntries_t g_blpapiFunctionEntries;
} // extern "C"
#endif // __cplusplus
#endif // if defined(_WIN32) || defined(__WIN32__)
#endif // INCLUDED_BLPAPI_DISPATCHTBL