From 8ac73cce3f9808c8fa48b280635104d9587c9c5a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 9 Sep 2015 14:51:14 +0300 Subject: Remove virtual method call from MessageOut constructor. --- src/net/eathena/chathandler.cpp | 9 +++++++-- src/net/eathena/messageout.cpp | 5 +---- src/net/eathena/messageout.h | 3 +-- src/net/messageout.h | 3 ++- src/net/tmwa/chathandler.cpp | 8 ++++++-- src/net/tmwa/loginhandler.cpp | 2 ++ src/net/tmwa/messageout.cpp | 5 +---- src/net/tmwa/messageout.h | 3 +-- 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp index c3f8bf039..da32981dd 100644 --- a/src/net/eathena/chathandler.cpp +++ b/src/net/eathena/chathandler.cpp @@ -106,13 +106,18 @@ void ChatHandler::sendRaw(const std::string &args) const if (pos != std::string::npos) { str = line.substr(0, pos); - outMsg = new MessageOut(static_cast(parseNumber(str))); + + const int16_t id = static_cast(parseNumber(str)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); line = line.substr(pos + 1); pos = line.find(" "); } else { - outMsg = new MessageOut(static_cast(parseNumber(line))); + const int16_t id = static_cast(parseNumber(line)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); delete outMsg; return; } diff --git a/src/net/eathena/messageout.cpp b/src/net/eathena/messageout.cpp index 8ecf8e863..0e42bec28 100644 --- a/src/net/eathena/messageout.cpp +++ b/src/net/eathena/messageout.cpp @@ -35,15 +35,12 @@ namespace EAthena { -MessageOut::MessageOut(const int16_t id, const char *const str) : +MessageOut::MessageOut(const int16_t id) : Net::MessageOut(id), mNetwork(EAthena::Network::instance()) { mNetwork->fixSendBuffer(); mData = mNetwork->mOutBuffer + static_cast(mNetwork->mOutSize); - - // +++ can be issue. call to virtual member - writeInt16(id, str); } void MessageOut::expand(const size_t bytes) diff --git a/src/net/eathena/messageout.h b/src/net/eathena/messageout.h index 4c0074767..8940ccc6a 100644 --- a/src/net/eathena/messageout.h +++ b/src/net/eathena/messageout.h @@ -43,8 +43,7 @@ class MessageOut final : public Net::MessageOut /** * Constructor. */ - explicit MessageOut(const int16_t id, - const char *const str = "packet id"); + explicit MessageOut(const int16_t id); A_DELETE_COPY(MessageOut) diff --git a/src/net/messageout.h b/src/net/messageout.h index 048afc70c..fb48ddd6e 100644 --- a/src/net/messageout.h +++ b/src/net/messageout.h @@ -29,7 +29,8 @@ #include "localconsts.h" -#define createOutPacket(name) MessageOut outMsg(name, #name) +#define createOutPacket(name) MessageOut outMsg(name); \ + outMsg.writeInt16(name, #name) namespace Net { diff --git a/src/net/tmwa/chathandler.cpp b/src/net/tmwa/chathandler.cpp index 165d91422..dc0ecbab2 100644 --- a/src/net/tmwa/chathandler.cpp +++ b/src/net/tmwa/chathandler.cpp @@ -107,13 +107,17 @@ void ChatHandler::sendRaw(const std::string &args) const if (pos != std::string::npos) { str = line.substr(0, pos); - outMsg = new MessageOut(static_cast(parseNumber(str))); + const int16_t id = static_cast(parseNumber(str)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); line = line.substr(pos + 1); pos = line.find(" "); } else { - outMsg = new MessageOut(static_cast(parseNumber(line))); + const int16_t id = static_cast(parseNumber(line)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); delete outMsg; return; } diff --git a/src/net/tmwa/loginhandler.cpp b/src/net/tmwa/loginhandler.cpp index d45cd7a09..5a8aaf6c6 100644 --- a/src/net/tmwa/loginhandler.cpp +++ b/src/net/tmwa/loginhandler.cpp @@ -58,7 +58,9 @@ void LoginHandler::connect() Network::mInstance->connect(mServer); if (serverFeatures->haveServerVersion()) + { createOutPacket(CMSG_SERVER_VERSION_REQUEST); + } } bool LoginHandler::isConnected() const diff --git a/src/net/tmwa/messageout.cpp b/src/net/tmwa/messageout.cpp index c0cc0321d..a38080866 100644 --- a/src/net/tmwa/messageout.cpp +++ b/src/net/tmwa/messageout.cpp @@ -35,15 +35,12 @@ namespace TmwAthena { -MessageOut::MessageOut(const int16_t id, const char *const str) : +MessageOut::MessageOut(const int16_t id) : Net::MessageOut(id), mNetwork(TmwAthena::Network::instance()) { mNetwork->fixSendBuffer(); mData = mNetwork->mOutBuffer + static_cast(mNetwork->mOutSize); - - // +++ can be issue. call to virtual member - writeInt16(id, str); } void MessageOut::expand(const size_t bytes) diff --git a/src/net/tmwa/messageout.h b/src/net/tmwa/messageout.h index c83643c38..a2dcc06f2 100644 --- a/src/net/tmwa/messageout.h +++ b/src/net/tmwa/messageout.h @@ -43,8 +43,7 @@ class MessageOut final : public Net::MessageOut /** * Constructor. */ - explicit MessageOut(const int16_t id, - const char *const str = "packet id"); + explicit MessageOut(const int16_t id); A_DELETE_COPY(MessageOut) -- cgit v1.2.3-70-g09d2