diff options
| author | leak <leak@bitmx.net> | 2014-08-11 17:28:10 +0200 |
|---|---|---|
| committer | leak <leak@bitmx.net> | 2014-08-11 17:40:43 +0200 |
| commit | 1a27ce1267bb3dd93dd9ad67a69f550aed998790 (patch) | |
| tree | 24b8a0b73c0cd7b43492e7b904e1ee0a1d0cb552 /src/server/game/Server | |
| parent | d89a40df859f858a62ddf522848225034e73976d (diff) | |
Core/NetworkIO: Restore networking related scripting hooks
Closes #12607
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.h | 2 |
3 files changed, 18 insertions, 7 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 3f54ec9ab51..445e42a7f08 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -225,6 +225,8 @@ void WorldSession::SendPacket(WorldPacket* packet) } #endif // !TRINITY_DEBUG + sScriptMgr->OnPacketSend(this, *packet); + m_Socket->AsyncWrite(*packet); } @@ -288,7 +290,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) { TC_LOG_ERROR("network.opcode", "Received non-existed opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str() , GetPlayerInfo().c_str()); - sScriptMgr->OnUnknownPacketReceive(m_Socket, *packet); + sScriptMgr->OnUnknownPacketReceive(this, *packet); } else { @@ -318,7 +320,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) } else if (_player->IsInWorld()) { - sScriptMgr->OnPacketReceive(m_Socket, *packet); + sScriptMgr->OnPacketReceive(this, *packet); (this->*opHandle.handler)(*packet); LogUnprocessedTail(packet); } @@ -331,7 +333,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) else { // not expected _player or must checked in packet handler - sScriptMgr->OnPacketReceive(m_Socket, *packet); + sScriptMgr->OnPacketReceive(this, *packet); (this->*opHandle.handler)(*packet); LogUnprocessedTail(packet); } @@ -343,7 +345,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player is still in world"); else { - sScriptMgr->OnPacketReceive(m_Socket, *packet); + sScriptMgr->OnPacketReceive(this, *packet); (this->*opHandle.handler)(*packet); LogUnprocessedTail(packet); } @@ -361,7 +363,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) if (packet->GetOpcode() == CMSG_CHAR_ENUM) m_playerRecentlyLogout = false; - sScriptMgr->OnPacketReceive(m_Socket, *packet); + sScriptMgr->OnPacketReceive(this, *packet); (this->*opHandle.handler)(*packet); LogUnprocessedTail(packet); break; diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 046cdc0acd3..1b134ecbe91 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -33,6 +33,7 @@ WorldSocket::WorldSocket(tcp::socket&& socket) void WorldSocket::Start() { + sScriptMgr->OnSocketOpen(shared_from_this()); AsyncReadHeader(); HandleSendAuthSession(); } @@ -94,12 +95,11 @@ void WorldSocket::ReadDataHandler() break; } - sScriptMgr->OnPacketReceive(shared_from_this(), packet); HandleAuthSession(packet); break; case CMSG_KEEP_ALIVE: TC_LOG_DEBUG("network", "%s", opcodeName.c_str()); - sScriptMgr->OnPacketReceive(shared_from_this(), packet); + sScriptMgr->OnPacketReceive(_worldSession, packet); break; default: { @@ -437,3 +437,10 @@ void WorldSocket::HandlePing(WorldPacket& recvPacket) packet << ping; return AsyncWrite(packet); } + +void WorldSocket::CloseSocket() +{ + sScriptMgr->OnSocketClose(shared_from_this()); + + Socket::CloseSocket(); +} diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index 8d452677650..faa57b58f93 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -104,6 +104,8 @@ public: void Start() override; + void CloseSocket() override; + using Base::AsyncWrite; void AsyncWrite(WorldPacket& packet); |
