diff --git a/include/sp/io/IOInterfaceImpl.inl b/include/sp/io/IOInterfaceImpl.inl index 5aabee2..12e153b 100644 --- a/include/sp/io/IOInterfaceImpl.inl +++ b/include/sp/io/IOInterfaceImpl.inl @@ -48,11 +48,12 @@ Stream::Stream( template void Stream::SendMessage(const MessageBase& a_Message) { DataBuffer data = a_Message.Write(); - DataBuffer encapsulated = std::apply([&data](const auto&... a_Options) { - return Encapsulate(data, a_Options...); + TupleForEach([&data](const auto&... a_Options) { + data = Encapsulate(data, a_Options...); }, m_Options); DataBuffer finalData; - finalData << VarInt{encapsulated.GetSize()} << encapsulated; + finalData.Reserve(data.GetSize() + sizeof(VarInt::MAX_VALUE)); + finalData << VarInt{data.GetSize()} << data; m_Interface.Write(finalData); } @@ -93,8 +94,8 @@ void Stream::RecieveMessa DataBuffer buffer; buffer = m_Interface.Read(lenghtValue); - buffer = std::apply([&buffer, lenghtValue](const auto&... a_Options) { - return Decapsulate(buffer, a_Options...); + TupleForEach([&buffer, lenghtValue](const auto&... a_Options) { + buffer = Decapsulate(buffer, a_Options...); }, m_Options); VarInt packetType;