enqueue also if m_nextPackets[category] is not null. This is really the

top element of a category queue, equivalente to using a queue.peek() if
 avaiable
avinationmerge
UbitUmarov 2014-08-27 01:33:09 +01:00
parent 07ee101a05
commit 1e888d61ca
1 changed files with 8 additions and 4 deletions

View File

@ -364,6 +364,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
int texture = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); pos += 4; int texture = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); pos += 4;
int asset = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); int asset = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f);
int total = resend + land + wind + cloud + task + texture + asset;
total /= 128;
// Make sure none of the throttles are set below our packet MTU, // Make sure none of the throttles are set below our packet MTU,
// otherwise a throttle could become permanently clogged // otherwise a throttle could become permanently clogged
resend = Math.Max(resend, LLUDPServer.MTU); resend = Math.Max(resend, LLUDPServer.MTU);
@ -379,8 +382,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// the task queue (e.g. object updates) // the task queue (e.g. object updates)
task = task + (int)(m_cannibalrate * texture); task = task + (int)(m_cannibalrate * texture);
texture = (int)((1 - m_cannibalrate) * texture); texture = (int)((1 - m_cannibalrate) * texture);
//int total = resend + land + wind + cloud + task + texture + asset; total = resend + land + wind + cloud + task + texture + asset;
total /= 128;
//m_log.DebugFormat("[LLUDPCLIENT]: {0} is setting throttles. Resend={1}, Land={2}, Wind={3}, Cloud={4}, Task={5}, Texture={6}, Asset={7}, Total={8}", //m_log.DebugFormat("[LLUDPCLIENT]: {0} is setting throttles. Resend={1}, Land={2}, Wind={3}, Cloud={4}, Task={5}, Texture={6}, Asset={7}, Total={8}",
// AgentID, resend, land, wind, cloud, task, texture, asset, total); // AgentID, resend, land, wind, cloud, task, texture, asset, total);
@ -484,7 +488,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// Don't send this packet if there is already a packet waiting in the queue // Don't send this packet if there is already a packet waiting in the queue
// even if we have the tokens to send it, tokens should go to the already // even if we have the tokens to send it, tokens should go to the already
// queued packets // queued packets
if (queue.Count > 0) if (queue.Count > 0 || m_nextPackets[category] != null)
{ {
queue.Enqueue(packet, highPriority); queue.Enqueue(packet, highPriority);
return true; return true;
@ -528,7 +532,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <returns>True if any packets were sent, otherwise false</returns> /// <returns>True if any packets were sent, otherwise false</returns>
public bool DequeueOutgoing() public bool DequeueOutgoing()
{ {
if (m_deliverPackets == false) return false; // if (m_deliverPackets == false) return false;
OutgoingPacket packet = null; OutgoingPacket packet = null;
DoubleLocklessQueue<OutgoingPacket> queue; DoubleLocklessQueue<OutgoingPacket> queue;