diff options
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 | { |