aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs3
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs23
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs3
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs8
4 files changed, 29 insertions, 8 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
index 665c773..09edc94 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
@@ -40,7 +40,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
40 /// Interface to a class that handles all the activity involved with maintaining the client circuit (handling acks, 40 /// Interface to a class that handles all the activity involved with maintaining the client circuit (handling acks,
41 /// resends, pings, etc.) 41 /// resends, pings, etc.)
42 /// </summary> 42 /// </summary>
43 public interface ILLPacketHandler 43 public interface ILLPacketHandler : IDisposable
44 { 44 {
45 event PacketStats OnPacketStats; 45 event PacketStats OnPacketStats;
46 event PacketDrop OnPacketDrop; 46 event PacketDrop OnPacketDrop;
@@ -70,7 +70,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
70 void OutPacket(Packet NewPack, 70 void OutPacket(Packet NewPack,
71 ThrottleOutPacketType throttlePacketType, Object id); 71 ThrottleOutPacketType throttlePacketType, Object id);
72 LLPacketQueue PacketQueue { get; } 72 LLPacketQueue PacketQueue { get; }
73 void Stop();
74 void Flush(); 73 void Flush();
75 void Clear(); 74 void Clear();
76 ClientInfo GetClientInfo(); 75 ClientInfo GetClientInfo();
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 9788f40..460f94e 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -633,6 +633,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
633 // of the client thread regardless of where Close() is called. 633 // of the client thread regardless of where Close() is called.
634 KillEndDone(); 634 KillEndDone();
635 } 635 }
636
637 Terminate();
636 } 638 }
637 639
638 /// <summary> 640 /// <summary>
@@ -737,16 +739,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
737 739
738 } 740 }
739 741
740 public void Terminate() 742 private void Terminate()
741 { 743 {
744 IsActive = false;
745
746 m_clientPingTimer.Close();
747 m_avatarTerseUpdateTimer.Close();
748 m_primTerseUpdateTimer.Close();
749 m_primFullUpdateTimer.Close();
750 m_textureRequestTimer.Close();
751
742 m_PacketHandler.OnPacketStats -= PopulateStats; 752 m_PacketHandler.OnPacketStats -= PopulateStats;
743 m_PacketHandler.Stop(); 753 m_PacketHandler.Dispose();
744 754
745 // wait for thread stoped 755 // wait for thread stoped
746 m_clientThread.Join(); 756 // m_clientThread.Join();
747 757
748 // delete circuit code 758 // delete circuit code
749 m_networkServer.CloseClient(this); 759 //m_networkServer.CloseClient(this);
750 } 760 }
751 761
752 #endregion 762 #endregion
@@ -876,6 +886,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
876 while (IsActive) 886 while (IsActive)
877 { 887 {
878 LLQueItem nextPacket = m_PacketHandler.PacketQueue.Dequeue(); 888 LLQueItem nextPacket = m_PacketHandler.PacketQueue.Dequeue();
889
890 if (nextPacket == null) {
891 m_log.DebugFormat("[CLIENT]: PacketQueue return null LLQueItem");
892 continue;
893 }
879 894
880 if (nextPacket.Incoming) 895 if (nextPacket.Incoming)
881 { 896 {
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index eaf8f60..67ece75 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -176,9 +176,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
176 m_AckTimer.Start(); 176 m_AckTimer.Start();
177 } 177 }
178 178
179 public void Stop() 179 public void Dispose()
180 { 180 {
181 m_AckTimer.Stop(); 181 m_AckTimer.Stop();
182 m_AckTimer.Close();
182 183
183 m_PacketQueue.Enqueue(null); 184 m_PacketQueue.Enqueue(null);
184 m_PacketQueue.Close(); 185 m_PacketQueue.Close();
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
index 798c1e7..6dd0697 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
@@ -39,7 +39,7 @@ using Timer=System.Timers.Timer;
39 39
40namespace OpenSim.Region.ClientStack.LindenUDP 40namespace OpenSim.Region.ClientStack.LindenUDP
41{ 41{
42 public class LLPacketQueue : IPullStatsProvider 42 public class LLPacketQueue : IPullStatsProvider, IDisposable
43 { 43 {
44 private static readonly ILog m_log 44 private static readonly ILog m_log
45 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -342,11 +342,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
342 342
343 public void Close() 343 public void Close()
344 { 344 {
345 Dispose();
346 }
347
348 public void Dispose()
349 {
345 Flush(); 350 Flush();
346 WipeClean(); // I'm sure there's a dirty joke in here somewhere. -AFrisby 351 WipeClean(); // I'm sure there's a dirty joke in here somewhere. -AFrisby
347 352
348 m_enabled = false; 353 m_enabled = false;
349 throttleTimer.Stop(); 354 throttleTimer.Stop();
355 throttleTimer.Close();
350 356
351 if (StatsManager.SimExtraStats != null) 357 if (StatsManager.SimExtraStats != null)
352 { 358 {