]> git.localhorst.tv Git - blank.git/blob - src/net/Connection.hpp
tag packets withsequence numbers
[blank.git] / src / net / Connection.hpp
1 #ifndef BLANK_NET_CONNECTION_HPP_
2 #define BLANK_NET_CONNECTION_HPP_
3
4 #include "Packet.hpp"
5 #include "../app/IntervalTimer.hpp"
6
7 #include <cstdint>
8 #include <SDL_net.h>
9
10
11 namespace blank {
12
13 class Connection {
14
15 public:
16         explicit Connection(const IPaddress &);
17
18         const IPaddress &Address() const noexcept { return addr; }
19
20         bool Matches(const IPaddress &) const noexcept;
21
22         bool ShouldPing() const noexcept;
23         bool TimedOut() const noexcept;
24
25         void Update(int dt);
26
27         void SendPing(UDPpacket &, UDPsocket);
28
29         void Send(UDPpacket &, UDPsocket);
30         void Received(const UDPpacket &);
31
32 private:
33         void FlagSend() noexcept;
34         void FlagRecv() noexcept;
35
36 private:
37         IPaddress addr;
38         IntervalTimer send_timer;
39         IntervalTimer recv_timer;
40
41         Packet::TControl ctrl;
42
43 };
44
45 }
46
47 #endif