diff options
Diffstat (limited to 'OpenSim/Grid/MessagingServer/MessageService.cs')
-rw-r--r-- | OpenSim/Grid/MessagingServer/MessageService.cs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/OpenSim/Grid/MessagingServer/MessageService.cs b/OpenSim/Grid/MessagingServer/MessageService.cs index a4e54c7..a8ee9d5 100644 --- a/OpenSim/Grid/MessagingServer/MessageService.cs +++ b/OpenSim/Grid/MessagingServer/MessageService.cs | |||
@@ -666,5 +666,35 @@ namespace OpenSim.Grid.MessagingServer | |||
666 | response.Value = result; | 666 | response.Value = result; |
667 | return response; | 667 | return response; |
668 | } | 668 | } |
669 | |||
670 | public XmlRpcResponse ProcessRegionShutdown(XmlRpcRequest request) | ||
671 | { | ||
672 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
673 | Hashtable result = new Hashtable(); | ||
674 | result["success"] = "FALSE"; | ||
675 | |||
676 | UUID regionID; | ||
677 | if (UUID.TryParse((string)requestData["regionid"], out regionID)) | ||
678 | { | ||
679 | m_log.DebugFormat("[PRESENCE] Processing region restart for {0}", regionID); | ||
680 | result["success"] = "TRUE"; | ||
681 | |||
682 | foreach (UserPresenceData up in m_presences.Values) | ||
683 | { | ||
684 | if(up.regionData.UUID == regionID) | ||
685 | { | ||
686 | if (up.OnlineYN) | ||
687 | { | ||
688 | m_log.DebugFormat("[PRESENCE] Logging off {0} because the region they were in has gone", up.agentData.AgentID); | ||
689 | ProcessLogOff(up.agentData.AgentID); | ||
690 | } | ||
691 | } | ||
692 | } | ||
693 | } | ||
694 | |||
695 | XmlRpcResponse response = new XmlRpcResponse(); | ||
696 | response.Value = result; | ||
697 | return response; | ||
698 | } | ||
669 | } | 699 | } |
670 | } | 700 | } |