16 #ifndef INC_C4Network2IO
17 #define INC_C4Network2IO
86 *pAutoAcceptList{
nullptr};
111 bool Init(int16_t iPortTCP, int16_t iPortUDP, int16_t iPortDiscovery = -1, int16_t iPortRefServer = -1,
bool fBroadcast =
false,
bool enable_upnp =
true);
170 bool Execute(
int iTimeout, pollfd *)
override;
183 struct NetEvPacketData;
298 void SetSocket(std::unique_ptr<C4NetIOTCP::Socket> socket);
323 void DoStatistics(
int iInterval,
int *pIRateSum,
int *pORateSum);
408 bool DoFwdTo(int32_t iClient)
const;
425 uint32_t iPacketCounter;
426 uint32_t iPacketCount{0};
432 PacketLink *pPackets{
nullptr};
437 void SetConnID(uint32_t inConnID) { iConnID = inConnID; }
const int C4NetStatisticsFreq
const int C4NetPingTimeout
const int C4NetAcceptTimeout
const int C4NetMaxClients
void SetPeerAddr(const C4NetIO::addr_t &nPeerAddr)
uint32_t iInPacketCounter
void SetCCore(const C4ClientCore &nCCore)
C4NetIO * getNetClass() const
C4Network2IOProtocol eProt
uint32_t getInPacketCounter() const
const char * getPassword() const
C4TimeMilliseconds tLastPong
const C4NetIO::addr_t & getPeerAddr() const
bool isHalfAccepted() const
bool Send(const C4NetIOPacket &rPkt)
void Set(C4NetIO *pnNetClass, C4Network2IOProtocol eProt, const C4NetIO::addr_t &nPeerAddr, const C4NetIO::addr_t &nConnectAddr, C4Network2IOConnStatus nStatus, const char *szPassword, uint32_t iID)
uint32_t getRemoteID() const
const C4ClientCore & getCCore() const
uint32_t iOutPacketCounter
CStdCSec & getCCoreCSec()
void SetBroadcastTarget(bool fSet)
void SetRemoteID(uint32_t iRemoteID)
void ClearPacketLog(uint32_t iStartNumber=~0)
C4TimeMilliseconds tLastPing
C4NetIO::addr_t ConnectAddr
std::unique_ptr< C4NetIOTCP::Socket > TcpSimOpenSocket
C4Network2IOConnection * pNext
bool isBroadcastTarget() const
bool isAutoAccepted() const
C4Network2IOConnStatus Status
void SetSocket(std::unique_ptr< C4NetIOTCP::Socket > socket)
bool CreatePostMortem(class C4PacketPostMortem *pPkt)
void OnPacketReceived(uint8_t iPacketType)
time_t getTimestamp() const
void DoStatistics(int iInterval, int *pIRateSum, int *pORateSum)
bool isConnecting() const
int getPacketLoss() const
~C4Network2IOConnection()
void SetStatus(C4Network2IOConnStatus nStatus)
void SetPingTime(int iPingTime)
PacketLogEntry * pPacketLog
uint32_t getOutPacketCounter() const
const C4NetIO::addr_t & getConnectAddr() const
class C4NetIO * pNetClass
C4Network2IOProtocol getProtocol() const
void RemoveAutoAccept(const C4ClientCore &CCore)
bool SendMsgToClient(C4NetIOPacket &rPkt, int iClient)
class C4Network2RefServer * pRefServer
bool ConnectWithSocket(const C4NetIO::addr_t &addr, C4Network2IOProtocol eProt, const C4ClientCore &nCCore, std::unique_ptr< C4NetIOTCP::Socket > socket, const char *szPassword=nullptr)
void SetLocalCCore(const C4ClientCore &CCore)
void OnDisconn(const C4NetIO::addr_t &addr, C4NetIO *pNetIO, const char *szReason) override
void HandlePuncherPacket(const C4NetIOPacket &rPacket)
C4Network2IOConnection * pConnList
bool Execute(int iTimeout, pollfd *) override
void BeginBroadcast(bool fSelectAll=false)
bool doAutoAccept(const C4ClientCore &CCore, const C4Network2IOConnection &Conn)
void HandleFwdReq(const class C4PacketFwd &rFwd, C4Network2IOConnection *pBy)
void CallHandlers(int iHandlers, const class C4IDPacket *pPacket, C4Network2IOConnection *pConn, bool fThread)
C4TimeMilliseconds tLastExecute
C4TimeMilliseconds tLastPing
void RemoveConnection(C4Network2IOConnection *pConn)
C4Network2IOProtocol getNetIOProt(C4NetIO *pNetIO)
int getProtORate(C4Network2IOProtocol eProt) const
C4Network2IOConnection * GetConnectionByID(uint32_t iConnID)
class C4Network2IODiscover * pNetIODiscover
bool BroadcastMsg(const C4NetIOPacket &rPkt)
void SendPuncherPacket(const C4NetpuncherPacket &, C4NetIO::HostAddress::AddressFamily family)
C4TimeMilliseconds GetNextTick(C4TimeMilliseconds tNow) override
class C4Network2UPnP * UPnPMgr
C4TimeMilliseconds tLastStatistic
bool IsPuncherAddr(const C4NetIO::addr_t &addr) const
virtual void OnError(const char *strError, C4NetIO *pNetIO)
bool HandlePacket(const C4NetIOPacket &rPacket, C4Network2IOConnection *pConn, bool fThread)
C4Network2IOConnection * GetMsgConnection(int iClientID)
C4NetIO::addr_t PuncherAddrIPv4
bool InitPuncher(C4NetIO::addr_t PuncherAddr)
void SetReference(class C4Network2Reference *pReference)
bool Connect(const C4NetIO::addr_t &addr, C4Network2IOProtocol eProt, const C4ClientCore &nCCore, const char *szPassword=nullptr)
void GenerateStatistics(int iInterval)
int getProtBCRate(C4Network2IOProtocol eProt) const
void SetAcceptMode(bool fAcceptAll)
bool Broadcast(const C4NetIOPacket &rPkt)
C4Network2IOConnection * GetConnection(const C4NetIO::addr_t &addr, C4NetIO *pNetIO)
C4NetIO::addr_t PuncherAddrIPv6
C4Network2IOConnection * GetDataConnection(int iClientID)
void Punch(const C4NetIO::addr_t &)
bool OnConn(const C4NetIO::addr_t &addr, const C4NetIO::addr_t &AddrConnect, const C4NetIO::addr_t *pOwnAddr, C4NetIO *pNetIO) override
C4Network2IOConnection * GetConnectionByConnAddr(const C4NetIO::addr_t &addr, C4NetIO *pNetIO)
C4NetIO * getNetIO(C4Network2IOProtocol eProt)
void AddAutoAccept(const C4ClientCore &CCore)
int getProtIRate(C4Network2IOProtocol eProt) const
void AddConnection(C4Network2IOConnection *pConn)
const char * getNetIOName(C4NetIO *pNetIO)
void OnThreadEvent(C4InteractiveEventType eEvent, void *pEventData) override
void SetExclusiveConnMode(bool fExclusiveConn)
bool Init(int16_t iPortTCP, int16_t iPortUDP, int16_t iPortDiscovery=-1, int16_t iPortRefServer=-1, bool fBroadcast=false, bool enable_upnp=true)
void OnPacket(const C4NetIOPacket &rPacket, C4NetIO *pNetIO) override
const C4ClientCore & getCCore() const
const char * getPassword() const
uint32_t getConnID() const
C4PacketConn(const class C4ClientCore &nCCore, uint32_t iConnID, const char *szPassword=nullptr)
void CompileFunc(StdCompiler *pComp) override
void CompileFunc(StdCompiler *pComp) override
const char * getMsg() const
bool isPasswordWrong() const
bool DoFwdTo(int32_t iClient) const
int32_t iClients[C4NetMaxClients]
const StdCopyBuf & getData() const
void CompileFunc(StdCompiler *pComp) override
int32_t getClientCnt() const
int32_t getClient(int32_t i) const
void SetData(const StdBuf &Pkt)
bool isNegativeList() const
void AddClient(int32_t iClient)
void SetListType(bool fnNegativeList)
void CompileFunc(StdCompiler *pComp) override
uint32_t getTravelTime() const
uint32_t getPacketCounter() const
C4PacketPing(uint32_t iPacketCounter=0, uint32_t iRemotePacketCounter=0)
void CompileFunc(StdCompiler *pComp) override
void SetConnID(uint32_t inConnID)
void Add(const C4NetIOPacket &rPkt)
uint32_t getPacketCount() const
void SetPacketCounter(uint32_t iPacketCounter)
const C4NetIOPacket * getPacket(uint32_t iNumber) const
~C4PacketPostMortem() override
uint32_t getConnID() const
const char * getData() const