queued_commands must be a std::deque. RunCommandQueues needs to push packet on front...
authorLoic Blot <loic.blot@unix-experience.fr>
Sun, 29 Mar 2015 08:49:43 +0000 (10:49 +0200)
committerLoic Blot <loic.blot@unix-experience.fr>
Sun, 29 Mar 2015 08:49:43 +0000 (10:49 +0200)
src/network/connection.cpp
src/network/connection.h

index d51324ed4f70e3040f51ee9c1c06144e0766e14b..4440b8cc7eef0df73698b875ad7a94c4c3e363dc 100644 (file)
@@ -1063,14 +1063,14 @@ void UDPPeer::PutReliableSendCommand(ConnectionCommand &c,
                                <<" processing reliable command for peer id: " << c.peer_id
                                <<" data size: " << c.data.getSize() << std::endl);
                if (!processReliableSendCommand(c,max_packet_size)) {
-                       channels[c.channelnum].queued_commands.push(c);
+                       channels[c.channelnum].queued_commands.push_back(c);
                }
        }
        else {
                LOG(dout_con<<m_connection->getDesc()
                                <<" Queueing reliable command for peer id: " << c.peer_id
                                <<" data size: " << c.data.getSize() <<std::endl);
-               channels[c.channelnum].queued_commands.push(c);
+               channels[c.channelnum].queued_commands.push_back(c);
        }
 }
 
@@ -1182,17 +1182,15 @@ void UDPPeer::RunCommandQueues(
                                                        unsigned int maxtransfer)
 {
 
-       for (unsigned int i = 0; i < CHANNEL_COUNT; i++)
-       {
+       for (unsigned int i = 0; i < CHANNEL_COUNT; i++) {
                unsigned int commands_processed = 0;
 
                if ((channels[i].queued_commands.size() > 0) &&
                                (channels[i].queued_reliables.size() < maxtransfer) &&
-                               (commands_processed < maxcommands))
-               {
+                               (commands_processed < maxcommands)) {
                        try {
                                ConnectionCommand c = channels[i].queued_commands.front();
-                               channels[i].queued_commands.pop();
+                               channels[i].queued_commands.pop_front();
                                LOG(dout_con<<m_connection->getDesc()
                                                <<" processing queued reliable command "<<std::endl);
                                if (!processReliableSendCommand(c,max_packet_size)) {
@@ -1200,7 +1198,7 @@ void UDPPeer::RunCommandQueues(
                                                        << " Failed to queue packets for peer_id: " << c.peer_id
                                                        << ", delaying sending of " << c.data.getSize()
                                                        << " bytes" << std::endl);
-                                       channels[i].queued_commands.push(c);
+                                       channels[i].queued_commands.push_front(c);
                                }
                        }
                        catch (ItemNotFoundException &e) {
@@ -1328,12 +1326,10 @@ bool ConnectionSendThread::packetsQueued()
                if (dynamic_cast<UDPPeer*>(&peer) == 0)
                        continue;
 
-               for(u16 i=0; i<CHANNEL_COUNT; i++)
-               {
+               for(u16 i=0; i < CHANNEL_COUNT; i++) {
                        Channel *channel = &(dynamic_cast<UDPPeer*>(&peer))->channels[i];
 
-                       if (channel->queued_commands.size() > 0)
-                       {
+                       if (channel->queued_commands.size() > 0) {
                                return true;
                        }
                }
index 0aa63d4cf21d3c7d268bbba8ba815e07aeef11aa..9c920cc015470c59312c32ae5bc13838c2a875dc 100644 (file)
@@ -501,7 +501,7 @@ public:
        std::queue<BufferedPacket> queued_reliables;
 
        //queue commands prior splitting to packets
-       std::queue<ConnectionCommand> queued_commands;
+       std::deque<ConnectionCommand> queued_commands;
 
        IncomingSplitBuffer incoming_splits;