delay terrain sending if land queue is 2 busy
parent
17082da0da
commit
e3d82ad706
|
@ -1143,6 +1143,8 @@ namespace OpenSim.Framework
|
|||
void SendGenericMessage(string method, UUID invoice, List<string> message);
|
||||
void SendGenericMessage(string method, UUID invoice, List<byte[]> message);
|
||||
|
||||
bool CanSendLayerData();
|
||||
|
||||
void SendLayerData(float[] map);
|
||||
void SendLayerData(int px, int py, float[] map);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -229,11 +229,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
|||
}
|
||||
|
||||
m_scene.RegisterModuleInterface<ITerrainModule>(this);
|
||||
m_scene.EventManager.OnFrame += EventManager_OnFrame;
|
||||
m_scene.EventManager.OnNewClient += EventManager_OnNewClient;
|
||||
m_scene.EventManager.OnClientClosed += EventManager_OnClientClosed;
|
||||
m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
|
||||
m_scene.EventManager.OnTerrainTick += EventManager_OnTerrainTick;
|
||||
m_scene.EventManager.OnFrame += EventManager_OnFrame;
|
||||
}
|
||||
|
||||
InstallDefaultEffects();
|
||||
|
@ -767,6 +767,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
|||
/// </summary>
|
||||
private void EventManager_OnFrame()
|
||||
{
|
||||
// this needs fixing
|
||||
TerrainData terrData = m_channel.GetTerrainData();
|
||||
|
||||
bool shouldTaint = false;
|
||||
|
@ -792,6 +793,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
|||
m_scene.EventManager.TriggerTerrainTainted();
|
||||
m_tainted = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -993,6 +995,10 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
|||
{
|
||||
foreach (PatchUpdates pups in m_perClientPatchUpdates.Values)
|
||||
{
|
||||
// throught acording to land queue free to send bytes
|
||||
if (!pups.Presence.ControllingClient.CanSendLayerData())
|
||||
continue;
|
||||
|
||||
if (pups.HasUpdates())
|
||||
{
|
||||
// There is something that could be sent to this client.
|
||||
|
|
|
@ -997,6 +997,11 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
|
|||
|
||||
}
|
||||
|
||||
public virtual bool CanSendLayerData()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void SendLayerData(float[] map)
|
||||
{
|
||||
|
||||
|
|
|
@ -671,6 +671,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
|||
|
||||
}
|
||||
|
||||
public virtual bool CanSendLayerData()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual void SendLayerData(float[] map)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -590,6 +590,11 @@ namespace OpenSim.Tests.Common.Mock
|
|||
|
||||
}
|
||||
|
||||
public virtual bool CanSendLayerData()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual void SendLayerData(float[] map)
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue