58struct ConnectionEvent;
85struct ConnectionCommand;
106 unsigned int max_packet_size) {};
126 virtual bool isTimedOut(
float timeout, std::string &reason);
143 return m_rtt.min_rtt;
145 return m_rtt.max_rtt;
147 return m_rtt.avg_rtt;
149 return m_rtt.jitter_min;
151 return m_rtt.jitter_max;
153 return m_rtt.jitter_avg;
170 const std::string &profiler_id =
"",
171 unsigned int num_samples = 1000);
Definition container.h:126
Definition networkpacket.h:16
UDPPeer * createServerPeer(const Address &sender)
Definition impl.cpp:1644
std::map< session_t, Peer * > m_peers
Definition impl.h:290
u32 GetProtocolID() const
Definition impl.h:245
Address GetPeerAddress(session_t peer_id)
Definition impl.cpp:1500
void TriggerSend()
Definition impl.cpp:1320
std::mutex m_peers_mutex
Definition impl.h:292
float getPeerStat(session_t peer_id, rtt_stat_type type)
Definition impl.cpp:1509
UDPSocket m_udpSocket
Definition impl.h:271
PeerHelper getPeerNoEx(session_t peer_id)
Definition impl.cpp:1325
bool deletePeer(session_t peer_id, bool timeout)
Definition impl.cpp:1371
bool ConnectedToServer()
Definition impl.h:279
Connection(u32 max_packet_size, float timeout, UDPSocket &&socket, bool is_server, PeerHandler *peerhandler)
Definition impl.cpp:1272
void Connect(Address address)
Definition impl.cpp:1412
MutexedQueue< ConnectionCommandPtr > m_command_queue
Definition impl.h:273
void DisconnectPeer(session_t peer_id)
Definition impl.cpp:1607
u32 getActiveCount()
Definition impl.cpp:1356
ConnectionEventPtr waitEvent(u32 timeout_ms)
Definition impl.cpp:1395
u32 m_protocol_id
Definition impl.h:288
session_t lookupPeer(const Address &sender)
Definition impl.cpp:1341
friend class ConnectionReceiveThread
Definition impl.h:225
session_t createPeer(const Address &sender, int fd)
Definition impl.cpp:1552
void sendAck(session_t peer_id, u8 channelnum, u16 seqnum)
Definition impl.cpp:1626
std::atomic< bool > m_shutting_down
Definition impl.h:300
bool ReceiveTimeoutMs(NetworkPacket *pkt, u32 timeout_ms)
Definition impl.cpp:1439
void putEvent(ConnectionEventPtr e)
Definition impl.cpp:1314
std::atomic< session_t > m_peer_id
Definition impl.h:287
float getLocalStat(rate_stat_type type)
Definition impl.cpp:1517
std::unique_ptr< ConnectionSendThread > m_sendThread
Definition impl.h:294
session_t GetPeerID() const
Definition impl.h:241
void Send(session_t peer_id, u8 channelnum, NetworkPacket *pkt, bool reliable)
Definition impl.cpp:1483
bool Connected()
Definition impl.cpp:1417
void putCommand(ConnectionCommandPtr c)
Definition impl.cpp:1404
MutexedQueue< ConnectionEventPtr > m_event_queue
Definition impl.h:285
void SetPeerID(session_t id)
Definition impl.cpp:1612
~Connection()
Definition impl.cpp:1295
void doResendOne(session_t peer_id)
Definition impl.cpp:1620
std::unique_ptr< ConnectionReceiveThread > m_receiveThread
Definition impl.h:295
std::vector< session_t > m_peer_ids
Definition impl.h:291
PeerHandler * m_bc_peerhandler
Definition impl.h:298
friend class ConnectionSendThread
Definition impl.h:224
void Disconnect()
Definition impl.cpp:1434
const std::string getDesc()
Definition impl.cpp:1601
std::vector< session_t > getPeerIDs()
Definition impl.h:263
Definition connection.h:47
IPeer(session_t id)
Definition connection.h:42
const session_t id
Definition connection.h:37
Definition peerhandler.h:13
PeerHelper & operator=(Peer *peer)
Definition impl.cpp:847
PeerHelper(Peer *peer)
Definition impl.h:33
Peer * operator&() const
Definition impl.h:38
bool operator!()
Definition impl.h:40
bool operator!=(std::nullptr_t)
Definition impl.h:41
Peer * operator->() const
Definition impl.h:37
~PeerHelper()
Definition impl.cpp:839
Peer * m_peer
Definition impl.h:44
bool m_pending_deletion
Definition impl.h:178
bool isHalfOpen() const
Definition impl.h:117
unsigned int m_increment_packets_remaining
Definition impl.h:128
virtual float getStat(rtt_stat_type type) const
Definition impl.h:140
bool isPendingDeletion() const
Definition impl.h:108
void SetFullyOpen()
Definition impl.h:121
rttstats m_rtt
Definition impl.h:198
Peer(session_t id, const Address &address, Connection *connection)
Definition impl.h:159
virtual void reportRTT(float rtt)
Definition impl.h:167
u64 m_last_timeout_check
Definition impl.h:216
virtual ~Peer()
Definition impl.h:98
friend class PeerHelper
Definition impl.h:96
Connection * m_connection
Definition impl.h:180
void RTTStatistics(float rtt, const std::string &profiler_id="", unsigned int num_samples=1000)
Definition impl.cpp:882
float m_timeout_counter
Definition impl.h:214
virtual void PutReliableSendCommand(ConnectionCommandPtr &c, unsigned int max_packet_size)
Definition impl.h:105
float m_last_rtt
Definition impl.h:199
bool m_half_open
Definition impl.h:208
void DecUseCount()
Definition impl.cpp:869
Address address
Definition impl.h:183
std::mutex m_exclusive_access_mutex
Definition impl.h:176
unsigned int m_usage
Definition impl.h:211
virtual void setNextSplitSequenceNumber(u8 channel, u16 seqnum)
Definition impl.h:131
void Drop()
Definition impl.cpp:948
virtual bool isTimedOut(float timeout, std::string &reason)
Definition impl.cpp:930
bool IncUseCount()
Definition impl.cpp:857
void ResetTimeout()
Definition impl.h:112
virtual u16 getNextSplitSequenceNumber(u8 channel)
Definition impl.h:130
virtual SharedBuffer< u8 > addSplitPacket(u8 channel, BufferedPacketPtr &toadd, bool reliable)
Definition impl.h:132
float m_ping_timer
Definition impl.h:186
virtual bool Ping(float dtime, SharedBuffer< u8 > &data)
Definition impl.h:138
Definition internal.h:481
#define PEER_ID_SERVER
Definition constants.h:20
#define FATAL_ERROR_IF(expr, msg)
Definition debug.h:54
#define FATAL_ERROR(msg)
Definition debug.h:51
std::lock_guard< std::mutex > MutexAutoLock
Definition mutex_auto_lock.h:31
rtt_stat_type
Definition connection.h:16
@ MAX_RTT
Definition connection.h:18
@ MAX_JITTER
Definition connection.h:21
@ AVG_JITTER
Definition connection.h:22
@ MIN_JITTER
Definition connection.h:20
@ MIN_RTT
Definition connection.h:17
@ AVG_RTT
Definition connection.h:19
std::shared_ptr< ConnectionEvent > ConnectionEventPtr
Definition impl.h:59
std::shared_ptr< BufferedPacket > BufferedPacketPtr
Definition impl.h:89
std::shared_ptr< ConnectionCommand > ConnectionCommandPtr
Definition impl.h:86
ConnectionEventType
Definition impl.h:51
@ CONNEVENT_PEER_REMOVED
Definition impl.h:55
@ CONNEVENT_DATA_RECEIVED
Definition impl.h:53
@ CONNEVENT_PEER_ADDED
Definition impl.h:54
@ CONNEVENT_NONE
Definition impl.h:52
rate_stat_type
Definition connection.h:25
Definition porting.cpp:86
u16 session_t
Definition networkprotocol.h:27
Definition internal.h:195
static ConnectionEventPtr dataReceived(session_t peer_id, const Buffer< u8 > &data)
Definition impl.cpp:1243
static ConnectionEventPtr peerRemoved(session_t peer_id, bool is_timeout, Address address)
Definition impl.cpp:1259
static ConnectionEventPtr create(ConnectionEventType type)
Definition impl.cpp:1238
const ConnectionEventType type
Definition impl.h:64
Buffer< u8 > data
Definition impl.h:66
DISABLE_CLASS_COPY(ConnectionEvent)
bool timeout
Definition impl.h:67
static ConnectionEventPtr peerAdded(session_t peer_id, Address address)
Definition impl.cpp:1251
Address address
Definition impl.h:68
const char * describe() const
Definition impl.cpp:1222
session_t peer_id
Definition impl.h:65
ConnectionEvent(ConnectionEventType type_)
Definition impl.h:81
float jitter_min
Definition impl.h:190
float jitter_avg
Definition impl.h:192
float max_rtt
Definition impl.h:194
float min_rtt
Definition impl.h:193
float jitter_max
Definition impl.h:191
float avg_rtt
Definition impl.h:195