94 lines
1.8 KiB
C++
94 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include "ehs/Str.h"
|
|
#include "ehs/Array.h"
|
|
#include "ehs/io/socket/Socket.h"
|
|
#include "NetUtils.h"
|
|
|
|
namespace ehs
|
|
{
|
|
class EHC;
|
|
class NetEnd;
|
|
class NetSys;
|
|
|
|
class NetChannel
|
|
{
|
|
protected:
|
|
static const UInt_64 internalSys;
|
|
static const UInt_64 connectOp;
|
|
static const UInt_64 connectedOp;
|
|
static const UInt_64 rejectedOp;
|
|
static const UInt_64 disconnectOp;
|
|
static const UInt_64 disconnectedOp;
|
|
static const UInt_64 statusUpdateOp;
|
|
static const UInt_64 pingOp;
|
|
static const UInt_64 pongOp;
|
|
static const UInt_64 latencyOp;
|
|
static const UInt_64 receivedOp;
|
|
|
|
private:
|
|
friend class EHC;
|
|
|
|
EHC *owner;
|
|
UInt_64 id;
|
|
Str_8 name;
|
|
Version version;
|
|
float maxTimeout;
|
|
float resendRate;
|
|
bool dropPackets;
|
|
Array<NetSys *> systems;
|
|
|
|
public:
|
|
virtual ~NetChannel();
|
|
|
|
NetChannel();
|
|
|
|
NetChannel(Str_8 name, const Version &version);
|
|
|
|
NetChannel(NetChannel &&channel) noexcept;
|
|
|
|
NetChannel(const NetChannel &channel);
|
|
|
|
NetChannel &operator=(NetChannel &&channel) noexcept;
|
|
|
|
NetChannel &operator=(const NetChannel &channel);
|
|
|
|
EHC *GetOwner() const;
|
|
|
|
UInt_64 GetId() const;
|
|
|
|
Str_8 GetName() const;
|
|
|
|
Version GetVersion() const;
|
|
|
|
void SetMaxTimeout(float seconds);
|
|
|
|
float GetMaxTimeout() const;
|
|
|
|
void SetResendRate(float seconds);
|
|
|
|
float GetResendRate() const;
|
|
|
|
void EnableDropPackets(bool enable);
|
|
|
|
bool IsDropPacketsEnabled() const;
|
|
|
|
bool AddSystem(NetSys *sys);
|
|
|
|
bool IsValid() const;
|
|
|
|
private:
|
|
virtual void Process(const float &delta, const Endpoint &endpoint, const Header &header, Serializer<UInt_64> &payload);
|
|
|
|
virtual void Poll(const float &delta);
|
|
|
|
protected:
|
|
bool HasSystem(UInt_64 sysHashId) const;
|
|
|
|
bool HasSystem(const Str_8& sysId) const;
|
|
|
|
NetSys* GetSystem(UInt_64 sysHashId) const;
|
|
|
|
NetSys* GetSystem(const Str_8& sysId) const;
|
|
};
|
|
} |