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/