EHS
NetChannel.h
Go to the documentation of this file.
1#pragma once
2
3#include "ehs/Str.h"
4#include "ehs/Array.h"
6#include "NetUtils.h"
7
8namespace ehs
9{
10 class EHC;
11 class NetEnd;
12 class NetSys;
13
15 {
16 protected:
17 static const UInt_64 internalSys;
18 static const UInt_64 connectOp;
19 static const UInt_64 connectedOp;
20 static const UInt_64 rejectedOp;
21 static const UInt_64 disconnectOp;
22 static const UInt_64 disconnectedOp;
23 static const UInt_64 statusUpdateOp;
24 static const UInt_64 pingOp;
25 static const UInt_64 pongOp;
26 static const UInt_64 latencyOp;
27 static const UInt_64 receivedOp;
28
29 private:
30 friend class EHC;
31
32 EHC *owner;
33 UInt_64 id;
34 Str_8 name;
35 Version version;
36 float maxTimeout;
37 float resendRate;
38 bool dropPackets;
39 Array<NetSys *> systems;
40
41 public:
42 virtual ~NetChannel();
43
44 NetChannel();
45
46 NetChannel(Str_8 name, const Version &version);
47
48 NetChannel(NetChannel &&channel) noexcept;
49
50 NetChannel(const NetChannel &channel);
51
52 NetChannel &operator=(NetChannel &&channel) noexcept;
53
54 NetChannel &operator=(const NetChannel &channel);
55
56 EHC *GetOwner() const;
57
58 UInt_64 GetId() const;
59
60 Str_8 GetName() const;
61
62 Version GetVersion() const;
63
64 void SetMaxTimeout(float seconds);
65
66 float GetMaxTimeout() const;
67
68 void SetResendRate(float seconds);
69
70 float GetResendRate() const;
71
72 void EnableDropPackets(bool enable);
73
74 bool IsDropPacketsEnabled() const;
75
76 bool AddSystem(NetSys *sys);
77
78 bool IsValid() const;
79
80 private:
81 virtual void Process(const float &delta, const Endpoint &endpoint, const Header &header, Serializer<UInt_64> &payload);
82
83 virtual void Poll(const float &delta);
84
85 protected:
86 bool HasSystem(UInt_64 sysId) const;
87
88 bool HasSystem(const Str_8& sysName) const;
89
90 NetSys* GetSystem(UInt_64 sysId) const;
91
92 NetSys* GetSystem(const Str_8& sysName) const;
93 };
94}
Definition: Array.h:16
Definition: EHC.h:16
Definition: NetChannel.h:15
static const UInt_64 latencyOp
Definition: NetChannel.h:26
static const UInt_64 statusUpdateOp
Definition: NetChannel.h:23
static const UInt_64 internalSys
Definition: NetChannel.h:17
NetSys * GetSystem(UInt_64 sysId) const
Definition: NetChannel.cpp:180
static const UInt_64 connectedOp
Definition: NetChannel.h:19
bool IsDropPacketsEnabled() const
Definition: NetChannel.cpp:134
float GetMaxTimeout() const
Definition: NetChannel.cpp:114
float GetResendRate() const
Definition: NetChannel.cpp:124
void SetResendRate(float seconds)
Definition: NetChannel.cpp:119
Version GetVersion() const
Definition: NetChannel.cpp:104
EHC * GetOwner() const
Definition: NetChannel.cpp:89
static const UInt_64 pongOp
Definition: NetChannel.h:25
bool IsValid() const
Definition: NetChannel.cpp:152
void EnableDropPackets(bool enable)
Definition: NetChannel.cpp:129
static const UInt_64 pingOp
Definition: NetChannel.h:24
bool AddSystem(NetSys *sys)
Definition: NetChannel.cpp:139
static const UInt_64 disconnectedOp
Definition: NetChannel.h:22
Str_8 GetName() const
Definition: NetChannel.cpp:99
static const UInt_64 disconnectOp
Definition: NetChannel.h:21
static const UInt_64 connectOp
Definition: NetChannel.h:18
UInt_64 GetId() const
Definition: NetChannel.cpp:94
bool HasSystem(UInt_64 sysId) const
Definition: NetChannel.cpp:166
static const UInt_64 receivedOp
Definition: NetChannel.h:27
virtual ~NetChannel()
Definition: NetChannel.cpp:21
NetChannel()
Definition: NetChannel.cpp:25
NetChannel & operator=(NetChannel &&channel) noexcept
Definition: NetChannel.cpp:53
static const UInt_64 rejectedOp
Definition: NetChannel.h:20
void SetMaxTimeout(float seconds)
Definition: NetChannel.cpp:109
Definition: NetSys.h:14
A helper class for storing version major, minor and patch.
Definition: Version.h:9
Definition: Anchor.h:6
Definition: Socket.h:48
Definition: NetUtils.h:22