From f7dbfe63e55ca875c1079084c4ca153f9a815327 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Mon, 18 May 2009 21:04:25 +0000 Subject: [PATCH] This commit changes the way the new server works. There is no longer a server exe for each function, rather each function is a connector and the server ini loads them. If you like your multiple processes, use -inifile with the server. Otherwise, you get one server process that serves all configured funcions, see example .ini. The new exe is OpenSim.Server.exe. Clean your bin, loads of names have changed! --- .../Handlers/Asset/AssetServerConnector.cs | 6 ++- .../AssetServerMain.cs => ServerMain.cs} | 54 +++++++++++++++++-- ...r.exe.config => OpenSim.Server.exe.config} | 0 ...ini.example => OpenSim.Server.ini.example} | 3 ++ prebuild.xml | 8 +-- 5 files changed, 60 insertions(+), 11 deletions(-) rename OpenSim/Server/{AssetServer/AssetServerMain.cs => ServerMain.cs} (50%) rename bin/{OpenSim.Servers.AssetServer.exe.config => OpenSim.Server.exe.config} (100%) rename bin/{OpenSim.Servers.AssetServer.ini.example => OpenSim.Server.ini.example} (85%) diff --git a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs index 64014f58f9..686e6dd762 100644 --- a/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs +++ b/OpenSim/Server/Handlers/Asset/AssetServerConnector.cs @@ -30,14 +30,16 @@ using Nini.Config; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Server.Handlers.Base; namespace OpenSim.Server.Handlers.Asset { - public class AssetServiceConnector + public class AssetServiceConnector : ServiceConnector { private IAssetService m_AssetService; - public AssetServiceConnector(IConfigSource config, IHttpServer server) + public AssetServiceConnector(IConfigSource config, IHttpServer server) : + base(config, server) { IConfig serverConfig = config.Configs["AssetService"]; if (serverConfig == null) diff --git a/OpenSim/Server/AssetServer/AssetServerMain.cs b/OpenSim/Server/ServerMain.cs similarity index 50% rename from OpenSim/Server/AssetServer/AssetServerMain.cs rename to OpenSim/Server/ServerMain.cs index b08c8cf523..352ae98e18 100644 --- a/OpenSim/Server/AssetServer/AssetServerMain.cs +++ b/OpenSim/Server/ServerMain.cs @@ -25,25 +25,69 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using Nini.Config; +using log4net; +using System.Reflection; using System; +using System.Collections.Generic; using OpenSim.Server.Base; +using OpenSim.Server.Handlers.Base; using OpenSim.Server.Handlers.Asset; -namespace OpenSim.Server.AssetServer +namespace OpenSim.Server { - public class AssetServer + public class OpenSimServer { + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); + protected static HttpServerBase m_Server = null; - protected static AssetServiceConnector m_AssetServiceConnector; + protected static List m_ServiceConnectors = + new List(); static int Main(string[] args) { m_Server = new HttpServerBase("Asset", args); - m_AssetServiceConnector = new AssetServiceConnector(m_Server.Config, - m_Server.HttpServer); + IConfig serverConfig = m_Server.Config.Configs["Startup"]; + if (serverConfig == null) + { + System.Console.WriteLine("Startup config section missing in .ini file"); + throw new Exception("Configuration error"); + } + string connList = serverConfig.GetString("ServiceConnectors", String.Empty); + string[] conns = connList.Split(new char[] {',', ' '}); + + foreach (string conn in conns) + { + if (conn == String.Empty) + continue; + + string[] parts = conn.Split(new char[] {':'}); + string friendlyName = parts[0]; + if (parts.Length > 1) + friendlyName = parts[1]; + + m_log.InfoFormat("[SERVER]: Loading {0}", friendlyName); + + Object[] modargs = new Object[] { m_Server.Config, m_Server.HttpServer }; + IServiceConnector connector = + ServerUtils.LoadPlugin(conn, + modargs); + + if (connector != null) + { + m_ServiceConnectors.Add(connector); + m_log.InfoFormat("[SERVER]: {0} loaded successfully", friendlyName); + } + else + { + m_log.InfoFormat("[SERVER]: Failed to load {0}", conn); + } + } return m_Server.Run(); } } diff --git a/bin/OpenSim.Servers.AssetServer.exe.config b/bin/OpenSim.Server.exe.config similarity index 100% rename from bin/OpenSim.Servers.AssetServer.exe.config rename to bin/OpenSim.Server.exe.config diff --git a/bin/OpenSim.Servers.AssetServer.ini.example b/bin/OpenSim.Server.ini.example similarity index 85% rename from bin/OpenSim.Servers.AssetServer.ini.example rename to bin/OpenSim.Server.ini.example index 656ded0f94..b2e0f9600f 100644 --- a/bin/OpenSim.Servers.AssetServer.ini.example +++ b/bin/OpenSim.Server.ini.example @@ -5,6 +5,9 @@ ; inifile = "OpenSim.Servers.AssetServer.ini" ; logfile = "AssetServer.log" ; Also read from application config file +; Connectors, comma separated +ServiceConnectors = "OpenSim.Server.Handlers.dll:AssetServiceConnector" + [Network] port = 8003 diff --git a/prebuild.xml b/prebuild.xml index 1c4d41ed2b..697c2667d0 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1418,19 +1418,19 @@ - + - ../../../bin/ + ../../bin/ - ../../../bin/ + ../../bin/ - ../../../bin/ + ../../bin/