#pragma once #include #include "VoidNet_LL/TcpClient.hpp" #include "VoidNet_HL/NetworkMessage.hpp" namespace std::net { class TcpConnection { public: friend class TcpConnectionHandler; TcpConnection(); TcpConnection(TcpClient *client); 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 SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag) { NetworkMessage msg(m_id, mode, destinationId, tag, nullptr, 0); sendMessage(msg); } void ReceiveData(); function DataReceivedEvent; function DisconnectedEvent; function NewConnectionEvent; function OnConnectionEvent; private: bool sendMessage(const NetworkMessage &msg); shared_ptr m_client; uint32_t m_id; }; }