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