From e3d82ad706db04d295a549543380b71b00848f7f Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 22 Aug 2015 04:08:30 +0100 Subject: delay terrain sending if land queue is 2 busy --- OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 11 ++++++++++- OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/ClientStack') diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 36c3780..46836b1 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -1199,6 +1199,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(GATRP, ThrottleOutPacketType.Task); } + + public virtual bool CanSendLayerData() + { + int n = m_udpClient.GetCatBytesInSendQueue(ThrottleOutPacketType.Land); + if ( n > 100000) + return false; + return true; + } + /// /// Send the region heightmap to the client /// This method is only called when not doing intellegent terrain patch sending and @@ -9151,7 +9160,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if ((locX >= m_scene.RegionInfo.WorldLocX) && (locX < (m_scene.RegionInfo.WorldLocX + m_scene.RegionInfo.RegionSizeX)) && (locY >= m_scene.RegionInfo.WorldLocY) - && (locY < (m_scene.RegionInfo.WorldLocY + m_scene.RegionInfo.RegionSizeY)) ) + && (locY < (m_scene.RegionInfo.WorldLocY + m_scene.RegionInfo.RegionSizeY))) { tpLocReq.Info.RegionHandle = m_scene.RegionInfo.RegionHandle; tpLocReq.Info.Position.X += locX - m_scene.RegionInfo.WorldLocX; diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs index 0ae7617..4b541e6 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs @@ -474,6 +474,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP return data; } + + public int GetCatBytesInSendQueue(ThrottleOutPacketType cat) + { + ; + int icat = (int)cat; + if (icat > 0 && icat < THROTTLE_CATEGORY_COUNT) + { + TokenBucket bucket = m_throttleCategories[icat]; + return m_packetOutboxes[icat].Count; + } + else + return 0; + } + public int GetCatBytesCanSend(ThrottleOutPacketType cat, int timeMS) { -- cgit v1.1