2 Commits

Author SHA1 Message Date
d501c0181d fix encapsulate/decapsulated
All checks were successful
Linux arm64 / Build (push) Successful in 14s
2025-03-04 10:59:18 +01:00
680f72f881 emplace instead of push 2025-03-03 22:55:17 +01:00
2 changed files with 7 additions and 6 deletions

View File

@@ -48,11 +48,12 @@ Stream<IOTag, MessageDispatcher, MessageFactory, TOptions...>::Stream(
template <typename IOTag, typename MessageDispatcher, typename MessageFactory, typename... TOptions> template <typename IOTag, typename MessageDispatcher, typename MessageFactory, typename... TOptions>
void Stream<IOTag, MessageDispatcher, MessageFactory, TOptions...>::SendMessage(const MessageBase& a_Message) { void Stream<IOTag, MessageDispatcher, MessageFactory, TOptions...>::SendMessage(const MessageBase& a_Message) {
DataBuffer data = a_Message.Write(); DataBuffer data = a_Message.Write();
DataBuffer encapsulated = std::apply([&data](const auto&... a_Options) { TupleForEach([&data](const auto&... a_Options) {
return Encapsulate(data, a_Options...); data = Encapsulate(data, a_Options...);
}, m_Options); }, m_Options);
DataBuffer finalData; DataBuffer finalData;
finalData << VarInt{encapsulated.GetSize()} << encapsulated; finalData.Reserve(data.GetSize() + sizeof(VarInt::MAX_VALUE));
finalData << VarInt{data.GetSize()} << data;
m_Interface.Write(finalData); m_Interface.Write(finalData);
} }
@@ -93,8 +94,8 @@ void Stream<IOTag, MessageDispatcher, MessageFactory, TOptions...>::RecieveMessa
DataBuffer buffer; DataBuffer buffer;
buffer = m_Interface.Read(lenghtValue); buffer = m_Interface.Read(lenghtValue);
buffer = std::apply([&buffer, lenghtValue](const auto&... a_Options) { TupleForEach([&buffer, lenghtValue](const auto&... a_Options) {
return Decapsulate(buffer, a_Options...); buffer = Decapsulate(buffer, a_Options...);
}, m_Options); }, m_Options);
VarInt packetType; VarInt packetType;

View File

@@ -31,7 +31,7 @@ struct ArrayFiller<TBase, TMessage, TMessages...> {
template <typename TBase, typename TMessage> template <typename TBase, typename TMessage>
struct ArrayFiller<TBase, TMessage> { struct ArrayFiller<TBase, TMessage> {
static void ArrayAppend(details::ArrayType<TBase>& array) { static void ArrayAppend(details::ArrayType<TBase>& array) {
array.push_back([]() -> std::unique_ptr<TBase> { return std::make_unique<TMessage>(); }); array.emplace_back([]() -> std::unique_ptr<TBase> { return std::make_unique<TMessage>(); });
} }
}; };