forked from Mirrorlandia_minetest/minetest
queued_commands must be a std::deque. RunCommandQueues needs to push packet on front, not back
This commit is contained in:
parent
3444dec2db
commit
dfe00abc5a
@ -1063,14 +1063,14 @@ void UDPPeer::PutReliableSendCommand(ConnectionCommand &c,
|
|||||||
<<" processing reliable command for peer id: " << c.peer_id
|
<<" processing reliable command for peer id: " << c.peer_id
|
||||||
<<" data size: " << c.data.getSize() << std::endl);
|
<<" data size: " << c.data.getSize() << std::endl);
|
||||||
if (!processReliableSendCommand(c,max_packet_size)) {
|
if (!processReliableSendCommand(c,max_packet_size)) {
|
||||||
channels[c.channelnum].queued_commands.push(c);
|
channels[c.channelnum].queued_commands.push_back(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LOG(dout_con<<m_connection->getDesc()
|
LOG(dout_con<<m_connection->getDesc()
|
||||||
<<" Queueing reliable command for peer id: " << c.peer_id
|
<<" Queueing reliable command for peer id: " << c.peer_id
|
||||||
<<" data size: " << c.data.getSize() <<std::endl);
|
<<" 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)
|
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;
|
unsigned int commands_processed = 0;
|
||||||
|
|
||||||
if ((channels[i].queued_commands.size() > 0) &&
|
if ((channels[i].queued_commands.size() > 0) &&
|
||||||
(channels[i].queued_reliables.size() < maxtransfer) &&
|
(channels[i].queued_reliables.size() < maxtransfer) &&
|
||||||
(commands_processed < maxcommands))
|
(commands_processed < maxcommands)) {
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
ConnectionCommand c = channels[i].queued_commands.front();
|
ConnectionCommand c = channels[i].queued_commands.front();
|
||||||
channels[i].queued_commands.pop();
|
channels[i].queued_commands.pop_front();
|
||||||
LOG(dout_con<<m_connection->getDesc()
|
LOG(dout_con<<m_connection->getDesc()
|
||||||
<<" processing queued reliable command "<<std::endl);
|
<<" processing queued reliable command "<<std::endl);
|
||||||
if (!processReliableSendCommand(c,max_packet_size)) {
|
if (!processReliableSendCommand(c,max_packet_size)) {
|
||||||
@ -1200,7 +1198,7 @@ void UDPPeer::RunCommandQueues(
|
|||||||
<< " Failed to queue packets for peer_id: " << c.peer_id
|
<< " Failed to queue packets for peer_id: " << c.peer_id
|
||||||
<< ", delaying sending of " << c.data.getSize()
|
<< ", delaying sending of " << c.data.getSize()
|
||||||
<< " bytes" << std::endl);
|
<< " bytes" << std::endl);
|
||||||
channels[i].queued_commands.push(c);
|
channels[i].queued_commands.push_front(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (ItemNotFoundException &e) {
|
catch (ItemNotFoundException &e) {
|
||||||
@ -1328,12 +1326,10 @@ bool ConnectionSendThread::packetsQueued()
|
|||||||
if (dynamic_cast<UDPPeer*>(&peer) == 0)
|
if (dynamic_cast<UDPPeer*>(&peer) == 0)
|
||||||
continue;
|
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];
|
Channel *channel = &(dynamic_cast<UDPPeer*>(&peer))->channels[i];
|
||||||
|
|
||||||
if (channel->queued_commands.size() > 0)
|
if (channel->queued_commands.size() > 0) {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,7 +501,7 @@ public:
|
|||||||
std::queue<BufferedPacket> queued_reliables;
|
std::queue<BufferedPacket> queued_reliables;
|
||||||
|
|
||||||
//queue commands prior splitting to packets
|
//queue commands prior splitting to packets
|
||||||
std::queue<ConnectionCommand> queued_commands;
|
std::deque<ConnectionCommand> queued_commands;
|
||||||
|
|
||||||
IncomingSplitBuffer incoming_splits;
|
IncomingSplitBuffer incoming_splits;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user