Starting database callback integration.

This commit is contained in:
lotodore
2009-09-19 20:28:30 +00:00
parent 8dbb11db92
commit 97e01d6b80
3 changed files with 54 additions and 17 deletions
+2
View File
@@ -36,4 +36,6 @@ public:
ServerDBCallback &cb, boost::shared_ptr<boost::asio::io_service> ioService);
};
typedef ServerDBFactoryGeneric DBFactory;
#endif
+43 -10
View File
@@ -27,6 +27,13 @@
#include <net/receiverhelper.h>
#include <net/socket_msg.h>
#include <net/chatcleanermanager.h>
#include <db/serverdbinterface.h>
#include <db/serverdbcallback.h>
#ifdef POKERTH_OFFICIAL_SERVER
#include <dbclosed/serverdbfactoryinternal.h>
#else
#include <db/serverdbfactorygeneric.h>
#endif
#include <core/avatarmanager.h>
#include <core/loghelper.h>
#include <core/openssl_wrapper.h>
@@ -69,11 +76,11 @@ using namespace std;
using boost::asio::ip::tcp;
class ServerSenderCallback : public SenderCallback, public SessionDataCallback, public ChatCleanerCallback
class InternalServerCallback : public SenderCallback, public SessionDataCallback, public ChatCleanerCallback, public ServerDBCallback
{
public:
ServerSenderCallback(ServerLobbyThread &server) : m_server(server) {}
virtual ~ServerSenderCallback() {}
InternalServerCallback(ServerLobbyThread &server) : m_server(server) {}
virtual ~InternalServerCallback() {}
virtual void SignalNetError(SessionId /*session*/, int /*errorID*/, int /*osErrorID*/)
{
@@ -90,6 +97,30 @@ public:
m_server.SendChatBotMsg(msg);
}
virtual void ConnectSuccess()
{
}
virtual void ConnectFailed(const string &error)
{
}
virtual void PlayerLoginSuccess(async_handle login, db_id playerId)
{
}
virtual void PlayerLoginFailed(async_handle login)
{
}
virtual void CreateGameSuccess(async_handle create, db_id gameId)
{
}
virtual void CreateGameFailed(async_handle create)
{
}
private:
ServerLobbyThread &m_server;
};
@@ -104,11 +135,13 @@ ServerLobbyThread::ServerLobbyThread(GuiInterface &gui, ServerIrcBotCallback &ir
m_saveStatisticsTimer(*ioService), m_avatarLockTimer(*ioService),
m_startTime(boost::posix_time::second_clock::local_time())
{
m_senderCallback.reset(new ServerSenderCallback(*this));
m_sender.reset(new SenderHelper(*m_senderCallback, m_ioService));
m_internalServerCallback.reset(new InternalServerCallback(*this));
m_sender.reset(new SenderHelper(*m_internalServerCallback, m_ioService));
m_receiver.reset(new ReceiverHelper);
m_banManager.reset(new ServerBanManager(m_ioService));
m_chatCleanerManager.reset(new ChatCleanerManager(*m_senderCallback, m_ioService));
m_chatCleanerManager.reset(new ChatCleanerManager(*m_internalServerCallback, m_ioService));
DBFactory dbFactory;
m_database = dbFactory.CreateServerDBObject(*m_internalServerCallback, m_ioService);
}
ServerLobbyThread::~ServerLobbyThread()
@@ -153,7 +186,7 @@ ServerLobbyThread::AddConnection(boost::shared_ptr<tcp::socket> sock)
//}
// Create a new session.
boost::shared_ptr<SessionData> sessionData(new SessionData(sock, m_curSessionId++, *m_senderCallback));
boost::shared_ptr<SessionData> sessionData(new SessionData(sock, m_curSessionId++, *m_internalServerCallback));
m_sessionManager.AddSession(sessionData);
LOG_VERBOSE("Accepted connection - session #" << sessionData->GetId() << ".");
@@ -1702,11 +1735,11 @@ ServerLobbyThread::CheckPassword(const string &password) const
return (password == m_password);
}
ServerSenderCallback &
InternalServerCallback &
ServerLobbyThread::GetSenderCallback()
{
assert(m_senderCallback.get());
return *m_senderCallback;
assert(m_internalServerCallback.get());
return *m_internalServerCallback;
}
GuiInterface &
+9 -7
View File
@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2007 by Lothar May *
* Copyright (C) 2007-2009 by Lothar May *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -16,10 +16,10 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
/* Network server receive thread. */
/* Network server lobby thread. */
#ifndef _SERVERRECVTHREAD_H_
#define _SERVERRECVTHREAD_H_
#ifndef _SERVERLOBBYTHREAD_H_
#define _SERVERLOBBYTHREAD_H_
#include <boost/asio.hpp>
#include <deque>
@@ -37,13 +37,14 @@
class SenderHelper;
class ReceiverHelper;
class ServerSenderCallback;
class InternalServerCallback;
class ServerIrcBotCallback;
class ServerGame;
class ServerBanManager;
class ConfigFile;
class AvatarManager;
class ChatCleanerManager;
class ServerDBInterface;
struct GameData;
class Game;
@@ -164,7 +165,7 @@ protected:
bool CheckPassword(const std::string &password) const;
ServerSenderCallback &GetSenderCallback();
InternalServerCallback &GetSenderCallback();
GuiInterface &GetGui();
ServerIrcBotCallback &GetIrcBotCallback();
@@ -179,7 +180,7 @@ private:
boost::shared_ptr<boost::asio::io_service> m_ioService;
boost::shared_ptr<ServerSenderCallback> m_senderCallback;
boost::shared_ptr<InternalServerCallback> m_internalServerCallback;
boost::shared_ptr<SenderHelper> m_sender;
boost::shared_ptr<ReceiverHelper> m_receiver;
@@ -219,6 +220,7 @@ private:
boost::shared_ptr<ServerBanManager> m_banManager;
boost::shared_ptr<ChatCleanerManager> m_chatCleanerManager;
boost::shared_ptr<ServerDBInterface> m_database;
boost::asio::deadline_timer m_removeGameTimer;
boost::asio::deadline_timer m_removePlayerTimer;