diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Grid/MessagingServer/Main.cs | 1 | ||||
-rw-r--r-- | OpenSim/Grid/MessagingServer/MessageService.cs | 30 |
2 files changed, 31 insertions, 0 deletions
diff --git a/OpenSim/Grid/MessagingServer/Main.cs b/OpenSim/Grid/MessagingServer/Main.cs index 5568f73..0e03df1 100644 --- a/OpenSim/Grid/MessagingServer/Main.cs +++ b/OpenSim/Grid/MessagingServer/Main.cs | |||
@@ -90,6 +90,7 @@ namespace OpenSim.Grid.MessagingServer | |||
90 | m_httpServer.AddXmlRPCHandler("get_presence_info_bulk", msgsvc.GetPresenceInfoBulk); | 90 | m_httpServer.AddXmlRPCHandler("get_presence_info_bulk", msgsvc.GetPresenceInfoBulk); |
91 | m_httpServer.AddXmlRPCHandler("region_startup", msgsvc.RegionStartup); | 91 | m_httpServer.AddXmlRPCHandler("region_startup", msgsvc.RegionStartup); |
92 | m_httpServer.AddXmlRPCHandler("region_shutdown", msgsvc.RegionShutdown); | 92 | m_httpServer.AddXmlRPCHandler("region_shutdown", msgsvc.RegionShutdown); |
93 | m_httpServer.AddXmlRPCHandler("process_region_shutdown", msgsvc.ProcessRegionShutdown); | ||
93 | m_httpServer.AddXmlRPCHandler("agent_location", msgsvc.AgentLocation); | 94 | m_httpServer.AddXmlRPCHandler("agent_location", msgsvc.AgentLocation); |
94 | m_httpServer.AddXmlRPCHandler("agent_leaving", msgsvc.AgentLeaving); | 95 | m_httpServer.AddXmlRPCHandler("agent_leaving", msgsvc.AgentLeaving); |
95 | 96 | ||
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 | } |