Game configuration now placed in a struct. Prepared to send/receive game configuration over tcp.
This commit is contained in:
@@ -81,6 +81,9 @@ ServerRecvStateInit::Process(ServerRecvThread &server)
|
||||
tmpPacket->GetData(playerData);
|
||||
server.GetCallback().SignalNetServerPlayerJoined(playerData.playerName);
|
||||
boost::shared_ptr<NetPacket> answer(new NetPacketJoinGameAck);
|
||||
NetPacketJoinGameAck::Data joinGameAckData;
|
||||
// TODO: set data.
|
||||
static_cast<NetPacketJoinGameAck *>(answer.get())->SetData(joinGameAckData);
|
||||
server.GetSender().Send(answer, recvSock);
|
||||
session->SetState(SessionData::Established);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
#include <net/sendercallback.h>
|
||||
#include <net/receiverhelper.h>
|
||||
#include <net/socket_msg.h>
|
||||
#include <gamedata.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class ServerSenderCallback : public SenderCallback
|
||||
{
|
||||
@@ -47,6 +50,7 @@ ServerRecvThread::ServerRecvThread(ServerCallback &cb)
|
||||
m_senderCallback.reset(new ServerSenderCallback(*this));
|
||||
m_sender.reset(new SenderThread(GetSenderCallback()));
|
||||
m_receiver.reset(new ReceiverHelper);
|
||||
m_gameData.reset(new GameData);
|
||||
}
|
||||
|
||||
ServerRecvThread::~ServerRecvThread()
|
||||
@@ -55,6 +59,13 @@ ServerRecvThread::~ServerRecvThread()
|
||||
CleanupSessionMap();
|
||||
}
|
||||
|
||||
void
|
||||
ServerRecvThread::Init(const string &pwd, const GameData &gameData)
|
||||
{
|
||||
m_password = pwd;
|
||||
*m_gameData = gameData;
|
||||
}
|
||||
|
||||
void
|
||||
ServerRecvThread::SendToAllPlayers(boost::shared_ptr<NetPacket> packet)
|
||||
{
|
||||
@@ -297,6 +308,19 @@ ServerRecvThread::GetReceiver()
|
||||
return *m_receiver;
|
||||
}
|
||||
|
||||
const GameData &
|
||||
ServerRecvThread::GetGameData()
|
||||
{
|
||||
assert(m_gameData.get());
|
||||
return *m_gameData;
|
||||
}
|
||||
|
||||
bool
|
||||
ServerRecvThread::CheckPassword(const std::string &password)
|
||||
{
|
||||
return (password == m_password);
|
||||
}
|
||||
|
||||
ServerSenderCallback &
|
||||
ServerRecvThread::GetSenderCallback()
|
||||
{
|
||||
|
||||
@@ -41,7 +41,8 @@ ServerThread::~ServerThread()
|
||||
}
|
||||
|
||||
void
|
||||
ServerThread::Init(unsigned serverPort, bool ipv6, const std::string &pwd)
|
||||
ServerThread::Init(unsigned serverPort, bool ipv6, const std::string &pwd,
|
||||
const GameData &gameData)
|
||||
{
|
||||
if (IsRunning())
|
||||
return; // TODO: throw exception
|
||||
@@ -50,7 +51,8 @@ ServerThread::Init(unsigned serverPort, bool ipv6, const std::string &pwd)
|
||||
|
||||
context.SetAddrFamily(ipv6 ? AF_INET6 : AF_INET);
|
||||
context.SetServerPort(serverPort);
|
||||
context.SetPassword(pwd);
|
||||
|
||||
GetRecvThread().Init(pwd, gameData);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -43,10 +43,6 @@ public:
|
||||
{return m_serverPort;}
|
||||
void SetServerPort(unsigned serverPort)
|
||||
{m_serverPort = serverPort;}
|
||||
const std::string &GetPassword() const
|
||||
{return m_password;}
|
||||
void SetPassword(const std::string &password)
|
||||
{m_password = password;}
|
||||
const sockaddr_storage *GetServerSockaddr() const
|
||||
{return &m_serverSockaddr;}
|
||||
sockaddr_storage *GetServerSockaddr()
|
||||
@@ -59,7 +55,6 @@ private:
|
||||
SOCKET m_sockfd;
|
||||
int m_addrFamily;
|
||||
unsigned m_serverPort;
|
||||
std::string m_password;
|
||||
sockaddr_storage m_serverSockaddr;
|
||||
};
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <core/thread.h>
|
||||
#include <deque>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include <net/connectdata.h>
|
||||
@@ -40,6 +41,7 @@ class SenderThread;
|
||||
class ReceiverHelper;
|
||||
class ServerSenderCallback;
|
||||
class NetPacket;
|
||||
struct GameData;
|
||||
|
||||
class ServerRecvThread : public Thread
|
||||
{
|
||||
@@ -47,6 +49,8 @@ public:
|
||||
ServerRecvThread(ServerCallback &gui);
|
||||
virtual ~ServerRecvThread();
|
||||
|
||||
void Init(const std::string &pwd, const GameData &gameData);
|
||||
|
||||
void SendToAllPlayers(boost::shared_ptr<NetPacket> packet);
|
||||
void AddConnection(boost::shared_ptr<ConnectData> data);
|
||||
void AddNotification(unsigned notification);
|
||||
@@ -78,6 +82,9 @@ protected:
|
||||
SenderThread &GetSender();
|
||||
ReceiverHelper &GetReceiver();
|
||||
|
||||
const GameData &GetGameData();
|
||||
bool CheckPassword(const std::string &password);
|
||||
|
||||
ServerSenderCallback &GetSenderCallback();
|
||||
|
||||
private:
|
||||
@@ -96,6 +103,9 @@ private:
|
||||
std::auto_ptr<SenderThread> m_sender;
|
||||
|
||||
std::auto_ptr<ServerSenderCallback> m_senderCallback;
|
||||
std::auto_ptr<GameData> m_gameData;
|
||||
|
||||
std::string m_password;
|
||||
|
||||
ServerCallback &m_callback;
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ class ServerContext;
|
||||
class ServerRecvThread;
|
||||
class ServerSenderCallback;
|
||||
class SenderThread;
|
||||
struct GameData;
|
||||
|
||||
class ServerThread : public Thread
|
||||
{
|
||||
@@ -38,7 +39,8 @@ public:
|
||||
virtual ~ServerThread();
|
||||
|
||||
// Set the parameters.
|
||||
void Init(unsigned serverPort, bool ipv6, const std::string &pwd);
|
||||
void Init(unsigned serverPort, bool ipv6, const std::string &pwd,
|
||||
const GameData &gameData);
|
||||
void StartGame();
|
||||
|
||||
ServerCallback &GetCallback();
|
||||
|
||||
Reference in New Issue
Block a user