Comms stuff

This commit is contained in:
KimLS
2019-06-08 21:49:51 -07:00
parent c5f739cbda
commit c1484a698c
20 changed files with 281 additions and 128 deletions
+7 -11
View File
@@ -25,16 +25,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "zone_launch.h"
WorldServer::WorldServer(std::map<std::string, ZoneLaunch *> &zones, const char *name, const EQEmuConfig *config)
: m_name(name),
:
WorldConnection::WorldConnection("Launcher"),
m_name(name),
m_config(config),
m_zones(zones)
{
m_connection.reset(new EQ::Net::ServertalkClient(config->WorldIP, config->WorldTCPPort, false, "Launcher", config->SharedKey));
m_connection->OnConnect([this](EQ::Net::ServertalkClient *client) {
OnConnected();
});
m_connection->OnMessage(std::bind(&WorldServer::HandleMessage, this, std::placeholders::_1, std::placeholders::_2));
SetOnConnectedHandler(std::bind(&WorldServer::OnConnected, this));
SetOnMessageHandler(std::bind(&WorldServer::HandleMessage, this, std::placeholders::_1, std::placeholders::_2));
}
WorldServer::~WorldServer() {
@@ -57,7 +55,7 @@ void WorldServer::OnConnected() {
}
}
void WorldServer::HandleMessage(uint16 opcode, EQ::Net::Packet &p) {
void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
ServerPacket tpack(opcode, p);
ServerPacket *pack = &tpack;
@@ -126,8 +124,6 @@ void WorldServer::HandleMessage(uint16 opcode, EQ::Net::Packet &p) {
}
}
void WorldServer::SendStatus(const char *short_name, uint32 start_count, bool running) {
auto pack = new ServerPacket(ServerOP_LauncherZoneStatus, sizeof(LauncherZoneStatus));
LauncherZoneStatus* it = (LauncherZoneStatus*)pack->pBuffer;
@@ -138,4 +134,4 @@ void WorldServer::SendStatus(const char *short_name, uint32 start_count, bool ru
m_connection->SendPacket(pack);
safe_delete(pack);
}
}
+4 -9
View File
@@ -18,28 +18,23 @@
#ifndef WORLDSERVER_H
#define WORLDSERVER_H
#include "../common/net/servertalk_client_connection.h"
#include <memory>
#include <string>
#include "../common/world_connection.h"
#include <queue>
#include <map>
class ZoneLaunch;
class EQEmuConfig;
class WorldServer {
class WorldServer : public EQ::WorldConnection {
public:
WorldServer(std::map<std::string, ZoneLaunch *> &zones, const char *name, const EQEmuConfig *config);
~WorldServer();
void HandleMessage(uint16 opcode, EQ::Net::Packet &p);
void SendStatus(const char *short_name, uint32 start_count, bool running);
private:
virtual void OnConnected();
void HandleMessage(uint16 opcode, const EQ::Net::Packet &p);
void OnConnected();
std::unique_ptr<EQ::Net::ServertalkClient> m_connection;
const char *const m_name;
const EQEmuConfig *const m_config;
std::map<std::string, ZoneLaunch *> &m_zones;