diff options
author | MW | 2008-07-21 15:13:34 +0000 |
---|---|---|
committer | MW | 2008-07-21 15:13:34 +0000 |
commit | fb096dfbd54cfbcfa60be872cee1680eb521dd14 (patch) | |
tree | fdc6c3b4d5d15dfd03dc24138ada668e62af7562 /OpenSim/Framework | |
parent | Mantis#1801. Thank you kindly, Junta_Kohime for a patch that: (diff) | |
download | opensim-SC-fb096dfbd54cfbcfa60be872cee1680eb521dd14.zip opensim-SC-fb096dfbd54cfbcfa60be872cee1680eb521dd14.tar.gz opensim-SC-fb096dfbd54cfbcfa60be872cee1680eb521dd14.tar.bz2 opensim-SC-fb096dfbd54cfbcfa60be872cee1680eb521dd14.tar.xz |
added experimental packet tracker (LLPacketTracker.cs), which can be told to track a packet and if it hasn't been acked within a set time, trigger a IClientAPI event, that the application/scene can handle. Currently only terrain packet tracking is finished, Tracking for initial Prim packets (first full update for a prim) is being worked on. Future improvements would be to make it a more generic packet tracker with callback delegates instead of events.
Add a test event handler (which would fire after a minute if a terrain packet hadn't been acked) to scene to handle the OnUnackedTerrain event, which currently just resends the terrain patch.
The idea of this packet tracking is for the region level application to be able to know if the client stack gave up on sending a packet.
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/Communications/CommunicationsManager.cs | 3 | ||||
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index a45e236..5be7334 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs | |||
@@ -125,9 +125,7 @@ namespace OpenSim.Framework.Communications | |||
125 | { | 125 | { |
126 | return invService; | 126 | return invService; |
127 | } | 127 | } |
128 | |||
129 | } | 128 | } |
130 | |||
131 | return null; | 129 | return null; |
132 | } | 130 | } |
133 | } | 131 | } |
@@ -139,7 +137,6 @@ namespace OpenSim.Framework.Communications | |||
139 | host = m_defaultInventoryHost; | 137 | host = m_defaultInventoryHost; |
140 | } | 138 | } |
141 | 139 | ||
142 | |||
143 | lock (m_inventoryServices) | 140 | lock (m_inventoryServices) |
144 | { | 141 | { |
145 | foreach (IInventoryServices service in m_inventoryServices) | 142 | foreach (IInventoryServices service in m_inventoryServices) |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index bb44eb9..a835598 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -299,6 +299,9 @@ namespace OpenSim.Framework | |||
299 | public delegate void GetScriptRunning(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID); | 299 | public delegate void GetScriptRunning(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID); |
300 | public delegate void SetScriptRunning(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID, bool running); | 300 | public delegate void SetScriptRunning(IClientAPI remoteClient, LLUUID objectID, LLUUID itemID, bool running); |
301 | 301 | ||
302 | |||
303 | public delegate void TerrainUnacked(IClientAPI remoteClient, int patchX, int patchY); | ||
304 | |||
302 | #endregion | 305 | #endregion |
303 | 306 | ||
304 | public interface IClientAPI | 307 | public interface IClientAPI |
@@ -501,6 +504,8 @@ namespace OpenSim.Framework | |||
501 | event SetScriptRunning OnSetScriptRunning; | 504 | event SetScriptRunning OnSetScriptRunning; |
502 | event UpdateVector OnAutoPilotGo; | 505 | event UpdateVector OnAutoPilotGo; |
503 | 506 | ||
507 | event TerrainUnacked OnUnackedTerrain; | ||
508 | |||
504 | // [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")] | 509 | // [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")] |
505 | void OutPacket(Packet newPack, ThrottleOutPacketType packType); | 510 | void OutPacket(Packet newPack, ThrottleOutPacketType packType); |
506 | void SendWearables(AvatarWearable[] wearables, int serial); | 511 | void SendWearables(AvatarWearable[] wearables, int serial); |
@@ -521,6 +526,8 @@ namespace OpenSim.Framework | |||
521 | 526 | ||
522 | void SendLayerData(float[] map); | 527 | void SendLayerData(float[] map); |
523 | void SendLayerData(int px, int py, float[] map); | 528 | void SendLayerData(int px, int py, float[] map); |
529 | void SendLayerData(int px, int py, float[] map, bool track); | ||
530 | |||
524 | void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look); | 531 | void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look); |
525 | void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint); | 532 | void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint); |
526 | AgentCircuitData RequestClientInfo(); | 533 | AgentCircuitData RequestClientInfo(); |
@@ -554,13 +561,13 @@ namespace OpenSim.Framework | |||
554 | LLVector3 pos, LLVector3 vel, LLVector3 acc, LLQuaternion rotation, LLVector3 rvel, | 561 | LLVector3 pos, LLVector3 vel, LLVector3 acc, LLQuaternion rotation, LLVector3 rvel, |
555 | uint flags, | 562 | uint flags, |
556 | LLUUID objectID, LLUUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, | 563 | LLUUID objectID, LLUUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, |
557 | byte clickAction, byte[] textureanim, bool attachment, uint AttachPoint, LLUUID AssetId, LLUUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius); | 564 | byte clickAction, byte[] textureanim, bool attachment, uint AttachPoint, LLUUID AssetId, LLUUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius, bool track); |
558 | 565 | ||
559 | 566 | ||
560 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, | 567 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, |
561 | LLVector3 pos, LLVector3 vel, LLVector3 acc, LLQuaternion rotation, LLVector3 rvel, | 568 | LLVector3 pos, LLVector3 vel, LLVector3 acc, LLQuaternion rotation, LLVector3 rvel, |
562 | uint flags, LLUUID objectID, LLUUID ownerID, string text, byte[] color, | 569 | uint flags, LLUUID objectID, LLUUID ownerID, string text, byte[] color, |
563 | uint parentID, byte[] particleSystem, byte clickAction); | 570 | uint parentID, byte[] particleSystem, byte clickAction, bool track); |
564 | 571 | ||
565 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, | 572 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, |
566 | LLQuaternion rotation, LLVector3 velocity, LLVector3 rotationalvelocity, byte state, LLUUID AssetId); | 573 | LLQuaternion rotation, LLVector3 velocity, LLVector3 rotationalvelocity, byte state, LLUUID AssetId); |