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);
152int blpapi_Message_numCorrelationIds(
const blpapi_Message_t *message);
165blpapi_CorrelationId_t blpapi_Message_correlationId(
166 const blpapi_Message_t *message,
size_t index);
181int blpapi_Message_getRequestId(
182 const blpapi_Message_t *message,
const char **requestId);
193blpapi_Element_t *blpapi_Message_elements(
const blpapi_Message_t *message);
209const char *blpapi_Message_privateData(
210 const blpapi_Message_t *message,
size_t *size);
224int blpapi_Message_fragmentType(
const blpapi_Message_t *message);
238int blpapi_Message_recapType(
const blpapi_Message_t *message);
258int blpapi_Message_print(
const blpapi_Message_t *message,
259 blpapi_StreamWriter_t streamWriter,
277int blpapi_Message_addRef(
const blpapi_Message_t *message);
292int blpapi_Message_release(
const blpapi_Message_t *message);
309int blpapi_Message_timeReceived(
310 const blpapi_Message_t *message, blpapi_TimePoint_t *timeReceived);
346 blpapi_Message_t *d_handle;
394 explicit Message(blpapi_Message_t *handle,
bool clonable =
false);
436 BLPAPI_DEPRECATE_MESSAGE_TOPIC_NAME
const char *
topicName()
const;
494 bool hasElement(
const Name& name,
bool excludeNullElements =
false)
const;
500 const char *name,
bool excludeNullElements =
false)
const;
520 const char *name)
const;
557 const char *name)
const;
570 const char *name)
const;
583 const char *name)
const;
596 const char *name)
const;
609 const char *name)
const;
622 const char *name)
const;
653 std::string
toJson()
const;
694 std::ostream& stream,
int level = 0,
int spacesPerLevel = 4)
const;
709 const blpapi_Message_t *impl()
const;
714 blpapi_Message_t *impl();
725std::ostream&
operator<<(std::ostream& stream,
const Message& message);
768 , d_isCloned(clonable)
771 d_elements =
Element(blpapi_Message_elements(handle));
776 : d_handle(original.d_handle)
777 , d_elements(original.d_elements)
781 BLPAPI_CALL_MESSAGE_ADDREF(d_handle);
787 if (d_isCloned && d_handle) {
788 BLPAPI_CALL_MESSAGE_RELEASE(d_handle);
799 if (d_isCloned && (d_handle == rhs.d_handle)) {
803 if (d_isCloned && d_handle) {
804 BLPAPI_CALL_MESSAGE_RELEASE(d_handle);
806 d_handle = rhs.d_handle;
807 d_elements = rhs.d_elements;
811 BLPAPI_CALL_MESSAGE_ADDREF(d_handle);
820 return Name(blpapi_Message_messageType(d_handle));
825 return blpapi_Message_topicName(d_handle);
830 return Service(blpapi_Message_service(d_handle));
835 return blpapi_Message_numCorrelationIds(d_handle);
842 return CorrelationId(blpapi_Message_correlationId(d_handle, index));
846 const char *name,
bool excludeNullElements)
const
848 return d_elements.hasElement(
Name(name), excludeNullElements);
852 const Name& name,
bool excludeNullElements)
const
854 return d_elements.hasElement(name, excludeNullElements);
871 return d_elements.getElementAsBool(name);
876 return d_elements.getElementAsBool(
Name(name));
881 return d_elements.getElementAsChar(name);
886 return d_elements.getElementAsChar(
Name(name));
891 return d_elements.getElementAsInt32(name);
896 return d_elements.getElementAsInt32(
Name(name));
901 return d_elements.getElementAsInt64(name);
906 return d_elements.getElementAsInt64(
Name(name));
911 return d_elements.getElementAsFloat32(name);
916 return d_elements.getElementAsFloat32(
Name(name));
921 return d_elements.getElementAsFloat64(name);
926 return d_elements.getElementAsFloat64(
Name(name));
931 return d_elements.getElementAsDatetime(name);
936 return d_elements.getElementAsDatetime(
Name(name));
941 return d_elements.getElementAsString(name);
946 return d_elements.getElementAsString(
Name(name));
951 return d_elements.getElementAsBytes(name);
956 const char *requestId = 0;
957 BLPAPI_CALL(blpapi_Message_getRequestId)(d_handle, &requestId);
967 return blpapi_Message_privateData(d_handle, size);
978 BLPAPI_CALL(blpapi_Message_recapType)(d_handle));
983 return BLPAPI_CALL_MESSAGE_TIMERECEIVED(d_handle, timestamp);
987 std::ostream& stream,
int level,
int spacesPerLevel)
const
989 if (BLPAPI_CALL_AVAILABLE(blpapi_Message_print)) {
990 BLPAPI_CALL(blpapi_Message_print)
998 return d_elements.print(stream, level, spacesPerLevel);
1004 return message.
print(stream, 0, -1);
1008inline const blpapi_Message_t *Message::impl()
const {
return d_handle; }
1010inline blpapi_Message_t *Message::impl() {
return d_handle; }
1020 return "FRAGMENT_NONE";
1022 return "FRAGMENT_START";
1024 return "FRAGMENT_INTERMEDIATE";
1026 return "FRAGMENT_END";
1037 switch (recapType) {
1041 return "e_solicited";
1043 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:344
Service service() const
Definition blpapi_message.h:828
Fragment
Definition blpapi_message.h:354
@ FRAGMENT_END
the last fragmented message
Definition blpapi_message.h:362
@ FRAGMENT_NONE
message is not fragmented
Definition blpapi_message.h:356
@ FRAGMENT_INTERMEDIATE
intermediate fragmented messages
Definition blpapi_message.h:360
@ FRAGMENT_START
the first fragmented message
Definition blpapi_message.h:358
Bytes getElementAsBytes(const Name &name) const
Definition blpapi_message.h:949
Message & operator=(const Message &rhs)
Definition blpapi_message.h:792
const char * getElementAsString(const Name &name) const
Definition blpapi_message.h:939
const Element getElement(const Name &name) const
Definition blpapi_message.h:859
const Element asElement() const
Definition blpapi_message.h:961
int timeReceived(TimePoint *timestamp) const
Definition blpapi_message.h:981
const char * topicName() const
Definition blpapi_message.h:823
CorrelationId correlationId(size_t index=0) const
Definition blpapi_message.h:838
const char * getPrivateData(size_t *size) const
Definition blpapi_message.h:965
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_message.h:986
int numCorrelationIds() const
Definition blpapi_message.h:833
~Message()
Definition blpapi_message.h:785
Message(const Message &original)
Definition blpapi_message.h:766
bool hasElement(const Name &name, bool excludeNullElements=false) const
Definition blpapi_message.h:851
Name messageType() const
Definition blpapi_message.h:818
std::string toJson() const
Definition blpapi_message.h:963
Fragment fragmentType() const
Definition blpapi_message.h:970
Int64 getElementAsInt64(const Name &name) const
Definition blpapi_message.h:899
RecapType::Type recapType() const
Definition blpapi_message.h:975
char getElementAsChar(const Name &name) const
Definition blpapi_message.h:879
const char * getRequestId() const
Definition blpapi_message.h:954
Float32 getElementAsFloat32(const Name &name) const
Definition blpapi_message.h:909
Datetime getElementAsDatetime(const Name &name) const
Definition blpapi_message.h:929
bool getElementAsBool(const Name &name) const
Definition blpapi_message.h:869
Int32 getElementAsInt32(const Name &name) const
Definition blpapi_message.h:889
Float64 getElementAsFloat64(const Name &name) const
Definition blpapi_message.h:919
size_t numElements() const
Definition blpapi_message.h:857
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:379
Type
Definition blpapi_message.h:380
@ e_unsolicited
generated at discretion of the service
Definition blpapi_message.h:385
@ e_solicited
generated on request by subscriber
Definition blpapi_message.h:383
@ e_none
normal data tick; not a recap
Definition blpapi_message.h:381
static int writeToStream(const char *data, int length, void *stream)
Definition blpapi_streamproxy.h:108