From 1c3d42598e1de68e109ee27dd289885aabe9878b Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 15 Aug 2010 23:44:45 +0000 Subject: (svn r20510) -Codechange: unify packet queue handling and make insertion O(1) instead of O(n) --- src/network/core/tcp_game.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/network/core/tcp_game.h') diff --git a/src/network/core/tcp_game.h b/src/network/core/tcp_game.h index 70a261d08..d6952d1bf 100644 --- a/src/network/core/tcp_game.h +++ b/src/network/core/tcp_game.h @@ -74,6 +74,22 @@ enum TCPPacketType { /** Packet that wraps a command */ struct CommandPacket; +/** A queue of CommandPackets. */ +class CommandQueue { + CommandPacket *first; ///< The first packet in the queue. + CommandPacket *last; ///< The last packet in the queue; only valid when first != NULL. + +public: + /** Initialise the command queue. */ + CommandQueue() : first(NULL), last(NULL) {} + /** Clear the command queue. */ + ~CommandQueue() { this->Free(); } + void Append(CommandPacket *p); + CommandPacket *Pop(); + CommandPacket *Peek(); + void Free(); +}; + /** Status of a client */ enum ClientStatus { STATUS_INACTIVE, ///< The client is not connected nor active @@ -106,7 +122,7 @@ public: ClientStatus status; ///< Status of this client - CommandPacket *command_queue; ///< The command-queue awaiting delivery + CommandQueue command_queue; ///< The command-queue awaiting delivery NetworkRecvStatus CloseConnection(bool error = true); -- cgit v1.2.3-54-g00ecf