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