43 template <
typename SbeMessageType>
47 return SbeMessageType(data, length, version);
51 inline static const char*
name() noexcept
53 return "FieldsInitPolicy";
61 template <
typename SbeMessageType>
65 return SbeMessageType(
70 inline static const char*
name() noexcept
72 return "FieldsNoInitPolicy";
81 std::is_base_of<TagBased::Message, MessageType>::value
85template <
typename MessageType>
90 std::is_base_of<TagBased::Message, MessageType>::value));
99 SbeType::EncodedLength
108 : MessageType(
SbeType(data, length, version))
117 : MessageType(
SbeType(data, length, version))
125 : MessageType(
SbeType(data, length))
145template <
typename MessageType>
150 std::is_base_of<SbeMessage, MessageType>::value));
157 SbeType::EncodedLength
166 : MessageType(data, length, version)
175 : MessageType(data, length, version)
183 : MessageType(data, length)
203template <
typename,
size_t,
typename>
206 template <
typename,
size_t,
typename>
class HolderType,
208 size_t MaxMessageSize,
209 typename MessageInitializer>
212 const HolderType<MsgType, MaxMessageSize, MessageInitializer>& holder)
214 str +=
"MessageHolder[";
216 str +=
"BufferSize=";
217 toStr(str, holder.BufferSize);
219 str +=
", MessageInitializer=";
220 str += MessageInitializer::name();
223 toStr(str, *holder.header());
226 toStr(str, holder.message());
241 typename MessageTypeT,
242 size_t MaxMessageSize =
249 static_assert((MaxMessageSize >=
sizeof(
MessageHeader)),
"MaxMessageSize template parameter is too small");
251 static_assert((MaxMessageSize <=
MaxSbeMessageSize),
"The buffer is too large.");
285 const unsigned char*
buffer() const noexcept
353 message().calculateBinarySize();
355 assert(calculatedMessageSize <= MaxMessageSize);
358 calculatedMessageSize >=
359 SbeType::blockLength(
message().version()) +
361 SbeType::getMinimalVariableFieldsSize(
message().version()));
364 return calculatedMessageSize;
388#ifdef ONIXS_ICEBOE_MEMCHECK_DEBUG
393 message_ = MessageInitializer::template createMessage<MessageType>(
402 void copyFrom(
const MessageHolder& r)
404#ifdef ONIXS_ICEBOE_MEMCHECK_DEBUG
405 std::memset(buffer_, magicDebugValue, BufferSize);
408 const size_t sizeToCopy = r.message_.MessageType::calculateBinarySize() +
sizeof(SimpleOpenFramingHeader);
410 assert(r.message_.calculateBinarySize() <= MaxMessageSize);
412 std::memcpy(buffer_, r.buffer_, sizeToCopy);
414 message_ = MessageType(buffer_ +
sizeof(SimpleOpenFramingHeader), MaxMessageSize, SbeMessage::NoInit{}, SbeMessage::NoCheck{});
418 MessageType message_;
419 unsigned char buffer_[BufferSize];
423 template <
typename,
size_t,
typename>
class HolderType,
425 size_t MaxMessageSize,
426 typename MessageInitializer>
428 const HolderType<MsgType, MaxMessageSize, MessageInitializer>& holder)
436 template <
typename,
size_t,
typename>
class HolderType,
438 size_t MaxMessageSize,
439 typename MessageInitializer>
441 std::ostream& stream,
442 const HolderType<MsgType, MaxMessageSize, MessageInitializer>& rhs)
444 return stream <<
toStr(rhs);
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_BEGIN
#define ONIXS_ICEBOE_NAMESPACE_BEGIN
#define ONIXS_ICEBOE_EXPORTED_CLASS
#define ONIXS_ICEBOE_NAMESPACE_END
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_END
#define ONIXS_ICEBOE_EXPORTED
#define ONIXS_ICEBOE_NODISCARD
Contains the SimpleOpenFramingHeader, the SBE message, and the data buffer.
std::string toString() const
NetworkMessage toNetworkMessage() noexcept
MessageHolder & operator=(const MessageHolder &r)
SimpleOpenFramingHeader * header() noexcept
MessageType & message() noexcept
UInt16 messageSize() const noexcept
HeldAdapter< MessageTypeT > MessageType
const MessageType & message() const noexcept
MessageHolder(SchemaVersion version=SbeType::Schema::Version)
MessageHolder(const MessageHolder &r)
const SimpleOpenFramingHeader * header() const noexcept
const unsigned char * buffer() const noexcept
MessageSize setHeader() noexcept
Calculates the binary size of the message and updates the Simple Open Framing Header accordingly.
const MessageType * operator->() const noexcept
UInt16 bufferSize() const noexcept
MessageHolder(const Session &session)
MessageType * operator->() noexcept
constexpr char magicDebugValue
constexpr UInt8 DefaultMaxGroupItems
Default maximum number of repeating group items.
std::ostream & operator<<(std::ostream &stream, const FloatingPointDecimal< Mantissa, Exponent > &value)
Serializes into a stream.
constexpr std::enable_if<!details::HasMemberTraits< Value >::value, size_t >::type size() noexcept
MessageHeader::Version SchemaVersion
SBE-encoded data version type.
constexpr UInt16 MaxSbeMessageSize
Maximum supported message size.
std::string toStr(const FixedPointDecimal< Mantissa, Exponent > &)
Serializes a fixed-point decimal into a string.
UInt16 MessageSize
Message length type.
Messaging::SchemaVersion getMessagingVersion(const Session &) noexcept
The policy to create messages with null-initialized optional fields.
static SbeMessageType createMessage(void *data, MessageSize length, SchemaVersion version)
static const char * name() noexcept
The policy to create messages without initialized optional fields.
static SbeMessageType createMessage(void *data, MessageSize length, SchemaVersion version)
static const char * name() noexcept
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoFieldsInit, SchemaVersion version)
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoInit, SbeMessage::NoCheck) noexcept
SbeType::EncodedLength EncodedLength
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoInit)
ONIXS_ICEBOE_STATIC_ASSERT((std::is_base_of< SbeMessage, MessageType >::value))
HeldAdapter(void *data, EncodedLength length, SchemaVersion version)
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoFieldsInit, SchemaVersion version)
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoInit, SbeMessage::NoCheck) noexcept
SbeType::EncodedLength EncodedLength
HeldAdapter(void *data, EncodedLength length, SbeMessage::NoInit)
HeldAdapter(void *data, EncodedLength length, SchemaVersion version)
ONIXS_ICEBOE_STATIC_ASSERT((std::is_base_of< TagBased::Message, MessageType >::value))
MessageType::Binary SbeType