58 #ifdef USE_DEFAULT_CONSTRUCTOR_ 78 const std::string& magicString,
79 size_t memPoolMsgCount = 0,
80 size_t defaultMsgSize = udp::DEFAULT_UDP_BUF_SIZE);
88 #ifdef USE_EXPLICIT_MOVE_ 121 void InitialiseMsgPool(
size_t memPoolMsgCount,
size_t defaultMsgSize);
131 #ifdef USE_DEFAULT_CONSTRUCTOR_ 133 std::string m_magicString;
138 mutable size_t m_msgPoolIndex{0};
139 std::vector<defs::default_received_message_ptr_t> m_msgPool;
159 void CORE_LIBRARY_DLL_SHARED_API
FillHeader(
const std::string& magicString,
178 BOOST_THROW_EXCEPTION(std::invalid_argument(
"unknown archive type"));
271 #ifdef USE_DEFAULT_CONSTRUCTOR_ 289 #ifdef USE_EXPLICIT_MOVE_ 334 Build(
const void* message,
size_t messageLength, int32_t messageId,
351 template <
typename T,
typename A>
356 serialize::ToCharVector<T, A>(message, m_serialisationBuffer);
358 if (m_serialisationBuffer.empty())
360 BOOST_THROW_EXCEPTION(std::runtime_error(
"cannot serialize message"));
365 m_messageBuffer.resize(totalLength);
375 static_cast<uint32_t>(m_serialisationBuffer.size()),
379 std::copy(m_serialisationBuffer.begin(), m_serialisationBuffer.end(), writePosIter);
381 return m_messageBuffer;
385 #ifdef USE_DEFAULT_CONSTRUCTOR_ 387 std::string m_magicString;
410 template <
typename MsgBldr>
417 return messageBuilder.Build(messageId, responseConn);
434 template <
typename MsgBldr>
438 const MsgBldr& messageBuilder)
442 return messageBuilder.Build(message, messageId, responseConn);
460 template <
typename T,
typename A,
typename MsgBldr>
467 return messageBuilder.template Build<T, A>(message, messageId, responseConn);
476 template <
typename T>
485 return serialize::ToObject<T, serialize::archives::in_bin_t>(messageBuffer);
487 return serialize::ToObject<T, serialize::archives::in_port_bin_t>(messageBuffer);
492 return serialize::ToObject<T, serialize::archives::in_json_t>(messageBuffer);
494 return serialize::ToObject<T, serialize::archives::in_xml_t>(messageBuffer);
510 return serialize::ToObject<T, serialize::archives::in_raw_t>(messageBuffer);
520 return serialize::ToObject<T, serialize::archives::in_protobuf_t>(messageBuffer);
527 #endif // MESSAGEUTILS defs::default_message_dispatcher_t m_messageDispatcher
Message dispatcher function object.
Definition: MessageUtils.h:130
T DeserializeMessage(const defs::char_buffer_t &messageBuffer, defs::eArchiveType archiveType)
Templated message deserializer function for non-POD data.
Definition: MessageUtils.h:477
std::function< void(default_received_message_ptr_t)> default_message_dispatcher_t
Typedef to default message dispatcher function object.
Definition: AsioDefines.h:286
cereal::JSONOutputArchive out_json_t
Typedef to output json archive.
Definition: SerializeToVector.h:82
defs::char_buffer_t const & Build(const T &message, int32_t messageId, const defs::connection_t &responseAddress) const
Build message method for header + messaage body messages.
Definition: MessageUtils.h:352
Portable binary archive, requires Cereal serialization.
Raw data, only for POD objects.
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:243
File containing useful definitions.
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:176
Default message handler class.
Definition: MessageUtils.h:55
XML archive, requires Cereal serialization.
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:216
File containing utilities to serialize objects to byte vectors.
Binary archive, requires Cereal serialization.
JSON archive, requires Cereal serialization.
The core_lib namespace.
Definition: AsioDefines.h:59
std::shared_ptr< default_received_message_t > default_received_message_ptr_t
Typedef to default version of received message shared pointer.
Definition: AsioDefines.h:284
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:203
std::pair< std::string, uint16_t > connection_t
Typedef describing a network connection as (address, port).
Definition: AsioDefines.h:152
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:256
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:190
cereal::BinaryOutputArchive out_bin_t
Typedef to output binary archive.
Definition: SerializeToVector.h:78
void CORE_LIBRARY_DLL_SHARED_API FillHeader(const std::string &magicString, defs::eArchiveType archiveType, int32_t messageId, const defs::connection_t &responseAddress, uint32_t messageLength, defs::MessageHeader &header)
Header filler function.
Definition: MessageUtils.cpp:181
static defs::eArchiveType Enumerate()
Enumerate method.
Definition: MessageUtils.h:230
eArchiveType
Message serialization archive type enumeration.
Definition: AsioDefines.h:171
defs::char_buffer_t const & BuildMessage(int32_t messageId, const defs::connection_t &responseAddress, const defs::connection_t &fallbackResponseAddress, const MsgBldr &messageBuilder)
Message builder wrapper function for header only messages.
Definition: MessageUtils.h:412
T DeserializeProtobuf(const defs::char_buffer_t &messageBuffer)
Templated message deserializer function for Google protocol buffer data.
Definition: MessageUtils.h:518
const char DEFAULT_MAGIC_STRING[]
Constant defining default magc string as "_BEGIN_MESSAGE_".
Definition: AsioDefines.cpp:38
cereal::XMLOutputArchive out_xml_t
Typedef to output xml archive.
Definition: SerializeToVector.h:80
Default message builder class.
Definition: MessageUtils.h:268
cereal::PortableBinaryOutputArchive out_port_bin_t
Typedef to output portable binary archive.
Definition: SerializeToVector.h:76
protobuf_oarchive out_protobuf_t
Typedef to output using Google protocol buffers.
Definition: SerializeToVector.h:86
std::vector< char > char_buffer_t
Typedef to generic char buffer based on s std::vector<char>.
Definition: AsioDefines.h:239
raw_oarchive out_raw_t
Typedef to output raw archive.
Definition: SerializeToVector.h:84
const connection_t NULL_CONNECTION
Constant defining a null network connection as ("0.0.0.0", 0).
Archive type enumerator as a template class.
Definition: MessageUtils.h:170