diff options
Diffstat (limited to 'src/network/connection.h')
-rw-r--r-- | src/network/connection.h | 61 |
1 files changed, 30 insertions, 31 deletions
diff --git a/src/network/connection.h b/src/network/connection.h index 5062b73d0..2fc344169 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -27,6 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/container.h" #include "util/thread.h" #include "util/numeric.h" +#include "networkprotocol.h" #include <iostream> #include <fstream> #include <list> @@ -103,7 +104,7 @@ struct BufferedPacket // This adds the base headers to the data and makes a packet out of it BufferedPacket makePacket(Address &address, SharedBuffer<u8> data, - u32 protocol_id, u16 sender_peer_id, u8 channel); + u32 protocol_id, session_t sender_peer_id, u8 channel); // Depending on size, make a TYPE_ORIGINAL or TYPE_SPLIT packet // Increments split_seqnum if a split packet is made @@ -139,7 +140,7 @@ A packet is sent through a channel to a peer with a basic header: TODO: Should we have a receiver_peer_id also? Header (7 bytes): [0] u32 protocol_id - [4] u16 sender_peer_id + [4] session_t sender_peer_id [6] u8 channel sender_peer_id: Unique to each peer. @@ -164,7 +165,7 @@ controltype and data description: CONTROLTYPE_ACK [2] u16 seqnum CONTROLTYPE_SET_PEER_ID - [2] u16 peer_id_new + [2] session_t peer_id_new CONTROLTYPE_PING - There is no actual reply, but this can be sent in a reliable packet to get a reply @@ -289,13 +290,13 @@ private: struct OutgoingPacket { - u16 peer_id; + session_t peer_id; u8 channelnum; SharedBuffer<u8> data; bool reliable; bool ack; - OutgoingPacket(u16 peer_id_, u8 channelnum_, const SharedBuffer<u8> &data_, + OutgoingPacket(session_t peer_id_, u8 channelnum_, const SharedBuffer<u8> &data_, bool reliable_,bool ack_=false): peer_id(peer_id_), channelnum(channelnum_), @@ -323,7 +324,7 @@ struct ConnectionCommand { enum ConnectionCommandType type = CONNCMD_NONE; Address address; - u16 peer_id = PEER_ID_INEXISTENT; + session_t peer_id = PEER_ID_INEXISTENT; u8 channelnum = 0; Buffer<u8> data; bool reliable = false; @@ -357,15 +358,15 @@ struct ConnectionCommand { type = CONNCMD_DISCONNECT; } - void disconnect_peer(u16 peer_id_) + void disconnect_peer(session_t peer_id_) { type = CONNCMD_DISCONNECT_PEER; peer_id = peer_id_; } - void send(u16 peer_id_, u8 channelnum_, NetworkPacket* pkt, bool reliable_); + void send(session_t peer_id_, u8 channelnum_, NetworkPacket *pkt, bool reliable_); - void ack(u16 peer_id_, u8 channelnum_, const SharedBuffer<u8> &data_) + void ack(session_t peer_id_, u8 channelnum_, const SharedBuffer<u8> &data_) { type = CONCMD_ACK; peer_id = peer_id_; @@ -374,7 +375,7 @@ struct ConnectionCommand reliable = false; } - void createPeer(u16 peer_id_, const SharedBuffer<u8> &data_) + void createPeer(session_t peer_id_, const SharedBuffer<u8> &data_) { type = CONCMD_CREATE_PEER; peer_id = peer_id_; @@ -384,7 +385,7 @@ struct ConnectionCommand raw = true; } - void disableLegacy(u16 peer_id_, const SharedBuffer<u8> &data_) + void disableLegacy(session_t peer_id_, const SharedBuffer<u8> &data_) { type = CONCMD_DISABLE_LEGACY; peer_id = peer_id_; @@ -716,7 +717,7 @@ enum ConnectionEventType{ struct ConnectionEvent { enum ConnectionEventType type = CONNEVENT_NONE; - u16 peer_id = 0; + session_t peer_id = 0; Buffer<u8> data; bool timeout = false; Address address; @@ -740,19 +741,19 @@ struct ConnectionEvent return "Invalid ConnectionEvent"; } - void dataReceived(u16 peer_id_, const SharedBuffer<u8> &data_) + void dataReceived(session_t peer_id_, const SharedBuffer<u8> &data_) { type = CONNEVENT_DATA_RECEIVED; peer_id = peer_id_; data = data_; } - void peerAdded(u16 peer_id_, Address address_) + void peerAdded(session_t peer_id_, Address address_) { type = CONNEVENT_PEER_ADDED; peer_id = peer_id_; address = address_; } - void peerRemoved(u16 peer_id_, bool timeout_, Address address_) + void peerRemoved(session_t peer_id_, bool timeout_, Address address_) { type = CONNEVENT_PEER_REMOVED; peer_id = peer_id_; @@ -787,30 +788,30 @@ public: bool Connected(); void Disconnect(); void Receive(NetworkPacket* pkt); - void Send(u16 peer_id, u8 channelnum, NetworkPacket* pkt, bool reliable); - u16 GetPeerID() { return m_peer_id; } - Address GetPeerAddress(u16 peer_id); - float getPeerStat(u16 peer_id, rtt_stat_type type); + void Send(session_t peer_id, u8 channelnum, NetworkPacket *pkt, bool reliable); + session_t GetPeerID() const { return m_peer_id; } + Address GetPeerAddress(session_t peer_id); + float getPeerStat(session_t peer_id, rtt_stat_type type); float getLocalStat(rate_stat_type type); const u32 GetProtocolID() const { return m_protocol_id; }; const std::string getDesc(); - void DisconnectPeer(u16 peer_id); + void DisconnectPeer(session_t peer_id); protected: - PeerHelper getPeerNoEx(u16 peer_id); + PeerHelper getPeerNoEx(session_t peer_id); u16 lookupPeer(Address& sender); u16 createPeer(Address& sender, MTProtocols protocol, int fd); UDPPeer* createServerPeer(Address& sender); - bool deletePeer(u16 peer_id, bool timeout); + bool deletePeer(session_t peer_id, bool timeout); - void SetPeerID(u16 id) { m_peer_id = id; } + void SetPeerID(session_t id) { m_peer_id = id; } - void sendAck(u16 peer_id, u8 channelnum, u16 seqnum); + void sendAck(session_t peer_id, u8 channelnum, u16 seqnum); void PrintInfo(std::ostream &out); - std::list<u16> getPeerIDs() + std::list<session_t> getPeerIDs() { MutexAutoLock peerlock(m_peers_mutex); return m_peer_ids; @@ -823,15 +824,13 @@ protected: void TriggerSend(); private: - std::list<Peer*> getPeers(); - MutexedQueue<ConnectionEvent> m_event_queue; - u16 m_peer_id = 0; + session_t m_peer_id = 0; u32 m_protocol_id; - std::map<u16, Peer*> m_peers; - std::list<u16> m_peer_ids; + std::map<session_t, Peer *> m_peers; + std::list<session_t> m_peer_ids; std::mutex m_peers_mutex; std::unique_ptr<ConnectionSendThread> m_sendThread; @@ -845,7 +844,7 @@ private: bool m_shutting_down = false; - u16 m_next_remote_peer_id = 2; + session_t m_next_remote_peer_id = 2; }; } // namespace |