mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-16 17:41:29 +00:00
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "eq_packet_structs.h"
|
|
#include "net/servertalk_client_connection.h"
|
|
#include <functional>
|
|
|
|
namespace EQ
|
|
{
|
|
class WorldConnection
|
|
{
|
|
public:
|
|
typedef std::function<void()> OnConnectedHandler;
|
|
typedef std::function<void(uint16, const EQ::Net::Packet&)> OnMessageHandler;
|
|
typedef std::function<void(const std::string&, const std::string&, const std::string&, const EQ::Net::Packet&)> OnRoutedMessageHandler;
|
|
|
|
WorldConnection(const std::string &type);
|
|
virtual ~WorldConnection();
|
|
|
|
void SendPacket(ServerPacket* pack);
|
|
std::string GetIP() const;
|
|
uint16 GetPort() const;
|
|
bool Connected() const;
|
|
|
|
void SetOnConnectedHandler(OnConnectedHandler handler) {
|
|
m_on_connected = handler;
|
|
};
|
|
|
|
void SetOnMessageHandler(OnMessageHandler handler) {
|
|
m_on_message = handler;
|
|
};
|
|
|
|
void SetOnRoutedMessageHandler(OnRoutedMessageHandler handler) {
|
|
m_on_routed_message = handler;
|
|
}
|
|
|
|
void RouteMessage(const std::string &filter, const std::string &id, const EQ::Net::Packet& payload);
|
|
|
|
protected:
|
|
OnConnectedHandler m_on_connected;
|
|
OnMessageHandler m_on_message;
|
|
OnRoutedMessageHandler m_on_routed_message;
|
|
std::unique_ptr<EQ::Net::ServertalkClient> m_connection;
|
|
|
|
private:
|
|
void _HandleMessage(uint16 opcode, const EQ::Net::Packet& p);
|
|
void _HandleRoutedMessage(uint16 opcode, const EQ::Net::Packet& p);
|
|
};
|
|
}
|