#pragma once #include #include "VoidNet/TcpClient.hpp" #include "HLAPI/NetworkMessage.hpp" namespace std::net { class TcpConnection { public: friend class TcpConnectionHandler; TcpConnection(TcpClient *client); std::shared_ptr GetClient(); uint32_t GetID(); void SetID(uint32_t id); template void SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag, void *data) { NetworkMessage msg(m_id, mode, destinationId, tag, data, sizeof(T)); } void ReceiveData(); std::function DataReceivedEvent; std::function DisconnectedEvent; std::function NewConnectionEvent; private: bool sendMessage(const NetworkMessage &msg); std::shared_ptr m_client; uint32_t m_id; }; }