40class ConnectionReceiveThread;
41class ConnectionSendThread;
85struct ConnectionEvent;
113struct ConnectionCommand;
137 unsigned int max_packet_size) {};
159 virtual bool isTimedOut(
float timeout, std::string &reason);
203 const std::string &profiler_id =
"",
204 unsigned int num_samples = 1000);
260 Connection(u32 protocol_id, u32 max_packet_size,
float timeout,
bool ipv6,
Definition: container.h:132
Definition: networkpacket.h:27
Definition: pointer.h:162
Definition: connectionthreads.h:114
Definition: connectionthreads.h:56
Definition: connection.h:255
UDPPeer * createServerPeer(const Address &sender)
Definition: connection.cpp:1655
std::map< session_t, Peer * > m_peers
Definition: connection.h:327
u32 GetProtocolID() const
Definition: connection.h:282
Address GetPeerAddress(session_t peer_id)
Definition: connection.cpp:1518
void TriggerSend()
Definition: connection.cpp:1318
std::mutex m_peers_mutex
Definition: connection.h:329
float getPeerStat(session_t peer_id, rtt_stat_type type)
Definition: connection.cpp:1527
UDPSocket m_udpSocket
Definition: connection.h:308
PeerHelper getPeerNoEx(session_t peer_id)
Definition: connection.cpp:1323
bool deletePeer(session_t peer_id, bool timeout)
Definition: connection.cpp:1369
bool ConnectedToServer()
Definition: connection.h:316
void SetTimeoutMs(u32 timeout)
Definition: connection.h:269
bool m_shutting_down
Definition: connection.h:340
void Connect(Address address)
Definition: connection.cpp:1415
u32 m_bc_receive_timeout
Definition: connection.h:338
MutexedQueue< ConnectionCommandPtr > m_command_queue
Definition: connection.h:310
void DisconnectPeer(session_t peer_id)
Definition: connection.cpp:1626
u32 getActiveCount()
Definition: connection.cpp:1354
void Receive(NetworkPacket *pkt)
Definition: connection.cpp:1489
ConnectionEventPtr waitEvent(u32 timeout_ms)
Definition: connection.cpp:1393
u32 m_protocol_id
Definition: connection.h:325
session_t lookupPeer(const Address &sender)
Definition: connection.cpp:1339
session_t createPeer(const Address &sender, int fd)
Definition: connection.cpp:1570
void sendAck(session_t peer_id, u8 channelnum, u16 seqnum)
Definition: connection.cpp:1637
bool ReceiveTimeoutMs(NetworkPacket *pkt, u32 timeout_ms)
Definition: connection.cpp:1442
void putEvent(ConnectionEventPtr e)
Definition: connection.cpp:1312
bool TryReceive(NetworkPacket *pkt)
Definition: connection.cpp:1496
float getLocalStat(rate_stat_type type)
Definition: connection.cpp:1535
std::mutex m_info_mutex
Definition: connection.h:334
std::unique_ptr< ConnectionSendThread > m_sendThread
Definition: connection.h:331
void Serve(Address bind_addr)
Definition: connection.cpp:1410
session_t GetPeerID() const
Definition: connection.h:278
void Send(session_t peer_id, u8 channelnum, NetworkPacket *pkt, bool reliable)
Definition: connection.cpp:1501
bool Connected()
Definition: connection.cpp:1420
session_t m_peer_id
Definition: connection.h:324
void putCommand(ConnectionCommandPtr c)
Definition: connection.cpp:1402
MutexedQueue< ConnectionEventPtr > m_event_queue
Definition: connection.h:322
void SetPeerID(session_t id)
Definition: connection.h:294
~Connection()
Definition: connection.cpp:1288
void doResendOne(session_t peer_id)
Definition: connection.cpp:1631
std::unique_ptr< ConnectionReceiveThread > m_receiveThread
Definition: connection.h:332
std::vector< session_t > m_peer_ids
Definition: connection.h:328
PeerHandler * m_bc_peerhandler
Definition: connection.h:337
void Disconnect()
Definition: connection.cpp:1437
const std::string getDesc()
Definition: connection.cpp:1619
std::vector< session_t > getPeerIDs()
Definition: connection.h:300
Definition: peerhandler.h:40
Definition: connection.h:56
PeerHelper & operator=(Peer *peer)
Definition: connection.cpp:843
PeerHelper(Peer *peer)
Definition: connection.h:59
Peer * operator&() const
Definition: connection.h:64
bool operator!()
Definition: connection.h:66
bool operator!=(std::nullptr_t)
Definition: connection.h:67
Peer * operator->() const
Definition: connection.h:63
~PeerHelper()
Definition: connection.cpp:835
Peer * m_peer
Definition: connection.h:70
Definition: connection.h:122
bool m_pending_deletion
Definition: connection.h:211
bool isHalfOpen() const
Definition: connection.h:150
unsigned int m_increment_packets_remaining
Definition: connection.h:161
virtual float getStat(rtt_stat_type type) const
Definition: connection.h:173
bool isPendingDeletion() const
Definition: connection.h:141
void SetFullyOpen()
Definition: connection.h:154
rttstats m_rtt
Definition: connection.h:231
Peer(session_t id, const Address &address, Connection *connection)
Definition: connection.h:192
virtual const Address & getAddress() const =0
virtual void reportRTT(float rtt)
Definition: connection.h:200
u64 m_last_timeout_check
Definition: connection.h:249
virtual ~Peer()
Definition: connection.h:126
const session_t id
Definition: connection.h:132
Connection * m_connection
Definition: connection.h:213
void RTTStatistics(float rtt, const std::string &profiler_id="", unsigned int num_samples=1000)
Definition: connection.cpp:878
float m_timeout_counter
Definition: connection.h:247
virtual void PutReliableSendCommand(ConnectionCommandPtr &c, unsigned int max_packet_size)
Definition: connection.h:136
float m_last_rtt
Definition: connection.h:232
bool m_half_open
Definition: connection.h:241
void DecUseCount()
Definition: connection.cpp:865
Address address
Definition: connection.h:216
std::mutex m_exclusive_access_mutex
Definition: connection.h:209
unsigned int m_usage
Definition: connection.h:244
virtual void setNextSplitSequenceNumber(u8 channel, u16 seqnum)
Definition: connection.h:164
void Drop()
Definition: connection.cpp:944
virtual bool isTimedOut(float timeout, std::string &reason)
Definition: connection.cpp:926
bool IncUseCount()
Definition: connection.cpp:853
void ResetTimeout()
Definition: connection.h:145
virtual u16 getNextSplitSequenceNumber(u8 channel)
Definition: connection.h:163
virtual SharedBuffer< u8 > addSplitPacket(u8 channel, BufferedPacketPtr &toadd, bool reliable)
Definition: connection.h:165
float m_ping_timer
Definition: connection.h:219
virtual bool Ping(float dtime, SharedBuffer< u8 > &data)
Definition: connection.h:171
Definition: connection_internal.h:444
#define PEER_ID_SERVER
Definition: constants.h:35
#define FATAL_ERROR_IF(expr, msg)
Definition: debug.h:51
#define FATAL_ERROR(msg)
Definition: debug.h:48
std::unique_lock< std::mutex > MutexAutoLock
Definition: mutex_auto_lock.h:29
rate_stat_type
Definition: connection.h:43
@ CUR_LOSS_RATE
Definition: connection.h:48
@ AVG_INC_RATE
Definition: connection.h:47
@ CUR_INC_RATE
Definition: connection.h:46
@ CUR_DL_RATE
Definition: connection.h:44
@ AVG_DL_RATE
Definition: connection.h:45
@ AVG_LOSS_RATE
Definition: connection.h:49
std::shared_ptr< ConnectionEvent > ConnectionEventPtr
Definition: connection.h:86
rtt_stat_type
Definition: peerhandler.h:28
@ MAX_RTT
Definition: peerhandler.h:30
@ MAX_JITTER
Definition: peerhandler.h:33
@ AVG_JITTER
Definition: peerhandler.h:34
@ MIN_JITTER
Definition: peerhandler.h:32
@ MIN_RTT
Definition: peerhandler.h:29
@ AVG_RTT
Definition: peerhandler.h:31
std::shared_ptr< BufferedPacket > BufferedPacketPtr
Definition: connection.h:117
std::shared_ptr< ConnectionCommand > ConnectionCommandPtr
Definition: connection.h:114
ConnectionEventType
Definition: connection.h:77
@ CONNEVENT_PEER_REMOVED
Definition: connection.h:81
@ CONNEVENT_DATA_RECEIVED
Definition: connection.h:79
@ CONNEVENT_PEER_ADDED
Definition: connection.h:80
@ CONNEVENT_NONE
Definition: connection.h:78
@ CONNEVENT_BIND_FAILED
Definition: connection.h:82
Definition: porting.cpp:86
u16 session_t
Definition: networkprotocol.h:251
Definition: connection_internal.h:170
Definition: connection.h:90
static ConnectionEventPtr dataReceived(session_t peer_id, const Buffer< u8 > &data)
Definition: connection.cpp:1233
static ConnectionEventPtr peerRemoved(session_t peer_id, bool is_timeout, Address address)
Definition: connection.cpp:1249
static ConnectionEventPtr create(ConnectionEventType type)
Definition: connection.cpp:1228
static ConnectionEventPtr bindFailed()
Definition: connection.cpp:1258
const ConnectionEventType type
Definition: connection.h:91
Buffer< u8 > data
Definition: connection.h:93
DISABLE_CLASS_COPY(ConnectionEvent)
bool timeout
Definition: connection.h:94
static ConnectionEventPtr peerAdded(session_t peer_id, Address address)
Definition: connection.cpp:1241
Address address
Definition: connection.h:95
const char * describe() const
Definition: connection.cpp:1210
session_t peer_id
Definition: connection.h:92
ConnectionEvent(ConnectionEventType type_)
Definition: connection.h:109
Definition: connection.h:222
float jitter_min
Definition: connection.h:223
float jitter_avg
Definition: connection.h:225
float max_rtt
Definition: connection.h:227
float min_rtt
Definition: connection.h:226
float jitter_max
Definition: connection.h:224
float avg_rtt
Definition: connection.h:228