From 476035f791af045bbcec4a0094321e02835bf527 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 5 May 2007 21:40:24 +0000 Subject: [PATCH] Fixed error reporting (temporary fix). --- src/net/common/serverrecvstate.cpp | 16 +++++++--------- src/net/common/serverrecvthread.cpp | 7 +++++++ src/net/serverrecvthread.h | 7 +++++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/net/common/serverrecvstate.cpp b/src/net/common/serverrecvstate.cpp index 618929b8..d4bd0c29 100644 --- a/src/net/common/serverrecvstate.cpp +++ b/src/net/common/serverrecvstate.cpp @@ -50,9 +50,6 @@ ServerRecvStateInit::Instance() ServerRecvStateInit::ServerRecvStateInit() : m_curUniquePlayerId(0) { - boost::microsec_timer::time_duration_type dur; - boost::microsec_timer t(dur); - t.start(); } ServerRecvStateInit::~ServerRecvStateInit() @@ -90,6 +87,7 @@ ServerRecvStateInit::Process(ServerRecvThread &server) if (session.get()) { //server.CloseSessionDelayed(session); + Thread::Msleep(10); return retVal; } } @@ -100,7 +98,7 @@ ServerRecvStateInit::Process(ServerRecvThread &server) // Session should be in initial state. if (session->GetState() != SessionData::Init) { - //server.SessionError(session, ERR_SOCK_INVALID_STATE); + server.SessionError(session, ERR_SOCK_INVALID_STATE); return retVal; } @@ -108,7 +106,7 @@ ServerRecvStateInit::Process(ServerRecvThread &server) const NetPacketJoinGame *tmpPacket = packet->ToNetPacketJoinGame(); if (!tmpPacket) { - //server.SessionError(session, ERR_SOCK_INVALID_PACKET); + server.SessionError(session, ERR_SOCK_INVALID_PACKET); return retVal; } @@ -118,14 +116,14 @@ ServerRecvStateInit::Process(ServerRecvThread &server) // Check the protocol version. if (joinGameData.versionMajor != NET_VERSION_MAJOR) { - //server.SessionError(session, ERR_NET_VERSION_NOT_SUPPORTED); + server.SessionError(session, ERR_NET_VERSION_NOT_SUPPORTED); return retVal; } // Check the server password. if (!server.CheckPassword(joinGameData.password)) { - //server.SessionError(session, ERR_NET_INVALID_PASSWORD); + server.SessionError(session, ERR_NET_INVALID_PASSWORD); return retVal; } @@ -134,14 +132,14 @@ ServerRecvStateInit::Process(ServerRecvThread &server) // Check the number of players. if (curNumPlayers >= (size_t)server.GetGameData().numberOfPlayers) { - //server.SessionError(session, ERR_NET_SERVER_FULL); + server.SessionError(session, ERR_NET_SERVER_FULL); return retVal; } // Check whether this player is already connected. if (server.IsPlayerConnected(joinGameData.playerName)) { - //server.SessionError(session, ERR_NET_PLAYER_NAME_IN_USE); + server.SessionError(session, ERR_NET_PLAYER_NAME_IN_USE); return retVal; } diff --git a/src/net/common/serverrecvthread.cpp b/src/net/common/serverrecvthread.cpp index c3820efe..fee6d3a1 100644 --- a/src/net/common/serverrecvthread.cpp +++ b/src/net/common/serverrecvthread.cpp @@ -296,6 +296,13 @@ ServerRecvThread::AddSession(boost::shared_ptr sessionData) m_sessionMap.insert(pos, SocketSessionMap::value_type(sessionData->GetSocket(), sessionData)); } +void +ServerRecvThread::SessionError(boost::shared_ptr sessionData, int errorCode) +{ + assert(sessionData.get()); + SendError(errorCode, sessionData->GetSocket()); +} + SenderThread & ServerRecvThread::GetSender() { diff --git a/src/net/serverrecvthread.h b/src/net/serverrecvthread.h index acd83c82..f9b41e5a 100644 --- a/src/net/serverrecvthread.h +++ b/src/net/serverrecvthread.h @@ -51,8 +51,6 @@ public: void Init(const std::string &pwd, const GameData &gameData); - void SendError(int errorCode, SOCKET s); - void SendToAllPlayers(boost::shared_ptr packet); void AddConnection(boost::shared_ptr data); void AddNotification(unsigned notification); @@ -79,6 +77,10 @@ protected: boost::shared_ptr GetSession(SOCKET sock); void AddSession(boost::shared_ptr sessionData); + void SessionError(boost::shared_ptr sessionData, int errorCode); + + void SendError(int errorCode, SOCKET s); + void SendToAllPlayers(boost::shared_ptr packet); SenderThread &GetSender(); ReceiverHelper &GetReceiver(); @@ -114,6 +116,7 @@ private: ServerCallback &m_callback; friend class ServerRecvStateInit; +friend class ServerRecvStateStartGame; }; #endif