X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2FConnection.hpp;h=ed7a946aab01d2296123f9f68229d46a2b9b4b48;hb=c6ca9d21e45af5ea7caeec722a9b59fdf3aa3b24;hp=cc13ef60915df48dc676228535c50101f0eccc9d;hpb=da5073a7fdb1ca066e778a02db33d5d15073aea0;p=blank.git diff --git a/src/net/Connection.hpp b/src/net/Connection.hpp index cc13ef6..ed7a946 100644 --- a/src/net/Connection.hpp +++ b/src/net/Connection.hpp @@ -10,11 +10,18 @@ namespace blank { +class ConnectionHandler; + class Connection { public: explicit Connection(const IPaddress &); + void SetHandler(ConnectionHandler *h) noexcept { handler = h; } + void RemoveHandler() noexcept { handler = nullptr; } + bool HasHandler() const noexcept { return handler; } + ConnectionHandler &Handler() noexcept { return *handler; } + const IPaddress &Address() const noexcept { return addr; } bool Matches(const IPaddress &) const noexcept; @@ -23,13 +30,13 @@ public: bool TimedOut() const noexcept; void Close() noexcept { closed = true; } - bool Closed() const noexcept { return closed || TimedOut(); } + bool Closed() const noexcept { return closed; } void Update(int dt); - void SendPing(UDPpacket &, UDPsocket); + std::uint16_t SendPing(UDPpacket &, UDPsocket); - void Send(UDPpacket &, UDPsocket); + std::uint16_t Send(UDPpacket &, UDPsocket); void Received(const UDPpacket &); private: @@ -37,11 +44,13 @@ private: void FlagRecv() noexcept; private: + ConnectionHandler *handler; IPaddress addr; IntervalTimer send_timer; IntervalTimer recv_timer; - Packet::TControl ctrl; + Packet::TControl ctrl_out; + Packet::TControl ctrl_in; bool closed;