aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs151
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs34
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs38
3 files changed, 111 insertions, 112 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 2dc4e1e..9d182b6 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -51,33 +51,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP
51 /// A shim around LLUDPServer that implements the IClientNetworkServer interface 51 /// A shim around LLUDPServer that implements the IClientNetworkServer interface
52 /// </summary> 52 /// </summary>
53 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LLUDPServerShim")] 53 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LLUDPServerShim")]
54 public sealed class LLUDPServerShim : INonSharedRegionModule 54 public class LLUDPServerShim : INonSharedRegionModule
55 { 55 {
56 private bool m_Enabled = true; 56 protected IConfigSource m_Config;
57 private IConfigSource m_Config; 57 protected LLUDPServer m_udpServer;
58 LLUDPServer m_udpServer;
59 58
60 #region INonSharedRegionModule 59 #region INonSharedRegionModule
61 public string Name 60 public virtual string Name
62 { 61 {
63 get { return "LLUDPServerShim"; } 62 get { return "LLUDPServerShim"; }
64 } 63 }
65 64
66 public Type ReplaceableInterface 65 public virtual Type ReplaceableInterface
67 { 66 {
68 get { return null; } 67 get { return null; }
69 } 68 }
70 69
71 public void Initialise(IConfigSource source) 70 public virtual void Initialise(IConfigSource source)
72 { 71 {
73 m_Config = source; 72 m_Config = source;
74 } 73 }
75 74
76 public void Close() 75 public virtual void Close()
77 { 76 {
78 } 77 }
79 78
80 public void AddRegion(Scene scene) 79 public virtual void AddRegion(Scene scene)
81 { 80 {
82 uint port = (uint)scene.RegionInfo.InternalEndPoint.Port; 81 uint port = (uint)scene.RegionInfo.InternalEndPoint.Port;
83 82
@@ -88,23 +87,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
88 AddScene(scene); 87 AddScene(scene);
89 } 88 }
90 89
91 public void RemoveRegion(Scene scene) 90 public virtual void RemoveRegion(Scene scene)
92 { 91 {
93 Stop(); 92 Stop();
94 } 93 }
95 94
96 public void RegionLoaded(Scene scene) 95 public virtual void RegionLoaded(Scene scene)
97 { 96 {
98 Start(); 97 Start();
99 } 98 }
100 #endregion 99 #endregion
101 100
102 public void Initialise(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager) 101 public virtual void Initialise(IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, IConfigSource configSource, AgentCircuitManager circuitManager)
103 { 102 {
104 m_udpServer = new LLUDPServer(listenIP, ref port, proxyPortOffsetParm, allow_alternate_port, configSource, circuitManager); 103 m_udpServer = new LLUDPServer(listenIP, ref port, proxyPortOffsetParm, allow_alternate_port, configSource, circuitManager);
105 } 104 }
106 105
107 public void AddScene(IScene scene) 106 public virtual void AddScene(IScene scene)
108 { 107 {
109 m_udpServer.AddScene(scene); 108 m_udpServer.AddScene(scene);
110 109
@@ -228,17 +227,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
228 StatVerbosity.Debug)); 227 StatVerbosity.Debug));
229 } 228 }
230 229
231 public bool HandlesRegion(Location x) 230 public virtual bool HandlesRegion(Location x)
232 { 231 {
233 return m_udpServer.HandlesRegion(x); 232 return m_udpServer.HandlesRegion(x);
234 } 233 }
235 234
236 public void Start() 235 public virtual void Start()
237 { 236 {
238 m_udpServer.Start(); 237 m_udpServer.Start();
239 } 238 }
240 239
241 public void Stop() 240 public virtual void Stop()
242 { 241 {
243 m_udpServer.Stop(); 242 m_udpServer.Stop();
244 } 243 }
@@ -257,7 +256,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
257 public const int MTU = 1400; 256 public const int MTU = 1400;
258 257
259 /// <summary>Number of forced client logouts due to no receipt of packets before timeout.</summary> 258 /// <summary>Number of forced client logouts due to no receipt of packets before timeout.</summary>
260 public int ClientLogoutsDueToNoReceives { get; private set; } 259 public int ClientLogoutsDueToNoReceives { get; protected set; }
261 260
262 /// <summary> 261 /// <summary>
263 /// Default packet debug level given to new clients 262 /// Default packet debug level given to new clients
@@ -284,12 +283,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
284 /// <summary>Handlers for incoming packets</summary> 283 /// <summary>Handlers for incoming packets</summary>
285 //PacketEventDictionary packetEvents = new PacketEventDictionary(); 284 //PacketEventDictionary packetEvents = new PacketEventDictionary();
286 /// <summary>Incoming packets that are awaiting handling</summary> 285 /// <summary>Incoming packets that are awaiting handling</summary>
287 //private OpenMetaverse.BlockingQueue<IncomingPacket> packetInbox = new OpenMetaverse.BlockingQueue<IncomingPacket>(); 286 //protected OpenMetaverse.BlockingQueue<IncomingPacket> packetInbox = new OpenMetaverse.BlockingQueue<IncomingPacket>();
288 287
289 private OpenSim.Framework.BlockingQueue<IncomingPacket> packetInbox = new OpenSim.Framework.BlockingQueue<IncomingPacket>(); 288 protected OpenSim.Framework.BlockingQueue<IncomingPacket> packetInbox = new OpenSim.Framework.BlockingQueue<IncomingPacket>();
290 289
291 /// <summary>Bandwidth throttle for this UDP server</summary> 290 /// <summary>Bandwidth throttle for this UDP server</summary>
292 public TokenBucket Throttle { get; private set; } 291 public TokenBucket Throttle { get; protected set; }
293 292
294 /// <summary>Per client throttle rates enforced by this server</summary> 293 /// <summary>Per client throttle rates enforced by this server</summary>
295 /// <remarks> 294 /// <remarks>
@@ -297,43 +296,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP
297 /// The other rates (resend, asset, etc.) are the defaults for a new client and can be changed (and usually 296 /// The other rates (resend, asset, etc.) are the defaults for a new client and can be changed (and usually
298 /// do get changed immediately). They do not need to sum to the total. 297 /// do get changed immediately). They do not need to sum to the total.
299 /// </remarks> 298 /// </remarks>
300 public ThrottleRates ThrottleRates { get; private set; } 299 public ThrottleRates ThrottleRates { get; protected set; }
301 300
302 /// <summary>Manages authentication for agent circuits</summary> 301 /// <summary>Manages authentication for agent circuits</summary>
303 private AgentCircuitManager m_circuitManager; 302 protected AgentCircuitManager m_circuitManager;
304 303
305 /// <summary>Reference to the scene this UDP server is attached to</summary> 304 /// <summary>Reference to the scene this UDP server is attached to</summary>
306 public Scene Scene { get; private set; } 305 public Scene Scene { get; protected set; }
307 306
308 /// <summary>The X/Y coordinates of the scene this UDP server is attached to</summary> 307 /// <summary>The X/Y coordinates of the scene this UDP server is attached to</summary>
309 private Location m_location; 308 protected Location m_location;
310 309
311 /// <summary>The size of the receive buffer for the UDP socket. This value 310 /// <summary>The size of the receive buffer for the UDP socket. This value
312 /// is passed up to the operating system and used in the system networking 311 /// is passed up to the operating system and used in the system networking
313 /// stack. Use zero to leave this value as the default</summary> 312 /// stack. Use zero to leave this value as the default</summary>
314 private int m_recvBufferSize; 313 protected int m_recvBufferSize;
315 314
316 /// <summary>Flag to process packets asynchronously or synchronously</summary> 315 /// <summary>Flag to process packets asynchronously or synchronously</summary>
317 private bool m_asyncPacketHandling; 316 protected bool m_asyncPacketHandling;
318 317
319 /// <summary>Tracks whether or not a packet was sent each round so we know 318 /// <summary>Tracks whether or not a packet was sent each round so we know
320 /// whether or not to sleep</summary> 319 /// whether or not to sleep</summary>
321 private bool m_packetSent; 320 protected bool m_packetSent;
322 321
323 /// <summary>Environment.TickCount of the last time that packet stats were reported to the scene</summary> 322 /// <summary>Environment.TickCount of the last time that packet stats were reported to the scene</summary>
324 private int m_elapsedMSSinceLastStatReport = 0; 323 protected int m_elapsedMSSinceLastStatReport = 0;
325 324
326 /// <summary>Environment.TickCount of the last time the outgoing packet handler executed</summary> 325 /// <summary>Environment.TickCount of the last time the outgoing packet handler executed</summary>
327 private int m_tickLastOutgoingPacketHandler; 326 protected int m_tickLastOutgoingPacketHandler;
328 327
329 /// <summary>Keeps track of the number of elapsed milliseconds since the last time the outgoing packet handler looped</summary> 328 /// <summary>Keeps track of the number of elapsed milliseconds since the last time the outgoing packet handler looped</summary>
330 private int m_elapsedMSOutgoingPacketHandler; 329 protected int m_elapsedMSOutgoingPacketHandler;
331 330
332 /// <summary>Keeps track of the number of 100 millisecond periods elapsed in the outgoing packet handler executed</summary> 331 /// <summary>Keeps track of the number of 100 millisecond periods elapsed in the outgoing packet handler executed</summary>
333 private int m_elapsed100MSOutgoingPacketHandler; 332 protected int m_elapsed100MSOutgoingPacketHandler;
334 333
335 /// <summary>Keeps track of the number of 500 millisecond periods elapsed in the outgoing packet handler executed</summary> 334 /// <summary>Keeps track of the number of 500 millisecond periods elapsed in the outgoing packet handler executed</summary>
336 private int m_elapsed500MSOutgoingPacketHandler; 335 protected int m_elapsed500MSOutgoingPacketHandler;
337 336
338 /// <summary>Flag to signal when clients should check for resends</summary> 337 /// <summary>Flag to signal when clients should check for resends</summary>
339 protected bool m_resendUnacked; 338 protected bool m_resendUnacked;
@@ -344,7 +343,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
344 /// <summary>Flag to signal when clients should send pings</summary> 343 /// <summary>Flag to signal when clients should send pings</summary>
345 protected bool m_sendPing; 344 protected bool m_sendPing;
346 345
347 private int m_animationSequenceNumber; 346 protected int m_animationSequenceNumber;
348 347
349 public int NextAnimationSequenceNumber 348 public int NextAnimationSequenceNumber
350 { 349 {
@@ -359,7 +358,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
359 358
360 359
361 360
362 private ExpiringCache<IPEndPoint, Queue<UDPPacketBuffer>> m_pendingCache = new ExpiringCache<IPEndPoint, Queue<UDPPacketBuffer>>(); 361 protected ExpiringCache<IPEndPoint, Queue<UDPPacketBuffer>> m_pendingCache = new ExpiringCache<IPEndPoint, Queue<UDPPacketBuffer>>();
363 362
364 /// <summary> 363 /// <summary>
365 /// Event used to signal when queued packets are available for sending. 364 /// Event used to signal when queued packets are available for sending.
@@ -369,25 +368,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
369 /// Some data is sent immediately and not queued. That data would not trigger this event. 368 /// Some data is sent immediately and not queued. That data would not trigger this event.
370 /// WRONG use. May be usefull in future revision 369 /// WRONG use. May be usefull in future revision
371 /// </remarks> 370 /// </remarks>
372// private AutoResetEvent m_dataPresentEvent = new AutoResetEvent(false); 371// protected AutoResetEvent m_dataPresentEvent = new AutoResetEvent(false);
373 372
374 private Pool<IncomingPacket> m_incomingPacketPool; 373 protected Pool<IncomingPacket> m_incomingPacketPool;
375 374
376 /// <summary> 375 /// <summary>
377 /// Stat for number of packets in the main pool awaiting use. 376 /// Stat for number of packets in the main pool awaiting use.
378 /// </summary> 377 /// </summary>
379 private Stat m_poolCountStat; 378 protected Stat m_poolCountStat;
380 379
381 /// <summary> 380 /// <summary>
382 /// Stat for number of packets in the inbound packet pool awaiting use. 381 /// Stat for number of packets in the inbound packet pool awaiting use.
383 /// </summary> 382 /// </summary>
384 private Stat m_incomingPacketPoolStat; 383 protected Stat m_incomingPacketPoolStat;
385 384
386 private int m_defaultRTO = 0; 385 protected int m_defaultRTO = 0;
387 private int m_maxRTO = 0; 386 protected int m_maxRTO = 0;
388 private int m_ackTimeout = 0; 387 protected int m_ackTimeout = 0;
389 private int m_pausedAckTimeout = 0; 388 protected int m_pausedAckTimeout = 0;
390 private bool m_disableFacelights = false; 389 protected bool m_disableFacelights = false;
391 390
392 public Socket Server { get { return null; } } 391 public Socket Server { get { return null; } }
393 392
@@ -409,28 +408,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
409 /// <summary> 408 /// <summary>
410 /// Record how many inbound packets could not be recognized as LLUDP packets. 409 /// Record how many inbound packets could not be recognized as LLUDP packets.
411 /// </summary> 410 /// </summary>
412 public int IncomingMalformedPacketCount { get; private set; } 411 public int IncomingMalformedPacketCount { get; protected set; }
413 412
414 /// <summary> 413 /// <summary>
415 /// Record how many inbound packets could not be associated with a simulator circuit. 414 /// Record how many inbound packets could not be associated with a simulator circuit.
416 /// </summary> 415 /// </summary>
417 public int IncomingOrphanedPacketCount { get; private set; } 416 public int IncomingOrphanedPacketCount { get; protected set; }
418 417
419 /// <summary> 418 /// <summary>
420 /// Record current outgoing client for monitoring purposes. 419 /// Record current outgoing client for monitoring purposes.
421 /// </summary> 420 /// </summary>
422 private IClientAPI m_currentOutgoingClient; 421 protected IClientAPI m_currentOutgoingClient;
423 422
424 /// <summary> 423 /// <summary>
425 /// Recording current incoming client for monitoring purposes. 424 /// Recording current incoming client for monitoring purposes.
426 /// </summary> 425 /// </summary>
427 private IClientAPI m_currentIncomingClient; 426 protected IClientAPI m_currentIncomingClient;
428 427
429 /// <summary> 428 /// <summary>
430 /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available 429 /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available
431 /// threadpool threads. 430 /// threadpool threads.
432 /// </summary> 431 /// </summary>
433 public JobEngine IpahEngine { get; private set; } 432 public JobEngine IpahEngine { get; protected set; }
434 433
435 /// <summary> 434 /// <summary>
436 /// Run queue empty processing within a single persistent thread. 435 /// Run queue empty processing within a single persistent thread.
@@ -440,7 +439,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
440 /// connection schedule its own job in the threadpool which causes performance problems when there are many 439 /// connection schedule its own job in the threadpool which causes performance problems when there are many
441 /// connections. 440 /// connections.
442 /// </remarks> 441 /// </remarks>
443 public JobEngine OqrEngine { get; private set; } 442 public JobEngine OqrEngine { get; protected set; }
444 443
445 public LLUDPServer( 444 public LLUDPServer(
446 IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port, 445 IPAddress listenIP, ref uint port, int proxyPortOffsetParm, bool allow_alternate_port,
@@ -662,7 +661,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
662 /// If the outgoing UDP thread times out, then return client that was being processed to help with debugging. 661 /// If the outgoing UDP thread times out, then return client that was being processed to help with debugging.
663 /// </summary> 662 /// </summary>
664 /// <returns></returns> 663 /// <returns></returns>
665 private string GetWatchdogIncomingAlarmData() 664 protected string GetWatchdogIncomingAlarmData()
666 { 665 {
667 return string.Format( 666 return string.Format(
668 "Client is {0}", 667 "Client is {0}",
@@ -673,7 +672,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
673 /// If the outgoing UDP thread times out, then return client that was being processed to help with debugging. 672 /// If the outgoing UDP thread times out, then return client that was being processed to help with debugging.
674 /// </summary> 673 /// </summary>
675 /// <returns></returns> 674 /// <returns></returns>
676 private string GetWatchdogOutgoingAlarmData() 675 protected string GetWatchdogOutgoingAlarmData()
677 { 676 {
678 return string.Format( 677 return string.Format(
679 "Client is {0}", 678 "Client is {0}",
@@ -1237,7 +1236,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1237 outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; 1236 outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue;
1238 } 1237 }
1239 1238
1240 private void RecordMalformedInboundPacket(IPEndPoint endPoint) 1239 protected void RecordMalformedInboundPacket(IPEndPoint endPoint)
1241 { 1240 {
1242// if (m_malformedCount < 100) 1241// if (m_malformedCount < 100)
1243// m_log.DebugFormat("[LLUDPSERVER]: Dropped malformed packet: " + e.ToString()); 1242// m_log.DebugFormat("[LLUDPSERVER]: Dropped malformed packet: " + e.ToString());
@@ -1666,7 +1665,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1666 1665
1667 #endregion BinaryStats 1666 #endregion BinaryStats
1668 1667
1669 private void HandleUseCircuitCode(object o) 1668 protected void HandleUseCircuitCode(object o)
1670 { 1669 {
1671 IPEndPoint endPoint = null; 1670 IPEndPoint endPoint = null;
1672 IClientAPI client = null; 1671 IClientAPI client = null;
@@ -1775,7 +1774,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1775 } 1774 }
1776 } 1775 }
1777/* 1776/*
1778 private void HandleCompleteMovementIntoRegion(object o) 1777 protected void HandleCompleteMovementIntoRegion(object o)
1779 { 1778 {
1780 IPEndPoint endPoint = null; 1779 IPEndPoint endPoint = null;
1781 IClientAPI client = null; 1780 IClientAPI client = null;
@@ -1895,7 +1894,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1895 /// </remarks> 1894 /// </remarks>
1896 /// <param name="remoteEndpoint"></param> 1895 /// <param name="remoteEndpoint"></param>
1897 /// <param name="sequenceNumber"></param> 1896 /// <param name="sequenceNumber"></param>
1898 private void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber) 1897 protected void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber)
1899 { 1898 {
1900 PacketAckPacket ack = new PacketAckPacket(); 1899 PacketAckPacket ack = new PacketAckPacket();
1901 ack.Header.Reliable = false; 1900 ack.Header.Reliable = false;
@@ -1919,7 +1918,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1919 AsyncBeginSend(buffer); 1918 AsyncBeginSend(buffer);
1920 } 1919 }
1921 1920
1922 private bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo) 1921 protected bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo)
1923 { 1922 {
1924 UUID agentID = useCircuitCode.CircuitCode.ID; 1923 UUID agentID = useCircuitCode.CircuitCode.ID;
1925 UUID sessionID = useCircuitCode.CircuitCode.SessionID; 1924 UUID sessionID = useCircuitCode.CircuitCode.SessionID;
@@ -1989,7 +1988,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1989 /// </remarks> 1988 /// </remarks>
1990 /// <param name='client'></param> 1989 /// <param name='client'></param>
1991 /// <param name='timeoutTicks'></param> 1990 /// <param name='timeoutTicks'></param>
1992 private void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks) 1991 protected void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks)
1993 { 1992 {
1994 lock (client.CloseSyncLock) 1993 lock (client.CloseSyncLock)
1995 { 1994 {
@@ -2010,7 +2009,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2010 client.Close(true,true); 2009 client.Close(true,true);
2011 } 2010 }
2012 2011
2013 private void IncomingPacketHandler() 2012 protected void IncomingPacketHandler()
2014 { 2013 {
2015 Thread.CurrentThread.Priority = ThreadPriority.Highest; 2014 Thread.CurrentThread.Priority = ThreadPriority.Highest;
2016 IncomingPacket incomingPacket; 2015 IncomingPacket incomingPacket;
@@ -2052,7 +2051,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2052 Watchdog.RemoveThread(); 2051 Watchdog.RemoveThread();
2053 } 2052 }
2054 2053
2055 private void OutgoingPacketHandler() 2054 protected void OutgoingPacketHandler()
2056 { 2055 {
2057 Thread.CurrentThread.Priority = ThreadPriority.Highest; 2056 Thread.CurrentThread.Priority = ThreadPriority.Highest;
2058 2057
@@ -2181,27 +2180,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2181 #region Emergency Monitoring 2180 #region Emergency Monitoring
2182 // Alternative packet handler fuull of instrumentation 2181 // Alternative packet handler fuull of instrumentation
2183 // Handy for hunting bugs 2182 // Handy for hunting bugs
2184 private Stopwatch watch1 = new Stopwatch(); 2183 protected Stopwatch watch1 = new Stopwatch();
2185 private Stopwatch watch2 = new Stopwatch(); 2184 protected Stopwatch watch2 = new Stopwatch();
2186 2185
2187 private float avgProcessingTicks = 0; 2186 protected float avgProcessingTicks = 0;
2188 private float avgResendUnackedTicks = 0; 2187 protected float avgResendUnackedTicks = 0;
2189 private float avgSendAcksTicks = 0; 2188 protected float avgSendAcksTicks = 0;
2190 private float avgSendPingTicks = 0; 2189 protected float avgSendPingTicks = 0;
2191 private float avgDequeueTicks = 0; 2190 protected float avgDequeueTicks = 0;
2192 private long nticks = 0; 2191 protected long nticks = 0;
2193 private long nticksUnack = 0; 2192 protected long nticksUnack = 0;
2194 private long nticksAck = 0; 2193 protected long nticksAck = 0;
2195 private long nticksPing = 0; 2194 protected long nticksPing = 0;
2196 private int npacksSent = 0; 2195 protected int npacksSent = 0;
2197 private int npackNotSent = 0; 2196 protected int npackNotSent = 0;
2198 2197
2199 /// <summary> 2198 /// <summary>
2200 /// Number of inbound packets processed since startup. 2199 /// Number of inbound packets processed since startup.
2201 /// </summary> 2200 /// </summary>
2202 public long IncomingPacketsProcessed { get; private set; } 2201 public long IncomingPacketsProcessed { get; protected set; }
2203 2202
2204 private void MonitoredClientOutgoingPacketHandler(IClientAPI client) 2203 protected void MonitoredClientOutgoingPacketHandler(IClientAPI client)
2205 { 2204 {
2206 nticks++; 2205 nticks++;
2207 watch1.Start(); 2206 watch1.Start();
@@ -2296,7 +2295,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2296 2295
2297 #endregion 2296 #endregion
2298 2297
2299 private void ProcessInPacket(IncomingPacket incomingPacket) 2298 protected void ProcessInPacket(IncomingPacket incomingPacket)
2300 { 2299 {
2301 Packet packet = incomingPacket.Packet; 2300 Packet packet = incomingPacket.Packet;
2302 LLClientView client = incomingPacket.Client; 2301 LLClientView client = incomingPacket.Client;
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
index ee0a4f8..fe0a243 100644
--- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
@@ -45,18 +45,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
45 private static readonly ILog m_log = 45 private static readonly ILog m_log =
46 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
47 47
48 private const int DEBUG_CHANNEL = 2147483647; 48 protected const int DEBUG_CHANNEL = 2147483647;
49 49
50 private bool m_enabled = true; 50 protected bool m_enabled = true;
51 private int m_saydistance = 20; 51 protected int m_saydistance = 20;
52 private int m_shoutdistance = 100; 52 protected int m_shoutdistance = 100;
53 private int m_whisperdistance = 10; 53 protected int m_whisperdistance = 10;
54 private List<Scene> m_scenes = new List<Scene>(); 54 protected List<Scene> m_scenes = new List<Scene>();
55 private List<string> FreezeCache = new List<string>(); 55 protected List<string> FreezeCache = new List<string>();
56 private string m_adminPrefix = ""; 56 protected string m_adminPrefix = "";
57 internal object m_syncy = new object(); 57 protected object m_syncy = new object();
58 58
59 internal IConfig m_config; 59 protected IConfig m_config;
60 60
61 #region ISharedRegionModule Members 61 #region ISharedRegionModule Members
62 public virtual void Initialise(IConfigSource config) 62 public virtual void Initialise(IConfigSource config)
@@ -134,7 +134,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
134 { 134 {
135 } 135 }
136 136
137 public Type ReplaceableInterface 137 public virtual Type ReplaceableInterface
138 { 138 {
139 get { return null; } 139 get { return null; }
140 } 140 }
@@ -152,7 +152,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
152 client.OnChatFromClient += OnChatFromClient; 152 client.OnChatFromClient += OnChatFromClient;
153 } 153 }
154 154
155 protected OSChatMessage FixPositionOfChatMessage(OSChatMessage c) 155 protected virtual OSChatMessage FixPositionOfChatMessage(OSChatMessage c)
156 { 156 {
157 ScenePresence avatar; 157 ScenePresence avatar;
158 Scene scene = (Scene)c.Scene; 158 Scene scene = (Scene)c.Scene;
@@ -324,7 +324,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
324 fromID, receiverIDs, message, c.Type, fromPos, fromName, sourceType, ChatAudibleLevel.Fully); 324 fromID, receiverIDs, message, c.Type, fromPos, fromName, sourceType, ChatAudibleLevel.Fully);
325 } 325 }
326 326
327 static private Vector3 CenterOfRegion = new Vector3(128, 128, 30); 327 static protected Vector3 CenterOfRegion = new Vector3(128, 128, 30);
328 328
329 public virtual void OnChatBroadcast(Object sender, OSChatMessage c) 329 public virtual void OnChatBroadcast(Object sender, OSChatMessage c)
330 { 330 {
@@ -437,7 +437,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
437 } 437 }
438 438
439 Dictionary<UUID, System.Threading.Timer> Timers = new Dictionary<UUID, System.Threading.Timer>(); 439 Dictionary<UUID, System.Threading.Timer> Timers = new Dictionary<UUID, System.Threading.Timer>();
440 public void ParcelFreezeUser(IClientAPI client, UUID parcelowner, uint flags, UUID target) 440 public virtual void ParcelFreezeUser(IClientAPI client, UUID parcelowner, uint flags, UUID target)
441 { 441 {
442 System.Threading.Timer Timer; 442 System.Threading.Timer Timer;
443 if (flags == 0) 443 if (flags == 0)
@@ -456,7 +456,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
456 } 456 }
457 } 457 }
458 458
459 private void OnEndParcelFrozen(object avatar) 459 protected virtual void OnEndParcelFrozen(object avatar)
460 { 460 {
461 UUID target = (UUID)avatar; 461 UUID target = (UUID)avatar;
462 FreezeCache.Remove(target.ToString()); 462 FreezeCache.Remove(target.ToString());
@@ -467,9 +467,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
467 } 467 }
468 #region SimulatorFeaturesRequest 468 #region SimulatorFeaturesRequest
469 469
470 static OSDInteger m_SayRange, m_WhisperRange, m_ShoutRange; 470 protected static OSDInteger m_SayRange, m_WhisperRange, m_ShoutRange;
471 471
472 private void OnSimulatorFeaturesRequest(UUID agentID, ref OSDMap features) 472 protected virtual void OnSimulatorFeaturesRequest(UUID agentID, ref OSDMap features)
473 { 473 {
474 OSD extras = new OSDMap(); 474 OSD extras = new OSDMap();
475 if (features.ContainsKey("OpenSimExtras")) 475 if (features.ContainsKey("OpenSimExtras"))
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs
index 55e30a0..fb868be 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/InstantMessageModule.cs
@@ -45,22 +45,22 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
45 private static readonly ILog m_log = LogManager.GetLogger( 45 private static readonly ILog m_log = LogManager.GetLogger(
46 MethodBase.GetCurrentMethod().DeclaringType); 46 MethodBase.GetCurrentMethod().DeclaringType);
47 47
48 private Timer m_logTimer = new Timer(10000); 48 protected Timer m_logTimer = new Timer(10000);
49 private List<GridInstantMessage> m_logData = new List<GridInstantMessage>(); 49 protected List<GridInstantMessage> m_logData = new List<GridInstantMessage>();
50 private string m_restUrl; 50 protected string m_restUrl;
51 51
52 /// <value> 52 /// <value>
53 /// Is this module enabled? 53 /// Is this module enabled?
54 /// </value> 54 /// </value>
55 private bool m_enabled = false; 55 protected bool m_enabled = false;
56 56
57 private readonly List<Scene> m_scenes = new List<Scene>(); 57 protected readonly List<Scene> m_scenes = new List<Scene>();
58 58
59 #region Region Module interface 59 #region Region Module interface
60 60
61 private IMessageTransferModule m_TransferModule = null; 61 protected IMessageTransferModule m_TransferModule = null;
62 62
63 public void Initialise(IConfigSource config) 63 public virtual void Initialise(IConfigSource config)
64 { 64 {
65 if (config.Configs["Messaging"] != null) 65 if (config.Configs["Messaging"] != null)
66 { 66 {
@@ -76,7 +76,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
76 m_logTimer.Elapsed += LogTimerElapsed; 76 m_logTimer.Elapsed += LogTimerElapsed;
77 } 77 }
78 78
79 public void AddRegion(Scene scene) 79 public virtual void AddRegion(Scene scene)
80 { 80 {
81 if (!m_enabled) 81 if (!m_enabled)
82 return; 82 return;
@@ -92,7 +92,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
92 } 92 }
93 } 93 }
94 94
95 public void RegionLoaded(Scene scene) 95 public virtual void RegionLoaded(Scene scene)
96 { 96 {
97 if (!m_enabled) 97 if (!m_enabled)
98 return; 98 return;
@@ -114,7 +114,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
114 } 114 }
115 } 115 }
116 116
117 public void RemoveRegion(Scene scene) 117 public virtual void RemoveRegion(Scene scene)
118 { 118 {
119 if (!m_enabled) 119 if (!m_enabled)
120 return; 120 return;
@@ -125,7 +125,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
125 } 125 }
126 } 126 }
127 127
128 void OnClientConnect(IClientCore client) 128 protected virtual void OnClientConnect(IClientCore client)
129 { 129 {
130 IClientIM clientIM; 130 IClientIM clientIM;
131 if (client.TryGet(out clientIM)) 131 if (client.TryGet(out clientIM))
@@ -134,27 +134,27 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
134 } 134 }
135 } 135 }
136 136
137 public void PostInitialise() 137 public virtual void PostInitialise()
138 { 138 {
139 } 139 }
140 140
141 public void Close() 141 public virtual void Close()
142 { 142 {
143 } 143 }
144 144
145 public string Name 145 public virtual string Name
146 { 146 {
147 get { return "InstantMessageModule"; } 147 get { return "InstantMessageModule"; }
148 } 148 }
149 149
150 public Type ReplaceableInterface 150 public virtual Type ReplaceableInterface
151 { 151 {
152 get { return null; } 152 get { return null; }
153 } 153 }
154 154
155 #endregion 155 #endregion
156 156
157 public void OnInstantMessage(IClientAPI client, GridInstantMessage im) 157 public virtual void OnInstantMessage(IClientAPI client, GridInstantMessage im)
158 { 158 {
159 byte dialog = im.dialog; 159 byte dialog = im.dialog;
160 160
@@ -230,7 +230,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
230 /// 230 ///
231 /// </summary> 231 /// </summary>
232 /// <param name="msg"></param> 232 /// <param name="msg"></param>
233 private void OnGridInstantMessage(GridInstantMessage msg) 233 protected virtual void OnGridInstantMessage(GridInstantMessage msg)
234 { 234 {
235 // Just call the Text IM handler above 235 // Just call the Text IM handler above
236 // This event won't be raised unless we have that agent, 236 // This event won't be raised unless we have that agent,
@@ -240,7 +240,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
240 OnInstantMessage(null, msg); 240 OnInstantMessage(null, msg);
241 } 241 }
242 242
243 private void LogInstantMesssage(GridInstantMessage im) 243 protected virtual void LogInstantMesssage(GridInstantMessage im)
244 { 244 {
245 if (m_logData.Count < 20) 245 if (m_logData.Count < 20)
246 { 246 {
@@ -256,7 +256,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
256 } 256 }
257 } 257 }
258 258
259 private void LogTimerElapsed(object source, ElapsedEventArgs e) 259 protected virtual void LogTimerElapsed(object source, ElapsedEventArgs e)
260 { 260 {
261 lock (m_logData) 261 lock (m_logData)
262 { 262 {