2#ifdef StevEngine_NETWORKING
3#include "networking.hpp"
4#include "utilities/ID.hpp"
13namespace StevEngine::Networking::Client {
19 using MessageFunction = std::function<void(MessageData message)>;
36 class MessageHandler {
42 MessageHandler(
const MessageFunction& function);
48 MessageHandler(
const MessageHandler& copy);
54 void operator= (
const MessageHandler& copy);
60 void operator() (MessageData message)
const;
67 bool operator== (
const MessageHandler& other)
const;
73 Utilities::ID getId()
const {
return id; }
76 MessageFunction function;
90 Manager(std::string ip,
int port);
103 void send(
const Message& message,
bool reliable =
true)
const;
110 void send(
const MessageID&
id, MessageData data = MessageData(),
bool reliable =
true)
const;
118 Utilities::ID listen(MessageID
id, MessageFunction function);
125 void unlisten(MessageID
id,
const Utilities::ID handler);
130 bool getConnected()
const {
return isConnected; };
133 sockaddr_in serverAddress;
136 std::unordered_map<MessageID, std::vector<MessageHandler>> subscribers;
145 bool isConnected =
false;
158 void recieve(
const Message& message);
161 Utilities::ID
id = Utilities::ID::empty;
164 float sinceLastPing = 0;