aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorleak <leak@bitmx.net>2014-08-11 17:28:10 +0200
committerleak <leak@bitmx.net>2014-08-11 17:40:43 +0200
commit1a27ce1267bb3dd93dd9ad67a69f550aed998790 (patch)
tree24b8a0b73c0cd7b43492e7b904e1ee0a1d0cb552 /src/server/game/Server
parentd89a40df859f858a62ddf522848225034e73976d (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.cpp12
-rw-r--r--src/server/game/Server/WorldSocket.cpp11
-rw-r--r--src/server/game/Server/WorldSocket.h2
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);