Refactored server states - removed all thread local storage objects to ensure that they do not cause resource leaks.

This commit is contained in:
lotodore
2007-11-21 23:34:25 +00:00
parent a7f0a23f22
commit e28220a8ad
4 changed files with 84 additions and 113 deletions
+15 -2
View File
@@ -56,7 +56,8 @@ private:
ServerGameThread::ServerGameThread(ServerLobbyThread &lobbyThread, u_int32_t id, const string &name, const string &pwd, const GameData &gameData, unsigned adminPlayerId, GuiInterface &gui, ConfigFile *playerConfig)
: m_adminPlayerId(adminPlayerId), m_lobbyThread(lobbyThread), m_gui(gui),
m_gameData(gameData), m_id(id), m_name(name), m_password(pwd), m_playerConfig(playerConfig),
m_curState(NULL), m_gameNum(1)
m_curState(NULL), m_gameNum(1),
m_stateTimer(boost::posix_time::time_duration(0, 0, 0), boost::timers::portable::microsec_timer::manual_start)
{
m_senderCallback.reset(new GameSenderCallback(*this));
m_sender.reset(new SenderThread(GetSenderCallback()));
@@ -499,10 +500,22 @@ ServerGameThread::GetState()
void
ServerGameThread::SetState(ServerGameState &newState)
{
newState.Init();
newState.Init(*this);
m_curState = &newState;
}
const boost::timers::portable::microsec_timer &
ServerGameThread::GetStateTimer() const
{
return m_stateTimer;
}
boost::timers::portable::microsec_timer &
ServerGameThread::GetStateTimer()
{
return m_stateTimer;
}
SenderThread &
ServerGameThread::GetSender()
{