45#if defined (ONIXS_B3_BOE_CXX11)
50template <
typename MessageTypeT,
51size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
60 using iterator =
typename MsgHolders::iterator;
95 batch_.push_back(msg);
107 netMsgs_.resize(batch_.size());
109 for (
size_t counter = 0; counter < batch_.size(); ++counter)
110 netMsgs_[counter] = batch_[counter].toNetworkMessage();
116 size_t size()
const {
return batch_.size(); }
153 template <
typename MessageTypeT,
154 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
158 for (
auto & holder : batch)
159 netMsgs_.push_back(holder.toNetworkMessage());
162 template <
typename MessageTypeT,
163 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
171 template <
typename MessageTypeT,
172 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
179 template <
typename MessageTypeT,
180 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
207 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
215 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
#define ONIXS_B3_BOE_EXPORTED_CLASS
#define ONIXS_B3_BOE_MESSAGING_NAMESPACE_END
#define ONIXS_B3_BOE_MESSAGING_NAMESPACE_BEGIN
#define ONIXS_B3_BOE_EXPORTED
#define ONIXS_B3_BOE_NOTHROW
static size_t calculateBatchSize(MessageBatchCombiner &msgs) noexcept
static bool fitSize(MessageBatchCombiner &msgs, size_t size=defaultMaxPacketSize()) noexcept
static size_t fitSize(MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs, size_t size=defaultMaxPacketSize()) noexcept
static size_t calculateBatchSize(MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs) noexcept
The class can be used to combine messages with different types to the batch for sending.
MessageBatchCombiner()=default
Creates an empty message batch combiner.
void add(MessageBatch< MessageTypeT, MaxMessageSize, MessageInitializer > &batch)
Adds the message batch to the array of combined messages.
void add(MessageBatch< MessageTypeT, MaxMessageSize, MessageInitializer > &&batch)=delete
MessageBatchCombiner & operator=(const MessageBatchCombiner &)=delete
MessageBatchCombiner(const MessageBatchCombiner &)=delete
void add(MessageHolder< MessageTypeT, MaxMessageSize, MessageInitializer > &holder)
Adds the message to the array of combined messages.
void clear()
Removes all combined messages.
void add(MessageHolder< MessageTypeT, MaxMessageSize, MessageInitializer > &&holder)=delete
The message batch wrapper.
MessageBatch(size_t size)
Creates a message batch with the given number of default constructed messages.
MessageHolder< MessageTypeT, MaxMessageSize, MessageInitializer > MsgHolder
const_iterator begin() const
void add(const MsgHolder &msg)
Appends a message to the end of the batch.
typename MsgHolders::const_iterator const_iterator
void updateHeaders()
Updates headers of SBE messages to be ready for sending.
MsgHolder & operator[](size_t index)
MessageBatch & operator=(const MessageBatch &)=delete
const MsgHolder & operator[](size_t index) const
typename MsgHolders::iterator iterator
MessageBatch(const MessageBatch &)=delete
MessageBatch()=default
Creates an empty message batch.
const_iterator end() const
std::vector< MsgHolder > MsgHolders
MessageBatch(std::initializer_list< MsgHolder > list)
Creates a message batch from the initializer list.
Contains the SimpleOpenFramingHeader, the SBE message, and the data buffer.
NetworkMessage toNetworkMessage() noexcept
constexpr UInt8 DefaultMaxGroupItems
Default maximum number of repeating group items.
std::vector< NetworkMessage > NetMessages
The policy to create messages with null-initialized optional fields.