diff --git a/src/framework/luafunctions.cpp b/src/framework/luafunctions.cpp index 881efdb6..0b542322 100644 --- a/src/framework/luafunctions.cpp +++ b/src/framework/luafunctions.cpp @@ -814,6 +814,7 @@ void Application::registerLuaFunctions() // OutputMessage g_lua.registerClass(); g_lua.bindClassStaticFunction("create", []{ return OutputMessagePtr(new OutputMessage); }); + g_lua.bindClassMemberFunction("setBuffer", &OutputMessage::setBuffer); g_lua.bindClassMemberFunction("getBuffer", &OutputMessage::getBuffer); g_lua.bindClassMemberFunction("reset", &OutputMessage::reset); g_lua.bindClassMemberFunction("addU8", &OutputMessage::addU8); diff --git a/src/framework/net/outputmessage.cpp b/src/framework/net/outputmessage.cpp index 776d317b..d7a573c5 100644 --- a/src/framework/net/outputmessage.cpp +++ b/src/framework/net/outputmessage.cpp @@ -35,6 +35,16 @@ void OutputMessage::reset() m_messageSize = 0; } +void OutputMessage::setBuffer(const std::string& buffer) +{ + int len = buffer.size(); + checkWrite(MAX_HEADER_SIZE + len); + memcpy(m_buffer + MAX_HEADER_SIZE, buffer.c_str(), len); + m_writePos = MAX_HEADER_SIZE; + m_headerPos = MAX_HEADER_SIZE; + m_messageSize = len; +} + void OutputMessage::addU8(uint8 value) { checkWrite(1); diff --git a/src/framework/net/outputmessage.h b/src/framework/net/outputmessage.h index c05fac3e..da7afdff 100644 --- a/src/framework/net/outputmessage.h +++ b/src/framework/net/outputmessage.h @@ -40,6 +40,7 @@ public: void reset(); + void setBuffer(const std::string& buffer); std::string getBuffer() { return std::string((char*)m_buffer + m_headerPos, m_messageSize); } void addU8(uint8 value);