From f3a24e432f214f6b3484b620fabc058966628836 Mon Sep 17 00:00:00 2001 From: MW Date: Sun, 22 Feb 2009 19:19:24 +0000 Subject: First step in giving the messaging server the modular refactoring treatment. As with the other two servers, this is very much a work in progress. --- OpenSim/Grid/MessagingServer/Main.cs | 127 ++++++++++++++++++++++++++--------- 1 file changed, 95 insertions(+), 32 deletions(-) (limited to 'OpenSim/Grid/MessagingServer/Main.cs') diff --git a/OpenSim/Grid/MessagingServer/Main.cs b/OpenSim/Grid/MessagingServer/Main.cs index 2f63ee9..f09d360 100644 --- a/OpenSim/Grid/MessagingServer/Main.cs +++ b/OpenSim/Grid/MessagingServer/Main.cs @@ -26,6 +26,7 @@ */ using System; +using System.Collections.Generic; using System.IO; using System.Reflection; using log4net; @@ -38,13 +39,18 @@ namespace OpenSim.Grid.MessagingServer { /// /// - public class OpenMessage_Main : BaseOpenSimServer + public class OpenMessage_Main : BaseOpenSimServer , IUGAIMCore { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private MessageServerConfig Cfg; private MessageService msgsvc; + private MessageRegionModule m_regionModule; + private MessageUserServerModule m_userServerModule; + + private UserDataBaseService m_userDataBaseService; + // private UUID m_lastCreatedUser = UUID.Random(); public static void Main(string[] args) @@ -77,7 +83,7 @@ namespace OpenSim.Grid.MessagingServer private void registerWithUserServer() { - if (msgsvc.registerWithUserServer()) + if (m_userServerModule.registerWithUserServer()) { m_log.Info("[SERVER]: Starting HTTP process"); m_httpServer = new BaseHttpServer(Cfg.HttpPort); @@ -85,12 +91,13 @@ namespace OpenSim.Grid.MessagingServer m_httpServer.AddXmlRPCHandler("login_to_simulator", msgsvc.UserLoggedOn); m_httpServer.AddXmlRPCHandler("logout_of_simulator", msgsvc.UserLoggedOff); m_httpServer.AddXmlRPCHandler("get_presence_info_bulk", msgsvc.GetPresenceInfoBulk); - m_httpServer.AddXmlRPCHandler("region_startup", msgsvc.RegionStartup); - m_httpServer.AddXmlRPCHandler("region_shutdown", msgsvc.RegionShutdown); m_httpServer.AddXmlRPCHandler("process_region_shutdown", msgsvc.ProcessRegionShutdown); m_httpServer.AddXmlRPCHandler("agent_location", msgsvc.AgentLocation); m_httpServer.AddXmlRPCHandler("agent_leaving", msgsvc.AgentLeaving); + m_httpServer.AddXmlRPCHandler("region_startup", m_regionModule.RegionStartup); + m_httpServer.AddXmlRPCHandler("region_shutdown", m_regionModule.RegionShutdown); + m_httpServer.Start(); m_log.Info("[SERVER]: Userserver registration was successful"); } @@ -103,7 +110,7 @@ namespace OpenSim.Grid.MessagingServer private void deregisterFromUserServer() { - msgsvc.deregisterWithUserServer(); + m_userServerModule.deregisterWithUserServer(); if (m_httpServer != null) { // try a completely fresh registration, with fresh handlers, too @@ -117,9 +124,24 @@ namespace OpenSim.Grid.MessagingServer { Cfg = new MessageServerConfig("MESSAGING SERVER", (Path.Combine(Util.configDir(), "MessagingServer_Config.xml"))); - msgsvc = new MessageService(Cfg); + m_userDataBaseService = new UserDataBaseService(); + m_userDataBaseService.AddPlugin(Cfg.DatabaseProvider, Cfg.DatabaseConnect); + + m_userServerModule = new MessageUserServerModule(Cfg, this); + m_userServerModule.Initialise(); + + msgsvc = new MessageService(Cfg, this, m_userDataBaseService); + msgsvc.Initialise(); + + m_regionModule = new MessageRegionModule(Cfg, this); + m_regionModule.Initialise(); + registerWithUserServer(); + m_userServerModule.PostInitialise(); + msgsvc.PostInitialise(); + m_regionModule.PostInitialise(); + m_log.Info("[SERVER]: Messageserver 0.5 - Startup complete"); base.StartupSpecific(); @@ -135,35 +157,35 @@ namespace OpenSim.Grid.MessagingServer public void do_create(string what) { - switch (what) - { - case "user": - try - { - //userID = - //m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); - } catch (Exception ex) - { - m_console.Error("[SERVER]: Error creating user: {0}", ex.ToString()); - } - - try - { - //RestObjectPoster.BeginPostObject(m_userManager._config.InventoryUrl + "CreateInventory/", - //userID.Guid); - } - catch (Exception ex) - { - m_console.Error("[SERVER]: Error creating inventory for user: {0}", ex.ToString()); - } - // m_lastCreatedUser = userID; - break; - } + //switch (what) + //{ + // case "user": + // try + // { + // //userID = + // //m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); + // } catch (Exception ex) + // { + // m_console.Error("[SERVER]: Error creating user: {0}", ex.ToString()); + // } + + // try + // { + // //RestObjectPoster.BeginPostObject(m_userManager._config.InventoryUrl + "CreateInventory/", + // //userID.Guid); + // } + // catch (Exception ex) + // { + // m_console.Error("[SERVER]: Error creating inventory for user: {0}", ex.ToString()); + // } + // // m_lastCreatedUser = userID; + // break; + //} } private void HandleClearCache(string module, string[] cmd) { - int entries = msgsvc.ClearRegionCache(); + int entries = m_regionModule.ClearRegionCache(); m_console.Notice("Region cache cleared! Cleared " + entries.ToString() + " entries"); } @@ -176,7 +198,48 @@ namespace OpenSim.Grid.MessagingServer public override void ShutdownSpecific() { - msgsvc.deregisterWithUserServer(); + m_userServerModule.deregisterWithUserServer(); + } + + #region IUGAIMCore + private readonly Dictionary m_moduleInterfaces = new Dictionary(); + + /// + /// Register an Module interface. + /// + /// + /// + public void RegisterInterface(T iface) + { + lock (m_moduleInterfaces) + { + if (!m_moduleInterfaces.ContainsKey(typeof(T))) + { + m_moduleInterfaces.Add(typeof(T), iface); + } + } + } + + public bool TryGet(out T iface) + { + if (m_moduleInterfaces.ContainsKey(typeof(T))) + { + iface = (T)m_moduleInterfaces[typeof(T)]; + return true; + } + iface = default(T); + return false; + } + + public T Get() + { + return (T)m_moduleInterfaces[typeof(T)]; + } + + public BaseHttpServer GetHttpServer() + { + return m_httpServer; } + #endregion } } -- cgit v1.1