diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/connection.cpp | 45 | ||||
-rw-r--r-- | src/network/connection.h | 6 | ||||
-rw-r--r-- | src/network/packethandlers/client.cpp | 26 |
3 files changed, 39 insertions, 38 deletions
diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 7710b1c42..b73981ccc 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -1058,22 +1058,19 @@ void UDPPeer::PutReliableSendCommand(ConnectionCommand &c, if ( channels[c.channelnum].queued_commands.empty() && /* don't queue more packets then window size */ (channels[c.channelnum].queued_reliables.size() - < (channels[c.channelnum].getWindowSize()/2))) - { + < (channels[c.channelnum].getWindowSize()/2))) { LOG(dout_con<<m_connection->getDesc() <<" 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_back(c); + if (!processReliableSendCommand(c,max_packet_size)) { + channels[c.channelnum].queued_commands.push(c); } } - else - { + 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_back(c); + channels[c.channelnum].queued_commands.push(c); } } @@ -1104,7 +1101,7 @@ bool UDPPeer::processReliableSendCommand( bool have_sequence_number = true; bool have_initial_sequence_number = false; - Queue<BufferedPacket> toadd; + std::queue<BufferedPacket> toadd; volatile u16 initial_sequence_number = 0; for(std::list<SharedBuffer<u8> >::iterator i = originals.begin(); @@ -1129,19 +1126,20 @@ bool UDPPeer::processReliableSendCommand( m_connection->GetProtocolID(), m_connection->GetPeerID(), c.channelnum); - toadd.push_back(p); + toadd.push(p); } if (have_sequence_number) { volatile u16 pcount = 0; while(toadd.size() > 0) { - BufferedPacket p = toadd.pop_front(); + BufferedPacket p = toadd.front(); + toadd.pop(); // LOG(dout_con<<connection->getDesc() // << " queuing reliable packet for peer_id: " << c.peer_id // << " channel: " << (c.channelnum&0xFF) // << " seqnum: " << readU16(&p.data[BASE_HEADER_SIZE+1]) // << std::endl) - channels[c.channelnum].queued_reliables.push_back(p); + channels[c.channelnum].queued_reliables.push(p); pcount++; } assert(channels[c.channelnum].queued_reliables.size() < 0xFFFF); @@ -1156,7 +1154,7 @@ bool UDPPeer::processReliableSendCommand( } while(toadd.size() > 0) { /* remove packet */ - toadd.pop_front(); + toadd.pop(); bool successfully_put_back_sequence_number = channels[c.channelnum].putBackSequenceNumber( @@ -1193,7 +1191,8 @@ void UDPPeer::RunCommandQueues( (commands_processed < maxcommands)) { try { - ConnectionCommand c = channels[i].queued_commands.pop_front(); + ConnectionCommand c = channels[i].queued_commands.front(); + channels[i].queued_commands.pop(); LOG(dout_con<<m_connection->getDesc() <<" processing queued reliable command "<<std::endl); if (!processReliableSendCommand(c,max_packet_size)) { @@ -1201,7 +1200,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_front(c); + channels[i].queued_commands.push(c); } } catch (ItemNotFoundException &e) { @@ -1550,7 +1549,7 @@ bool ConnectionSendThread::rawSendAsPacket(u16 peer_id, u8 channelnum, <<" INFO: queueing reliable packet for peer_id: " << peer_id <<" channel: " << channelnum <<" seqnum: " << seqnum << std::endl); - channel->queued_reliables.push_back(p); + channel->queued_reliables.push(p); return false; } } @@ -1919,7 +1918,8 @@ void ConnectionSendThread::sendPackets(float dtime) < dynamic_cast<UDPPeer*>(&peer)->channels[i].getWindowSize())&& (peer->m_increment_packets_remaining > 0)) { - BufferedPacket p = dynamic_cast<UDPPeer*>(&peer)->channels[i].queued_reliables.pop_front(); + BufferedPacket p = dynamic_cast<UDPPeer*>(&peer)->channels[i].queued_reliables.front(); + dynamic_cast<UDPPeer*>(&peer)->channels[i].queued_reliables.pop(); Channel* channel = &(dynamic_cast<UDPPeer*>(&peer)->channels[i]); LOG(dout_con<<m_connection->getDesc() <<" INFO: sending a queued reliable packet " @@ -1942,10 +1942,11 @@ void ConnectionSendThread::sendPackets(float dtime) unsigned int initial_queuesize = m_outgoing_queue.size(); /* send non reliable packets*/ for(unsigned int i=0;i < initial_queuesize;i++) { - OutgoingPacket packet = m_outgoing_queue.pop_front(); + OutgoingPacket packet = m_outgoing_queue.front(); + m_outgoing_queue.pop(); - assert(!packet.reliable && - "reliable packets are not allowed in outgoing queue!"); + if (packet.reliable) + continue; PeerHelper peer = m_connection->getPeerNoEx(packet.peer_id); if (!peer) { @@ -1972,7 +1973,7 @@ void ConnectionSendThread::sendPackets(float dtime) peer->m_increment_packets_remaining--; } else { - m_outgoing_queue.push_back(packet); + m_outgoing_queue.push(packet); pending_unreliable[packet.peer_id] = true; } } @@ -1992,7 +1993,7 @@ void ConnectionSendThread::sendAsPacket(u16 peer_id, u8 channelnum, SharedBuffer<u8> data, bool ack) { OutgoingPacket packet(peer_id, channelnum, data, false, ack); - m_outgoing_queue.push_back(packet); + m_outgoing_queue.push(packet); } ConnectionReceiveThread::ConnectionReceiveThread(unsigned int max_packet_size) : diff --git a/src/network/connection.h b/src/network/connection.h index 4ac9a4631..77d7edac0 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -505,10 +505,10 @@ public: ReliablePacketBuffer outgoing_reliables_sent; //queued reliable packets - Queue<BufferedPacket> queued_reliables; + std::queue<BufferedPacket> queued_reliables; //queue commands prior splitting to packets - Queue<ConnectionCommand> queued_commands; + std::queue<ConnectionCommand> queued_commands; IncomingSplitBuffer incoming_splits; @@ -964,7 +964,7 @@ private: Connection* m_connection; unsigned int m_max_packet_size; float m_timeout; - Queue<OutgoingPacket> m_outgoing_queue; + std::queue<OutgoingPacket> m_outgoing_queue; JSemaphore m_send_sleep_semaphore; unsigned int m_iteration_packets_avaialble; diff --git a/src/network/packethandlers/client.cpp b/src/network/packethandlers/client.cpp index 1d3a343bf..e1e57b3a6 100644 --- a/src/network/packethandlers/client.cpp +++ b/src/network/packethandlers/client.cpp @@ -263,7 +263,7 @@ void Client::handleCommand_ChatMessage(NetworkPacket* pkt) message += (wchar_t)read_wchar; } - m_chat_queue.push_back(message); + m_chat_queue.push(message); } void Client::handleCommand_ActiveObjectRemoveAdd(NetworkPacket* pkt) @@ -380,7 +380,7 @@ void Client::handleCommand_HP(NetworkPacket* pkt) ClientEvent event; event.type = CE_PLAYER_DAMAGE; event.player_damage.amount = oldhp - hp; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } } @@ -424,7 +424,7 @@ void Client::handleCommand_MovePlayer(NetworkPacket* pkt) event.type = CE_PLAYER_FORCE_MOVE; event.player_force_move.pitch = pitch; event.player_force_move.yaw = yaw; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); // Ignore damage for a few seconds, so that the player doesn't // get damage from falling on ground @@ -450,7 +450,7 @@ void Client::handleCommand_DeathScreen(NetworkPacket* pkt) event.deathscreen.camera_point_target_x = camera_point_target.X; event.deathscreen.camera_point_target_y = camera_point_target.Y; event.deathscreen.camera_point_target_z = camera_point_target.Z; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_AnnounceMedia(NetworkPacket* pkt) @@ -735,7 +735,7 @@ void Client::handleCommand_ShowFormSpec(NetworkPacket* pkt) // adding a std:string to a struct isn't possible event.show_formspec.formspec = new std::string(formspec); event.show_formspec.formname = new std::string(formname); - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) @@ -766,7 +766,7 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) event.spawn_particle.vertical = vertical; event.spawn_particle.texture = new std::string(texture); - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) @@ -818,7 +818,7 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) event.add_particlespawner.texture = new std::string(texture); event.add_particlespawner.id = id; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } @@ -832,7 +832,7 @@ void Client::handleCommand_DeleteParticleSpawner(NetworkPacket* pkt) event.type = CE_DELETE_PARTICLESPAWNER; event.delete_particlespawner.id = (u32) id; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_HudAdd(NetworkPacket* pkt) @@ -880,7 +880,7 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt) event.hudadd.offset = new v2f(offset); event.hudadd.world_pos = new v3f(world_pos); event.hudadd.size = new v2s32(size); - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_HudRemove(NetworkPacket* pkt) @@ -892,7 +892,7 @@ void Client::handleCommand_HudRemove(NetworkPacket* pkt) ClientEvent event; event.type = CE_HUDRM; event.hudrm.id = id; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_HudChange(NetworkPacket* pkt) @@ -928,7 +928,7 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt) event.hudchange.sdata = new std::string(sdata); event.hudchange.data = intdata; event.hudchange.v2s32data = new v2s32(v2s32data); - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_HudSetFlags(NetworkPacket* pkt) @@ -984,7 +984,7 @@ void Client::handleCommand_HudSetSky(NetworkPacket* pkt) event.set_sky.bgcolor = bgcolor; event.set_sky.type = type; event.set_sky.params = params; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_OverrideDayNightRatio(NetworkPacket* pkt) @@ -1000,7 +1000,7 @@ void Client::handleCommand_OverrideDayNightRatio(NetworkPacket* pkt) event.type = CE_OVERRIDE_DAY_NIGHT_RATIO; event.override_day_night_ratio.do_override = do_override; event.override_day_night_ratio.ratio_f = day_night_ratio_f; - m_client_event_queue.push_back(event); + m_client_event_queue.push(event); } void Client::handleCommand_LocalPlayerAnimations(NetworkPacket* pkt) |