diff options
author | John Hurliman | 2009-10-13 17:33:45 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-13 17:33:45 -0700 |
commit | dc11643c007adf7a640ec4fbabe25995352aaa18 (patch) | |
tree | 108b5f7234756c5395d4ca518cfeb03454f62ace /OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |
parent | * Fixed a bug where clients were being added to ClientManager twice (diff) | |
download | opensim-SC-dc11643c007adf7a640ec4fbabe25995352aaa18.zip opensim-SC-dc11643c007adf7a640ec4fbabe25995352aaa18.tar.gz opensim-SC-dc11643c007adf7a640ec4fbabe25995352aaa18.tar.bz2 opensim-SC-dc11643c007adf7a640ec4fbabe25995352aaa18.tar.xz |
* Consolidated adding / removing ClientManager IClientAPIs to two places in Scene
* Added some missing implementations of IClientAPI.RemoteEndPoint
* Added a ClientManager.Remove(UUID) overload
* Removed a reference to a missing project from prebuild.xml
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 61 |
1 files changed, 2 insertions, 59 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index aecb362..0acf6e8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -324,6 +324,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
324 | #region Properties | 324 | #region Properties |
325 | 325 | ||
326 | public LLUDPClient UDPClient { get { return m_udpClient; } } | 326 | public LLUDPClient UDPClient { get { return m_udpClient; } } |
327 | public IPEndPoint RemoteEndPoint { get { return m_udpClient.RemoteEndPoint; } } | ||
327 | public UUID SecureSessionId { get { return m_secureSessionId; } } | 328 | public UUID SecureSessionId { get { return m_secureSessionId; } } |
328 | public IScene Scene { get { return m_scene; } } | 329 | public IScene Scene { get { return m_scene; } } |
329 | public UUID SessionId { get { return m_sessionId; } } | 330 | public UUID SessionId { get { return m_sessionId; } } |
@@ -431,7 +432,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
431 | 432 | ||
432 | // Remove ourselves from the scene | 433 | // Remove ourselves from the scene |
433 | m_scene.RemoveClient(AgentId); | 434 | m_scene.RemoveClient(AgentId); |
434 | m_scene.ClientManager.Remove(this); | ||
435 | 435 | ||
436 | //m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); | 436 | //m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); |
437 | //GC.Collect(); | 437 | //GC.Collect(); |
@@ -586,11 +586,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
586 | 586 | ||
587 | # region Setup | 587 | # region Setup |
588 | 588 | ||
589 | /// <summary> | 589 | public virtual void Start() |
590 | /// Starts up the timers to check the client and resend unacked packets | ||
591 | /// Adds the client to the OpenSim.Region.Framework.Scenes.Scene | ||
592 | /// </summary> | ||
593 | protected virtual void InitNewClient() | ||
594 | { | 590 | { |
595 | m_avatarTerseUpdateTimer = new Timer(m_avatarTerseUpdateRate); | 591 | m_avatarTerseUpdateTimer = new Timer(m_avatarTerseUpdateRate); |
596 | m_avatarTerseUpdateTimer.Elapsed += new ElapsedEventHandler(ProcessAvatarTerseUpdates); | 592 | m_avatarTerseUpdateTimer.Elapsed += new ElapsedEventHandler(ProcessAvatarTerseUpdates); |
@@ -609,59 +605,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
609 | RefreshGroupMembership(); | 605 | RefreshGroupMembership(); |
610 | } | 606 | } |
611 | 607 | ||
612 | public virtual void Start() | ||
613 | { | ||
614 | // This sets up all the timers | ||
615 | InitNewClient(); | ||
616 | } | ||
617 | |||
618 | /// <summary> | ||
619 | /// Run a user session. This method lies at the base of the entire client thread. | ||
620 | /// </summary> | ||
621 | protected void RunUserSession() | ||
622 | { | ||
623 | try | ||
624 | { | ||
625 | |||
626 | } | ||
627 | catch (Exception e) | ||
628 | { | ||
629 | if (e is ThreadAbortException) | ||
630 | throw; | ||
631 | |||
632 | if (StatsManager.SimExtraStats != null) | ||
633 | StatsManager.SimExtraStats.AddAbnormalClientThreadTermination(); | ||
634 | |||
635 | // Don't let a failure in an individual client thread crash the whole sim. | ||
636 | m_log.ErrorFormat( | ||
637 | "[CLIENT]: Client thread for {0} {1} crashed. Logging them out.", Name, AgentId); | ||
638 | m_log.Error(e.ToString()); | ||
639 | |||
640 | try | ||
641 | { | ||
642 | // Make an attempt to alert the user that their session has crashed | ||
643 | AgentAlertMessagePacket packet | ||
644 | = BuildAgentAlertPacket( | ||
645 | "Unfortunately the session for this client on the server has crashed.\n" | ||
646 | + "Any further actions taken will not be processed.\n" | ||
647 | + "Please relog", true); | ||
648 | |||
649 | OutPacket(packet, ThrottleOutPacketType.Unknown); | ||
650 | |||
651 | // There may be a better way to do this. Perhaps kick? Not sure this propogates notifications to | ||
652 | // listeners yet, though. | ||
653 | Logout(this); | ||
654 | } | ||
655 | catch (Exception e2) | ||
656 | { | ||
657 | if (e2 is ThreadAbortException) | ||
658 | throw; | ||
659 | |||
660 | m_log.ErrorFormat("[CLIENT]: Further exception thrown on forced session logout. {0}", e2); | ||
661 | } | ||
662 | } | ||
663 | } | ||
664 | |||
665 | # endregion | 608 | # endregion |
666 | 609 | ||
667 | public void ActivateGesture(UUID assetId, UUID gestureId) | 610 | public void ActivateGesture(UUID assetId, UUID gestureId) |