aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/MessagingServer
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/MessagingServer')
-rw-r--r--OpenSim/Grid/MessagingServer/Main.cs1
-rw-r--r--OpenSim/Grid/MessagingServer/MessageService.cs30
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}