38#ifndef INCLUDED_BLPAPI_MESSAGE
39#define INCLUDED_BLPAPI_MESSAGE
73#include <blpapi_deprecate.h>
86typedef struct blpapi_Message blpapi_Message_t;
101blpapi_Name_t *blpapi_Message_messageType(
const blpapi_Message_t *message);
114const char *blpapi_Message_typeString(
const blpapi_Message_t *message);
131const char *blpapi_Message_topicName(
const blpapi_Message_t *message);
142blpapi_Service_t *blpapi_Message_service(
const blpapi_Message_t *message);
158blpapi_Name_t *blpapi_Message_operationName(
const blpapi_Message_t *message);
168int blpapi_Message_numCorrelationIds(
const blpapi_Message_t *message);
181blpapi_CorrelationId_t blpapi_Message_correlationId(
182 const blpapi_Message_t *message,
size_t index);
197int blpapi_Message_getRequestId(
198 const blpapi_Message_t *message,
const char **requestId);
209blpapi_Element_t *blpapi_Message_elements(
const blpapi_Message_t *message);
225const char *blpapi_Message_privateData(
226 const blpapi_Message_t *message,
size_t *size);
240int blpapi_Message_fragmentType(
const blpapi_Message_t *message);
254int blpapi_Message_recapType(
const blpapi_Message_t *message);
274int blpapi_Message_print(
const blpapi_Message_t *message,
275 blpapi_StreamWriter_t streamWriter,
293int blpapi_Message_addRef(
const blpapi_Message_t *message);
308int blpapi_Message_release(
const blpapi_Message_t *message);
325int blpapi_Message_timeReceived(
326 const blpapi_Message_t *message, blpapi_TimePoint_t *timeReceived);
362 blpapi_Message_t *d_handle;
410 explicit Message(blpapi_Message_t *handle,
bool clonable =
false);
452 BLPAPI_DEPRECATE_MESSAGE_TOPIC_NAME
const char *
topicName()
const;
523 bool hasElement(
const Name& name,
bool excludeNullElements =
false)
const;
529 const char *name,
bool excludeNullElements =
false)
const;
549 const char *name)
const;
586 const char *name)
const;
599 const char *name)
const;
612 const char *name)
const;
625 const char *name)
const;
638 const char *name)
const;
651 const char *name)
const;
682 std::string
toJson()
const;
723 std::ostream& stream,
int level = 0,
int spacesPerLevel = 4)
const;
738 const blpapi_Message_t *impl()
const;
743 blpapi_Message_t *impl();
754std::ostream&
operator<<(std::ostream& stream,
const Message& message);
797 , d_isCloned(clonable)
800 d_elements =
Element(blpapi_Message_elements(handle));
805 : d_handle(original.d_handle)
806 , d_elements(original.d_elements)
810 BLPAPI_CALL_MESSAGE_ADDREF(d_handle);
816 if (d_isCloned && d_handle) {
817 BLPAPI_CALL_MESSAGE_RELEASE(d_handle);
828 if (d_isCloned && (d_handle == rhs.d_handle)) {
832 if (d_isCloned && d_handle) {
833 BLPAPI_CALL_MESSAGE_RELEASE(d_handle);
835 d_handle = rhs.d_handle;
836 d_elements = rhs.d_elements;
840 BLPAPI_CALL_MESSAGE_ADDREF(d_handle);
849 return Name(blpapi_Message_messageType(d_handle));
854 return blpapi_Message_topicName(d_handle);
859 return Service(blpapi_Message_service(d_handle));
864 blpapi_Name_t *name = BLPAPI_CALL(blpapi_Message_operationName)(d_handle);
870 return blpapi_Message_numCorrelationIds(d_handle);
877 return CorrelationId(blpapi_Message_correlationId(d_handle, index));
881 const char *name,
bool excludeNullElements)
const
883 return d_elements.hasElement(
Name(name), excludeNullElements);
887 const Name& name,
bool excludeNullElements)
const
889 return d_elements.hasElement(name, excludeNullElements);
906 return d_elements.getElementAsBool(name);
911 return d_elements.getElementAsBool(
Name(name));
916 return d_elements.getElementAsChar(name);
921 return d_elements.getElementAsChar(
Name(name));
926 return d_elements.getElementAsInt32(name);
931 return d_elements.getElementAsInt32(
Name(name));
936 return d_elements.getElementAsInt64(name);
941 return d_elements.getElementAsInt64(
Name(name));
946 return d_elements.getElementAsFloat32(name);
951 return d_elements.getElementAsFloat32(
Name(name));
956 return d_elements.getElementAsFloat64(name);
961 return d_elements.getElementAsFloat64(
Name(name));
966 return d_elements.getElementAsDatetime(name);
971 return d_elements.getElementAsDatetime(
Name(name));
976 return d_elements.getElementAsString(name);
981 return d_elements.getElementAsString(
Name(name));
986 return d_elements.getElementAsBytes(name);
991 const char *requestId = 0;
992 BLPAPI_CALL(blpapi_Message_getRequestId)(d_handle, &requestId);
1002 return blpapi_Message_privateData(d_handle, size);
1013 BLPAPI_CALL(blpapi_Message_recapType)(d_handle));
1018 return BLPAPI_CALL_MESSAGE_TIMERECEIVED(d_handle, timestamp);
1022 std::ostream& stream,
int level,
int spacesPerLevel)
const
1024 if (BLPAPI_CALL_AVAILABLE(blpapi_Message_print)) {
1025 BLPAPI_CALL(blpapi_Message_print)
1033 return d_elements.print(stream, level, spacesPerLevel);
1039 return message.
print(stream, 0, -1);
1043inline const blpapi_Message_t *Message::impl()
const {
return d_handle; }
1045inline blpapi_Message_t *Message::impl() {
return d_handle; }
1055 return "FRAGMENT_NONE";
1057 return "FRAGMENT_START";
1059 return "FRAGMENT_INTERMEDIATE";
1061 return "FRAGMENT_END";
1072 switch (recapType) {
1076 return "e_solicited";
1078 return "e_unsolicited";
Provide functions for dispatchtbl.
Provide a key to identify individual subscriptions or requests.
Common definitions used by the library.
Provide a representation of an item in a message.
Provide a representation of strings for use as container keys.
A service which provides access to API data (provide or consume).
A signature for callback on print and default C++ implementation.
Provide a time point with respect to an epoch.
Definition blpapi_types.h:395
Definition blpapi_correlationid.h:322
Definition blpapi_datetime.h:315
Definition blpapi_element.h:1098
int getElement(Element *result, const char *name) const
Definition blpapi_element.h:2565
std::string toJson() const
Definition blpapi_element.h:2995
Definition blpapi_exception.h:301
Definition blpapi_message.h:360
Service service() const
Definition blpapi_message.h:857
Fragment
Definition blpapi_message.h:370
@ FRAGMENT_END
the last fragmented message
Definition blpapi_message.h:378
@ FRAGMENT_NONE
message is not fragmented
Definition blpapi_message.h:372
@ FRAGMENT_INTERMEDIATE
intermediate fragmented messages
Definition blpapi_message.h:376
@ FRAGMENT_START
the first fragmented message
Definition blpapi_message.h:374
Bytes getElementAsBytes(const Name &name) const
Definition blpapi_message.h:984
Message & operator=(const Message &rhs)
Definition blpapi_message.h:821
const char * getElementAsString(const Name &name) const
Definition blpapi_message.h:974
const Element getElement(const Name &name) const
Definition blpapi_message.h:894
const Element asElement() const
Definition blpapi_message.h:996
int timeReceived(TimePoint *timestamp) const
Definition blpapi_message.h:1016
const char * topicName() const
Definition blpapi_message.h:852
CorrelationId correlationId(size_t index=0) const
Definition blpapi_message.h:873
const char * getPrivateData(size_t *size) const
Definition blpapi_message.h:1000
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_message.h:1021
int numCorrelationIds() const
Definition blpapi_message.h:868
~Message()
Definition blpapi_message.h:814
Message(const Message &original)
Definition blpapi_message.h:795
Name operationName() const
Definition blpapi_message.h:862
bool hasElement(const Name &name, bool excludeNullElements=false) const
Definition blpapi_message.h:886
Name messageType() const
Definition blpapi_message.h:847
std::string toJson() const
Definition blpapi_message.h:998
Fragment fragmentType() const
Definition blpapi_message.h:1005
Int64 getElementAsInt64(const Name &name) const
Definition blpapi_message.h:934
RecapType::Type recapType() const
Definition blpapi_message.h:1010
char getElementAsChar(const Name &name) const
Definition blpapi_message.h:914
const char * getRequestId() const
Definition blpapi_message.h:989
Float32 getElementAsFloat32(const Name &name) const
Definition blpapi_message.h:944
Datetime getElementAsDatetime(const Name &name) const
Definition blpapi_message.h:964
bool getElementAsBool(const Name &name) const
Definition blpapi_message.h:904
Int32 getElementAsInt32(const Name &name) const
Definition blpapi_message.h:924
Float64 getElementAsFloat64(const Name &name) const
Definition blpapi_message.h:954
size_t numElements() const
Definition blpapi_message.h:892
Definition blpapi_name.h:228
Definition blpapi_service.h:616
constexpr const char * to_string(CorrelationId::ValueType valueType)
Definition blpapi_correlationid.h:830
blpapi_TimePoint_t TimePoint
Time point type alias.
Definition blpapi_timepoint.h:162
Definition blpapi_abstractsession.h:448
blpapi_Float64_t Float64
64-bit IEEE 754 float type alias.
Definition blpapi_types.h:559
blpapi_Float32_t Float32
32-bit IEEE 754 float type alias.
Definition blpapi_types.h:558
blpapi_Int64_t Int64
64-bit signed integer type alias.
Definition blpapi_types.h:556
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:792
blpapi_Int32_t Int32
32-bit signed integer type alias.
Definition blpapi_types.h:554
Definition blpapi_abstractsession.h:447
Definition blpapi_message.h:395
Type
Definition blpapi_message.h:396
@ e_unsolicited
generated at discretion of the service
Definition blpapi_message.h:401
@ e_solicited
generated on request by subscriber
Definition blpapi_message.h:399
@ e_none
normal data tick; not a recap
Definition blpapi_message.h:397
static int writeToStream(const char *data, int length, void *stream)
Definition blpapi_streamproxy.h:108