One Protocol per DedicatedServer
This commit is contained in:
parent
1667740c23
commit
3df02252f7
|
@ -1,7 +1,6 @@
|
|||
#include "DedicatedServer.h"
|
||||
#include "config/ServerProperties.h"
|
||||
|
||||
#include "Protocol.h"
|
||||
#include "PacketReader.h"
|
||||
|
||||
namespace Feather
|
||||
|
@ -9,7 +8,8 @@ namespace Feather
|
|||
DedicatedServer::DedicatedServer(ServerProperties* properties) :
|
||||
m_properties(properties),
|
||||
m_listener(properties->serverPort.GetValue(), this),
|
||||
m_status()
|
||||
m_status(),
|
||||
m_protocol(*this)
|
||||
{
|
||||
m_status.descriptionText = properties->motd.GetValue();
|
||||
m_status.maxPlayers = properties->maxPlayers.GetValue();
|
||||
|
@ -19,12 +19,11 @@ namespace Feather
|
|||
auto [clients, clientsLock] = m_clients.borrow();
|
||||
for (auto& client : clients)
|
||||
{
|
||||
Protocol protocol;
|
||||
auto [data, clientLock] = client.GetTCPClient().GetData().borrow();
|
||||
if (data.empty())
|
||||
continue;
|
||||
auto reader = PacketReader(data.data());
|
||||
protocol.HandlePacket(client, reader);
|
||||
m_protocol.HandlePacket(client, reader);
|
||||
data.clear();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "MinecraftClient.h"
|
||||
#include "ServerStatus.h"
|
||||
#include "Protocol.h"
|
||||
|
||||
#include "network/IListenerInterface.h"
|
||||
|
||||
|
@ -18,10 +19,13 @@ namespace Feather
|
|||
void OnClientConnect(Network::TCPClient&& client) override;
|
||||
void OnClientDisconnect(const Network::TCPClient& client) override;
|
||||
|
||||
ServerStatus& GetStatus() { return m_status; }
|
||||
|
||||
private:
|
||||
ServerProperties* m_properties;
|
||||
Network::TCPListener m_listener;
|
||||
ServerStatus m_status;
|
||||
Protocol m_protocol;
|
||||
|
||||
LockableList<MinecraftClient> m_clients;
|
||||
};
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "PacketReader.h"
|
||||
#include "PacketTypes.h"
|
||||
#include "MinecraftClient.h"
|
||||
#include "DedicatedServer.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
#include "Common.h"
|
||||
#include "NetworkMessage.h"
|
||||
#include <cstdio>
|
||||
|
||||
namespace Feather
|
||||
{
|
||||
class DedicatedServer;
|
||||
class PacketReader;
|
||||
class MinecraftClient;
|
||||
|
||||
|
@ -26,7 +28,7 @@ namespace Feather
|
|||
|
||||
inline void SetState(ProtocolState state)
|
||||
{
|
||||
printf("Setting state");
|
||||
Log_Info("Setting state: %d", (int)state);
|
||||
m_state = state;
|
||||
}
|
||||
private:
|
||||
|
@ -35,7 +37,10 @@ namespace Feather
|
|||
|
||||
class Protocol
|
||||
{
|
||||
DedicatedServer& m_server;
|
||||
public:
|
||||
Protocol(DedicatedServer& server) : m_server(server) {}
|
||||
|
||||
void HandlePacket(MinecraftClient& client, PacketReader& packet);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue