#include <C4NetIO.h>
Classes | |
struct | AddAddrPacket |
struct | BinAddr |
union | BinAddr.__unnamed66__ |
struct | CheckPacketHdr |
struct | ClosePacket |
struct | ConnOKPacket |
struct | ConnPacket |
struct | DataPacketHdr |
class | Packet |
struct | PacketHdr |
class | PacketList |
class | Peer |
struct | TestPacket |
Public Types | |
typedef EndpointAddress | addr_t |
Public Member Functions | |
C4NetIOUDP () | |
~C4NetIOUDP () override | |
bool | Init (uint16_t iPort=addr_t::IPPORT_NONE) override |
bool | InitBroadcast (addr_t *pBroadcastAddr) override |
bool | Close () override |
bool | CloseBroadcast () override |
bool | Execute (int iMaxTime=TO_INF, pollfd *=nullptr) override |
bool | Connect (const addr_t &addr) override |
bool | Close (const addr_t &addr) override |
bool | Send (const C4NetIOPacket &rPacket) override |
bool | SendDirect (C4NetIOPacket &&rPacket) |
bool | Broadcast (const C4NetIOPacket &rPacket) override |
bool | SetBroadcast (const addr_t &addr, bool fSet=true) override |
C4TimeMilliseconds | GetNextTick (C4TimeMilliseconds tNow) override |
bool | GetStatistic (int *pBroadcastRate) override |
bool | GetConnStatistic (const addr_t &addr, int *pIRate, int *pORate, int *pLoss) override |
void | ClearStatistic () override |
void | SetCallback (CBClass *pnCallback) override |
virtual bool | Send (const class C4NetIOPacket &rPacket)=0 |
virtual bool | Broadcast (const class C4NetIOPacket &rPacket)=0 |
virtual void | UnBlock () |
void | GetFDs (std::vector< struct pollfd > &FDs) override |
bool | IsNotify () override |
virtual const char * | GetError () const |
void | ResetError () |
bool | ExecuteUntil (int iTimeout=-1) |
bool | IsSignaled () |
virtual bool | IsLowPriority () |
virtual uint32_t | TimerInterval () |
Static Public Member Functions | |
static std::vector< HostAddress > | GetLocalAddresses () |
Static Public Attributes | |
static const int | TO_INF = -1 |
Protected Types | |
enum | IPTypeID { IPID_Ping = 0 , IPID_Test = 1 , IPID_Conn = 2 , IPID_ConnOK = 3 , IPID_AddAddr = 7 , IPID_Data = 4 , IPID_Check = 5 , IPID_Close = 6 } |
Protected Member Functions | |
bool | BroadcastDirect (const Packet &rPacket, unsigned int iNr=~0u) |
bool | DoLoopbackTest () |
void | ClearMCPackets () |
void | AddPeer (Peer *pPeer) |
Peer * | GetPeer (const addr_t &addr) |
Peer * | ConnectPeer (const addr_t &PeerAddr, bool fFailCallback) |
void | OnShareFree (CStdCSecEx *pCSec) override |
void | DoCheck () |
const addr_t & | getMCAddr () const |
bool | SetMCLoopback (int fLoopback) |
bool | getMCLoopback () const |
void | SetReUseAddress (bool fAllow) |
bool | InitIPv6Socket (SOCKET socket) |
void | SetError (const char *strnError, bool fSockErr=false) |
void | Changed () |
Protected Attributes | |
CStdCSecEx | PeerListCSec |
CStdCSec | PeerListAddCSec |
CStdCSec | OutCSec |
bool | fInit {false} |
bool | fMultiCast {false} |
uint16_t | iPort |
Peer * | pPeerList {nullptr} |
bool | fSavePacket {false} |
C4NetIOPacket | LastPacket |
addr_t | MCLoopbackAddr |
bool | fDelayedLoopbackTest {false} |
C4TimeMilliseconds | tNextCheck |
PacketList | OPackets |
unsigned int | iOPacketCounter {0} |
int | iBroadcastRate {0} |
CStdCSec | StatCSec |
CStdCSec | ExecuteCSec |
StdCopyStrBuf | Error |
Static Protected Attributes | |
static const unsigned int | iVersion = 2 |
static const unsigned int | iStdTimeout = 1000 |
static const unsigned int | iCheckInterval = 1000 |
static const unsigned int | iMaxOPacketBacklog = 10000 |
static const unsigned int | iUDPHeaderSize = 8 + 24 |
Friends | |
class | Packet |
class | PacketList |
class | Peer |
union C4NetIOUDP::BinAddr.__unnamed66__ |
Definition at line 2398 of file C4NetIO.cpp.
Class Members | ||
---|---|---|
uint8_t | v4[4] | |
uint8_t | v6[16] |
|
inherited |
|
protected |
C4NetIOUDP::C4NetIOUDP | ( | ) |
Definition at line 2458 of file C4NetIO.cpp.
|
override |
Definition at line 2467 of file C4NetIO.cpp.
References Close().
|
protected |
Definition at line 3756 of file C4NetIO.cpp.
References StdSchedulerProc::Changed(), C4NetIOUDP::Peer::Next, PeerListAddCSec, PeerListCSec, and pPeerList.
Referenced by ConnectPeer().
|
override |
Definition at line 2745 of file C4NetIO.cpp.
References C4NetIOUDP::PacketList::AddPacket(), BroadcastDirect(), C4NetIOUDP::Peer::doBroadcast(), C4NetIOPacket::Duplicate(), C4NetIOUDP::Packet::FragmentCnt(), iOPacketCounter, C4NetIOUDP::Peer::MultiCast(), C4NetIOUDP::Peer::Next, OPackets, C4NetIOUDP::Peer::Open(), OutCSec, Packet, PeerListCSec, pPeerList, and C4NetIOUDP::Peer::Send().
|
pure virtualinherited |
|
protected |
Definition at line 3660 of file C4NetIO.cpp.
References C4NetIOUDP::Packet::FragmentCnt(), C4NetIOUDP::Packet::GetFragment(), C4NetIOUDP::Packet::GetNr(), and SendDirect().
Referenced by Broadcast().
|
protectedinherited |
Definition at line 108 of file StdScheduler.cpp.
References s.
Referenced by C4NetIOTCP::Accept(), C4NetIOTCP::AddConnectWait(), AddPeer(), C4NetIOTCP::Listen(), and CStdTimerProc::SetDelay().
|
protected |
Definition at line 3738 of file C4NetIO.cpp.
References C4NetIOUDP::PacketList::Clear(), C4NetIOUDP::PacketList::ClearPackets(), C4NetIOUDP::Peer::GetMCAckPacketCounter(), C4NetIOUDP::Peer::Next, OPackets, OutCSec, PeerListCSec, and pPeerList.
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2818 of file C4NetIO.cpp.
References iBroadcastRate, C4NetIOUDP::Peer::Next, PeerListCSec, pPeerList, and StatCSec.
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2639 of file C4NetIO.cpp.
References CStdShareLock::Clear(), C4NetIOSimpleUDP::Close(), CloseBroadcast(), fInit, fMultiCast, C4NetIOUDP::Peer::Next, PeerListCSec, and pPeerList.
Referenced by Init(), main(), C4NetIOUDP::Peer::OnConn(), C4NetIOUDP::Peer::OnRecv(), C4NetIOUDP::Peer::OnTimeout(), C4NetIOUDP::Peer::Send(), ~C4NetIOUDP(), and C4NetIOUDP::Peer::~Peer().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2723 of file C4NetIO.cpp.
References C4NetIOUDP::Peer::Close(), GetPeer(), and PeerListCSec.
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2667 of file C4NetIO.cpp.
References C4NetIOSimpleUDP::CloseBroadcast(), fMultiCast, and C4NetIO::ResetError().
Referenced by Close(), and InitBroadcast().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2717 of file C4NetIO.cpp.
References ConnectPeer().
Referenced by main(), and C4NetIOUDP::Peer::OnRecv().
|
protected |
Definition at line 3803 of file C4NetIO.cpp.
References AddPeer(), CStdLock::Clear(), C4NetIOUDP::Peer::Close(), C4NetIOUDP::Peer::Connect(), GetPeer(), Peer, PeerListAddCSec, and PeerListCSec.
Referenced by Connect().
|
protected |
Definition at line 3823 of file C4NetIO.cpp.
References C4NetIOUDP::CheckPacketHdr::AskCount, fMultiCast, iCheckInterval, iOPacketCounter, IPID_Check, C4NetIOUDP::CheckPacketHdr::MCAskCount, C4NetIOUDP::Peer::MultiCast(), C4NetIOUDP::Peer::Next, C4TimeMilliseconds::Now(), C4NetIOUDP::PacketHdr::Nr, C4NetIOUDP::Peer::Open(), PeerListCSec, pPeerList, SendDirect(), C4NetIOUDP::PacketHdr::StatusByte, and tNextCheck.
Referenced by C4NetIOUDP::Peer::Check(), and Execute().
|
protected |
Definition at line 3699 of file C4NetIO.cpp.
References C4NetIOSimpleUDP::Broadcast(), StdBuf::Compare(), C4NetIOSimpleUDP::Execute(), fSavePacket, C4NetIOPacket::getAddr(), C4NetIO::GetError(), C4NetIOSimpleUDP::getMCLoopback(), StdBuf::getSize(), IPID_Test, iStdTimeout, LastPacket, MCLoopbackAddr, C4NetIO::SetError(), C4NetIOSimpleUDP::SetMCLoopback(), and UnsyncedRandom().
Referenced by Execute(), and InitBroadcast().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2679 of file C4NetIO.cpp.
References DoCheck(), DoLoopbackTest(), C4NetIOSimpleUDP::Execute(), ExecuteCSec, fDelayedLoopbackTest, fInit, fMultiCast, GetNextTick(), C4NetIOUDP::Peer::Next, C4TimeMilliseconds::Now(), PeerListCSec, pPeerList, C4NetIO::ResetError(), C4NetIO::SetError(), tNextCheck, and C4NetIO::TO_INF.
|
inherited |
Definition at line 33 of file StdScheduler.cpp.
References StdSchedulerProc::Execute(), and C4TimeMilliseconds::Now().
Referenced by main().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2805 of file C4NetIO.cpp.
References C4NetIOUDP::Peer::GetIRate(), C4NetIOUDP::Peer::GetORate(), GetPeer(), C4NetIOUDP::Peer::Open(), and PeerListCSec.
|
inlinevirtualinherited |
Definition at line 286 of file C4NetIO.h.
References C4NetIO::Error, and StdStrBuf::getData().
Referenced by C4Network2IO::ConnectWithSocket(), DoLoopbackTest(), C4StartupNetDlg::DoRefresh(), C4Network2IO::Init(), InitBroadcast(), main(), MyCBClass::OnConn(), C4ChatControl::OnConnectBtn(), MyCBClass::OnPacket(), C4ChatControl::ProcessInput(), and C4Network2IOConnection::Send().
|
overridevirtualinherited |
Reimplemented from StdSchedulerProc.
Definition at line 2252 of file C4NetIO.cpp.
References INVALID_SOCKET.
|
staticinherited |
Definition at line 631 of file C4NetIO.cpp.
References C4NetIO::HostAddress::IsLoopback(), and C4NetIO::HostAddress::SetHost().
Referenced by C4Network2Client::AddLocalAddrs(), and InitBroadcast().
|
inlineprotectedinherited |
Definition at line 573 of file C4NetIO.h.
Referenced by SendDirect().
|
inlineprotectedinherited |
Definition at line 577 of file C4NetIO.h.
Referenced by DoLoopbackTest(), and InitBroadcast().
|
overridevirtual |
Reimplemented from StdSchedulerProc.
Definition at line 2783 of file C4NetIO.cpp.
References C4TimeMilliseconds::IsInfinite(), C4NetIOUDP::Peer::Next, PeerListCSec, pPeerList, and tNextCheck.
Referenced by Execute().
|
protected |
Definition at line 3793 of file C4NetIO.cpp.
References C4NetIOUDP::Peer::Next, PeerListCSec, and pPeerList.
Referenced by Close(), ConnectPeer(), GetConnStatistic(), Send(), and SetBroadcast().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2798 of file C4NetIO.cpp.
References iBroadcastRate, and StatCSec.
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2472 of file C4NetIO.cpp.
References Close(), fInit, fMultiCast, iCheckInterval, C4NetIOSimpleUDP::Init(), iPort, C4TimeMilliseconds::Now(), C4NetIOSimpleUDP::SetCallback(), and tNextCheck.
Referenced by main().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2501 of file C4NetIO.cpp.
References C4NetIOSimpleUDP::Broadcast(), C4NetIOPacket::Clear(), C4NetIOSimpleUDP::CloseBroadcast(), CloseBroadcast(), DoLoopbackTest(), C4NetIOSimpleUDP::Execute(), fDelayedLoopbackTest, fInit, fMultiCast, fSavePacket, C4NetIOPacket::getAddr(), C4NetIO::GetError(), C4NetIO::GetLocalAddresses(), C4NetIOSimpleUDP::getMCLoopback(), C4NetIO::EndpointAddress::GetPort(), iBroadcastRate, C4NetIOSimpleUDP::InitBroadcast(), iOPacketCounter, IPID_Ping, iPort, C4NetIO::HostAddress::IPv6, C4NetIO::HostAddress::IsMulticast(), StdBuf::isNull(), C4NetIO::EndpointAddress::IsNull(), iStdTimeout, LastPacket, MCLoopbackAddr, C4NetIO::ResetError(), C4NetIO::EndpointAddress::SetAddress(), C4NetIO::SetError(), C4NetIOSimpleUDP::SetMCLoopback(), C4NetIO::EndpointAddress::SetPort(), and UnsyncedRandom().
Referenced by main().
|
protectedinherited |
Definition at line 730 of file C4NetIO.cpp.
References C4NetIO::SetError(), and SOCKET_ERROR.
Referenced by C4NetIOTCP::CreateSocket(), C4NetIOSimpleUDP::Init(), and C4NetIOTCP::Listen().
|
inlinevirtualinherited |
Definition at line 82 of file StdScheduler.h.
|
inlineoverridevirtualinherited |
|
inherited |
|
overrideprotectedvirtual |
Implements CStdCSecExCallback.
Definition at line 3767 of file C4NetIO.cpp.
References C4NetIOUDP::Peer::Closed(), C4NetIOUDP::Peer::Next, PeerListCSec, and pPeerList.
|
inlineinherited |
Definition at line 287 of file C4NetIO.h.
References StdStrBuf::Clear(), and C4NetIO::Error.
Referenced by C4NetIO::C4NetIO(), C4NetIOTCP::Close(), C4NetIOSimpleUDP::Close(), CloseBroadcast(), C4Network2IO::ConnectWithSocket(), C4NetIOSimpleUDP::Execute(), Execute(), C4NetIOSimpleUDP::Init(), C4NetIOSimpleUDP::InitBroadcast(), InitBroadcast(), C4NetIOSimpleUDP::Send(), and C4Network2IOConnection::Send().
|
override |
Definition at line 2734 of file C4NetIO.cpp.
References C4NetIOPacket::getAddr(), GetPeer(), PeerListCSec, and C4NetIOUDP::Peer::Send().
|
pure virtualinherited |
Referenced by main(), MyCBClass::OnConn(), MyCBClass::OnPacket(), C4Network2IOConnection::Send(), and C4Network2IO::SendPuncherPacket().
bool C4NetIOUDP::SendDirect | ( | C4NetIOPacket && | rPacket | ) |
Definition at line 3672 of file C4NetIO.cpp.
References C4NetIOSimpleUDP::getMCAddr(), iBroadcastRate, IPID_Test, iUDPHeaderSize, C4NetIOSimpleUDP::Send(), C4NetIOPacket::SetAddr(), StatCSec, and UnsyncedRandom().
Referenced by BroadcastDirect(), C4NetIOUDP::Peer::Close(), DoCheck(), C4NetIOUDP::Peer::DoCheck(), C4NetIOUDP::Peer::DoConn(), C4NetIOUDP::Peer::OnRecv(), C4NetIOUDP::Peer::Send(), and C4NetIOUDP::Peer::SendDirect().
|
overridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 2772 of file C4NetIO.cpp.
References GetPeer(), PeerListCSec, and C4NetIOUDP::Peer::SetBroadcast().
|
inlineoverridevirtual |
Reimplemented from C4NetIOSimpleUDP.
Definition at line 937 of file C4NetIO.h.
Referenced by C4PuncherServer::C4PuncherServer().
|
protectedinherited |
Definition at line 750 of file C4NetIO.cpp.
References StdStrBuf::Copy(), C4NetIO::Error, StdStrBuf::Format(), GetSocketErrorMsg(), and HaveSocketError().
Referenced by C4NetIOTCP::Accept(), C4NetIOTCP::Bind(), C4NetIOSimpleUDP::CloseBroadcast(), C4NetIOTCP::Connect(), C4Network2IRCClient::Connect(), C4NetIOTCP::CreateSocket(), DoLoopbackTest(), C4NetIOSimpleUDP::Execute(), Execute(), C4NetIOTCP::Execute(), C4NetIOTCP::Init(), C4NetIOSimpleUDP::Init(), C4NetIOSimpleUDP::InitBroadcast(), InitBroadcast(), C4NetIO::InitIPv6Socket(), C4Network2IRCClient::Join(), C4NetIOTCP::Listen(), C4NetIOSimpleUDP::Send(), C4Network2IRCClient::Send(), C4NetIOTCP::UnBlock(), and C4NetIOSimpleUDP::UnBlock().
|
protectedinherited |
Definition at line 2290 of file C4NetIO.cpp.
References iSize, and SOCKET_ERROR.
Referenced by DoLoopbackTest(), C4Network2IODiscover::Init(), C4Network2IODiscoverClient::Init(), C4NetIOSimpleUDP::InitBroadcast(), and InitBroadcast().
|
protectedinherited |
Definition at line 2302 of file C4NetIO.cpp.
Referenced by C4Network2IODiscover::Init(), and C4Network2IODiscoverClient::Init().
|
inlinevirtualinherited |
|
virtualinherited |
Definition at line 2243 of file C4NetIO.cpp.
References C4NetIO::SetError().
|
friend |
Definition at line 706 of file C4NetIO.h.
Referenced by Broadcast(), C4NetIOUDP::Peer::DoCheck(), C4NetIOUDP::Packet::GetFragment(), C4NetIOUDP::Peer::OnRecv(), and C4NetIOUDP::Peer::Send().
|
friend |
|
friend |
Definition at line 869 of file C4NetIO.h.
Referenced by ConnectPeer().
|
protectedinherited |
Definition at line 283 of file C4NetIO.h.
Referenced by C4NetIO::GetError(), C4NetIO::ResetError(), and C4NetIO::SetError().
|
protected |
|
protected |
Definition at line 890 of file C4NetIO.h.
Referenced by Execute(), and InitBroadcast().
|
protected |
|
protected |
Definition at line 878 of file C4NetIO.h.
Referenced by Close(), CloseBroadcast(), C4NetIOUDP::Peer::Connect(), DoCheck(), Execute(), Init(), InitBroadcast(), C4NetIOUDP::Peer::OnRecv(), and C4NetIOUDP::Peer::OnTimeout().
|
protected |
Definition at line 885 of file C4NetIO.h.
Referenced by DoLoopbackTest(), and InitBroadcast().
|
protected |
Definition at line 900 of file C4NetIO.h.
Referenced by ClearStatistic(), GetStatistic(), InitBroadcast(), and SendDirect().
|
staticprotected |
|
staticprotected |
|
protected |
Definition at line 897 of file C4NetIO.h.
Referenced by Broadcast(), DoCheck(), C4NetIOUDP::Peer::DoCheck(), C4NetIOUDP::Peer::DoConn(), InitBroadcast(), C4NetIOUDP::Peer::OnRecv(), and C4NetIOUDP::Peer::Send().
|
protected |
Definition at line 879 of file C4NetIO.h.
Referenced by Init(), and InitBroadcast().
|
staticprotected |
Definition at line 655 of file C4NetIO.h.
Referenced by C4NetIOUDP::Peer::DoConn(), DoLoopbackTest(), and InitBroadcast().
|
staticprotected |
Definition at line 660 of file C4NetIO.h.
Referenced by C4NetIOUDP::Peer::OnRecv(), SendDirect(), and C4NetIOUDP::Peer::SendDirect().
|
staticprotected |
|
protected |
Definition at line 886 of file C4NetIO.h.
Referenced by DoLoopbackTest(), and InitBroadcast().
|
protected |
Definition at line 889 of file C4NetIO.h.
Referenced by DoLoopbackTest(), and InitBroadcast().
|
protected |
Definition at line 896 of file C4NetIO.h.
Referenced by Broadcast(), ClearMCPackets(), C4NetIOUDP::Peer::OnRecv(), and C4NetIOUDP::Peer::Send().
|
protected |
Definition at line 874 of file C4NetIO.h.
Referenced by Broadcast(), ClearMCPackets(), C4NetIOUDP::Peer::OnRecv(), and C4NetIOUDP::Peer::Send().
|
protected |
Definition at line 873 of file C4NetIO.h.
Referenced by AddPeer(), and ConnectPeer().
|
protected |
Definition at line 872 of file C4NetIO.h.
Referenced by AddPeer(), Broadcast(), ClearMCPackets(), ClearStatistic(), Close(), ConnectPeer(), DoCheck(), Execute(), GetConnStatistic(), GetNextTick(), GetPeer(), OnShareFree(), Send(), and SetBroadcast().
|
protected |
Definition at line 882 of file C4NetIO.h.
Referenced by AddPeer(), Broadcast(), ClearMCPackets(), ClearStatistic(), Close(), DoCheck(), Execute(), GetNextTick(), GetPeer(), and OnShareFree().
|
protected |
Definition at line 901 of file C4NetIO.h.
Referenced by ClearStatistic(), C4NetIOUDP::Peer::ClearStatistics(), C4NetIOUDP::Peer::DoCheck(), GetStatistic(), C4NetIOUDP::Peer::OnRecv(), SendDirect(), and C4NetIOUDP::Peer::SendDirect().
|
protected |
|
staticinherited |
Definition at line 66 of file C4NetIO.h.
Referenced by Execute(), C4NetIOTCP::Execute(), C4NetIOUDP::Peer::OnConn(), C4NetIOUDP::Peer::OnTimeout(), and C4NetIOUDP::Peer::SetTimeout().