46 #if defined (ONIXS_ILINK3_CXX11) 51 template <
typename MessageTypeT,
52 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
61 using iterator =
typename MsgHolders::iterator;
96 batch_.push_back(msg);
108 netMsgs_.resize(batch_.size());
110 for (
size_t counter = 0; counter < batch_.size(); ++counter)
111 netMsgs_[counter] = batch_[counter].toNetworkMessage();
117 size_t size()
const {
return batch_.size(); }
154 template <
typename MessageTypeT,
155 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
159 netMsgs_.reserve(batch.
size());
160 for (
auto & holder : batch)
161 netMsgs_.push_back(holder.toNetworkMessage());
164 template <
typename MessageTypeT,
165 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
173 template <
typename MessageTypeT,
174 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
181 template <
typename MessageTypeT,
182 size_t MaxMessageSize = GetMaxMessageSize<typename HeldAdapter<MessageTypeT>::SbeType,
DefaultMaxGroupItems>::Size,
199 assert(!netMsgs_.empty());
200 return {&*netMsgs_.begin(), &*(netMsgs_.begin() + index)};
218 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
222 return calculateBatchSize(msgs.netMsgs_);
226 template <
typename SbeMessageType,
size_t MaxMessageSize,
typename MessageInitializer>
230 return calculateBatchSize(msgs) <=
size;
236 return calculateBatchSize(msgs.netMsgs_);
242 return calculateBatchSize(msgs) <=
size;
void clear()
Removes all combined messages.
const_iterator end() const
std::vector< NetworkMessage > NetMessages
Contains the SimpleOpenFramingHeader, the SBE message, and the data buffer.
const_iterator begin() const
std::pair< NetworkMessage *, NetworkMessage * > NetMessagesRange
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(MessageBatchCombiner &msgs) noexcept
MessageBatch(std::initializer_list< MsgHolder > list)
Creates a message batch from the initializer list.
#define ONIXS_ILINK3_EXPORTED_CLASS
NetMessagesRange getRange(size_t index) noexcept
Provides a range of messages.
MessageBatch & operator=(const MessageBatch &)=delete
static size_t calculateBatchSize(MessageBatch< SbeMessageType, MaxMessageSize, MessageInitializer > &msgs) noexcept
void add(MessageBatch< MessageTypeT, MaxMessageSize, MessageInitializer > &batch)
Adds the message batch to the array of combined messages.
const MsgHolder & operator[](size_t index) const
void add(const MsgHolder &msg)
Appends a message to the end of the batch.
typename MsgHolders::iterator iterator
constexpr UInt8 DefaultMaxGroupItems
Default maximum number of repeating group items.
std::vector< MsgHolder > MsgHolders
#define ONIXS_ILINK3_MESSAGING_NAMESPACE_END
#define ONIXS_ILINK3_EXPORTED
MessageBatch()=default
Creates an empty message batch.
MsgHolder & operator[](size_t index)
typename MsgHolders::const_iterator const_iterator
The class can be used to combine messages with different types to the batch for sending.
The policy to create messages with null-initialized optional fields.
#define ONIXS_ILINK3_MESSAGING_NAMESPACE_BEGIN
The message batch wrapper.
MessageBatch(size_t size)
Creates a message batch with the given number of default constructed messages.
void add(MessageHolder< MessageTypeT, MaxMessageSize, MessageInitializer > &holder)
Adds the message to the array of combined messages.
void updateHeaders()
Updates headers of SBE messages to be ready for sending.
#define ONIXS_ILINK3_NOTHROW
NetworkMessage toNetworkMessage() noexcept