svn attribute fixes so that we can play nice between windows and linux

GenericGridServerConcept
Sean Dague 2009-02-26 22:54:50 +00:00
parent 756c517069
commit cddaaf3e13
13 changed files with 919 additions and 919 deletions

View File

@ -1,256 +1,256 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the * * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using log4net; using log4net;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.RegionLoader.Filesystem; using OpenSim.Framework.RegionLoader.Filesystem;
using OpenSim.Framework.RegionLoader.Web; using OpenSim.Framework.RegionLoader.Web;
using OpenSim.Region.CoreModules.Agent.AssetTransaction; using OpenSim.Region.CoreModules.Agent.AssetTransaction;
using OpenSim.Region.CoreModules.Avatar.InstantMessage; using OpenSim.Region.CoreModules.Avatar.InstantMessage;
using OpenSim.Region.CoreModules.Scripting.DynamicTexture; using OpenSim.Region.CoreModules.Scripting.DynamicTexture;
using OpenSim.Region.CoreModules.Scripting.LoadImageURL; using OpenSim.Region.CoreModules.Scripting.LoadImageURL;
using OpenSim.Region.CoreModules.Scripting.XMLRPC; using OpenSim.Region.CoreModules.Scripting.XMLRPC;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Region.Communications.Hypergrid; using OpenSim.Region.Communications.Hypergrid;
using OpenSim.Region.Communications.Local; using OpenSim.Region.Communications.Local;
using OpenSim.Region.Communications.OGS1; using OpenSim.Region.Communications.OGS1;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.ApplicationPlugins.LoadRegions; using OpenSim.ApplicationPlugins.LoadRegions;
namespace OpenSim.ApplicationPlugins.CreateCommsManager namespace OpenSim.ApplicationPlugins.CreateCommsManager
{ {
public class CreateCommsManagerPlugin : IApplicationPlugin public class CreateCommsManagerPlugin : IApplicationPlugin
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region IApplicationPlugin Members #region IApplicationPlugin Members
// TODO: required by IPlugin, but likely not at all right // TODO: required by IPlugin, but likely not at all right
string m_name = "CreateCommsManagerPlugin"; string m_name = "CreateCommsManagerPlugin";
string m_version = "0.0"; string m_version = "0.0";
public string Version { get { return m_version; } } public string Version { get { return m_version; } }
public string Name { get { return m_name; } } public string Name { get { return m_name; } }
protected OpenSimBase m_openSim; protected OpenSimBase m_openSim;
protected BaseHttpServer m_httpServer; protected BaseHttpServer m_httpServer;
protected CommunicationsManager m_commsManager; protected CommunicationsManager m_commsManager;
protected GridInfoService m_gridInfoService; protected GridInfoService m_gridInfoService;
protected IHyperlink HGServices = null; protected IHyperlink HGServices = null;
protected LoadRegionsPlugin m_loadRegionsPlugin; protected LoadRegionsPlugin m_loadRegionsPlugin;
public void Initialise() public void Initialise()
{ {
m_log.Info("[LOADREGIONS]: " + Name + " cannot be default-initialized!"); m_log.Info("[LOADREGIONS]: " + Name + " cannot be default-initialized!");
throw new PluginNotInitialisedException(Name); throw new PluginNotInitialisedException(Name);
} }
public void Initialise(OpenSimBase openSim) public void Initialise(OpenSimBase openSim)
{ {
m_openSim = openSim; m_openSim = openSim;
m_httpServer = openSim.HttpServer; m_httpServer = openSim.HttpServer;
InitialiseCommsManager(openSim); InitialiseCommsManager(openSim);
if (m_commsManager != null) if (m_commsManager != null)
{ {
m_openSim.ApplicationRegistry.RegisterInterface<IUserService>(m_commsManager.UserService); m_openSim.ApplicationRegistry.RegisterInterface<IUserService>(m_commsManager.UserService);
} }
} }
public void PostInitialise() public void PostInitialise()
{ {
if (m_openSim.ApplicationRegistry.TryGet<LoadRegionsPlugin>(out m_loadRegionsPlugin)) if (m_openSim.ApplicationRegistry.TryGet<LoadRegionsPlugin>(out m_loadRegionsPlugin))
{ {
m_loadRegionsPlugin.OnNewRegionCreated += RegionCreated; m_loadRegionsPlugin.OnNewRegionCreated += RegionCreated;
} }
} }
public void Dispose() public void Dispose()
{ {
} }
#endregion #endregion
private void RegionCreated(IScene scene) private void RegionCreated(IScene scene)
{ {
if (m_commsManager != null) if (m_commsManager != null)
{ {
scene.RegisterModuleInterface<IUserService>(m_commsManager.UserService); scene.RegisterModuleInterface<IUserService>(m_commsManager.UserService);
} }
} }
private void InitialiseCommsManager(OpenSimBase openSim) private void InitialiseCommsManager(OpenSimBase openSim)
{ {
LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_openSim.ConfigurationSettings.LibrariesXMLFile); LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_openSim.ConfigurationSettings.LibrariesXMLFile);
bool hgrid = m_openSim.ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false); bool hgrid = m_openSim.ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false);
if (hgrid) if (hgrid)
{ {
HGOpenSimNode hgNode = (HGOpenSimNode)openSim; HGOpenSimNode hgNode = (HGOpenSimNode)openSim;
// Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) // Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false)
if (m_openSim.ConfigurationSettings.Standalone) if (m_openSim.ConfigurationSettings.Standalone)
{ {
InitialiseHGStandaloneServices(libraryRootFolder); InitialiseHGStandaloneServices(libraryRootFolder);
} }
else else
{ {
// We are in grid mode // We are in grid mode
InitialiseHGGridServices(libraryRootFolder); InitialiseHGGridServices(libraryRootFolder);
} }
hgNode.HGServices = HGServices; hgNode.HGServices = HGServices;
} }
else else
{ {
// Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) // Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false)
if (m_openSim.ConfigurationSettings.Standalone) if (m_openSim.ConfigurationSettings.Standalone)
{ {
InitialiseStandaloneServices(libraryRootFolder); InitialiseStandaloneServices(libraryRootFolder);
} }
else else
{ {
// We are in grid mode // We are in grid mode
InitialiseGridServices(libraryRootFolder); InitialiseGridServices(libraryRootFolder);
} }
} }
openSim.CommunicationsManager = m_commsManager; openSim.CommunicationsManager = m_commsManager;
} }
/// <summary> /// <summary>
/// Initialises the backend services for standalone mode, and registers some http handlers /// Initialises the backend services for standalone mode, and registers some http handlers
/// </summary> /// </summary>
/// <param name="libraryRootFolder"></param> /// <param name="libraryRootFolder"></param>
protected virtual void InitialiseStandaloneServices(LibraryRootFolder libraryRootFolder) protected virtual void InitialiseStandaloneServices(LibraryRootFolder libraryRootFolder)
{ {
LocalInventoryService inventoryService = new LocalInventoryService(); LocalInventoryService inventoryService = new LocalInventoryService();
inventoryService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneInventoryPlugin, m_openSim.ConfigurationSettings.StandaloneInventorySource); inventoryService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneInventoryPlugin, m_openSim.ConfigurationSettings.StandaloneInventorySource);
LocalUserServices userService = LocalUserServices userService =
new LocalUserServices( new LocalUserServices(
m_openSim.NetServersInfo.DefaultHomeLocX, m_openSim.NetServersInfo.DefaultHomeLocY, inventoryService); m_openSim.NetServersInfo.DefaultHomeLocX, m_openSim.NetServersInfo.DefaultHomeLocY, inventoryService);
userService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneUserPlugin, m_openSim.ConfigurationSettings.StandaloneUserSource); userService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneUserPlugin, m_openSim.ConfigurationSettings.StandaloneUserSource);
LocalBackEndServices backendService = new LocalBackEndServices(); LocalBackEndServices backendService = new LocalBackEndServices();
LocalLoginService loginService = LocalLoginService loginService =
new LocalLoginService( new LocalLoginService(
userService, m_openSim.ConfigurationSettings.StandaloneWelcomeMessage, inventoryService, backendService, m_openSim.NetServersInfo, userService, m_openSim.ConfigurationSettings.StandaloneWelcomeMessage, inventoryService, backendService, m_openSim.NetServersInfo,
m_openSim.ConfigurationSettings.StandaloneAuthenticate, libraryRootFolder); m_openSim.ConfigurationSettings.StandaloneAuthenticate, libraryRootFolder);
m_commsManager m_commsManager
= new CommunicationsLocal( = new CommunicationsLocal(
m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, userService, userService, m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, userService, userService,
inventoryService, backendService, userService, inventoryService, backendService, userService,
libraryRootFolder, m_openSim.ConfigurationSettings.DumpAssetsToFile); libraryRootFolder, m_openSim.ConfigurationSettings.DumpAssetsToFile);
// set up XMLRPC handler for client's initial login request message // set up XMLRPC handler for client's initial login request message
m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod); m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod);
// provides the web form login // provides the web form login
m_httpServer.AddHTTPHandler("login", loginService.ProcessHTMLLogin); m_httpServer.AddHTTPHandler("login", loginService.ProcessHTMLLogin);
// Provides the LLSD login // Provides the LLSD login
m_httpServer.SetDefaultLLSDHandler(loginService.LLSDLoginMethod); m_httpServer.SetDefaultLLSDHandler(loginService.LLSDLoginMethod);
// provide grid info // provide grid info
// m_gridInfoService = new GridInfoService(m_config.Source.Configs["Startup"].GetString("inifile", Path.Combine(Util.configDir(), "OpenSim.ini"))); // m_gridInfoService = new GridInfoService(m_config.Source.Configs["Startup"].GetString("inifile", Path.Combine(Util.configDir(), "OpenSim.ini")));
m_gridInfoService = new GridInfoService(m_openSim.ConfigSource.Source); m_gridInfoService = new GridInfoService(m_openSim.ConfigSource.Source);
m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod); m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info", m_gridInfoService.RestGetGridInfoMethod)); m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info", m_gridInfoService.RestGetGridInfoMethod));
} }
protected virtual void InitialiseGridServices(LibraryRootFolder libraryRootFolder) protected virtual void InitialiseGridServices(LibraryRootFolder libraryRootFolder)
{ {
m_commsManager m_commsManager
= new CommunicationsOGS1(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, libraryRootFolder); = new CommunicationsOGS1(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, libraryRootFolder);
m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler()); m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler());
} }
protected virtual void InitialiseHGStandaloneServices(LibraryRootFolder libraryRootFolder) protected virtual void InitialiseHGStandaloneServices(LibraryRootFolder libraryRootFolder)
{ {
// Standalone mode // Standalone mode
HGInventoryService inventoryService = new HGInventoryService(m_openSim.NetServersInfo.InventoryURL, null, false); HGInventoryService inventoryService = new HGInventoryService(m_openSim.NetServersInfo.InventoryURL, null, false);
inventoryService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneInventoryPlugin, m_openSim.ConfigurationSettings.StandaloneInventorySource); inventoryService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneInventoryPlugin, m_openSim.ConfigurationSettings.StandaloneInventorySource);
LocalUserServices userService = LocalUserServices userService =
new LocalUserServices( new LocalUserServices(
m_openSim.NetServersInfo.DefaultHomeLocX, m_openSim.NetServersInfo.DefaultHomeLocY, inventoryService); m_openSim.NetServersInfo.DefaultHomeLocX, m_openSim.NetServersInfo.DefaultHomeLocY, inventoryService);
userService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneUserPlugin, m_openSim.ConfigurationSettings.StandaloneUserSource); userService.AddPlugin(m_openSim.ConfigurationSettings.StandaloneUserPlugin, m_openSim.ConfigurationSettings.StandaloneUserSource);
//LocalBackEndServices backendService = new LocalBackEndServices(); //LocalBackEndServices backendService = new LocalBackEndServices();
HGGridServicesStandalone gridService = new HGGridServicesStandalone(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, m_openSim.SceneManager); HGGridServicesStandalone gridService = new HGGridServicesStandalone(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, m_openSim.SceneManager);
LocalLoginService loginService = LocalLoginService loginService =
new LocalLoginService( new LocalLoginService(
userService, m_openSim.ConfigurationSettings.StandaloneWelcomeMessage, inventoryService, gridService.LocalBackend, m_openSim.NetServersInfo, userService, m_openSim.ConfigurationSettings.StandaloneWelcomeMessage, inventoryService, gridService.LocalBackend, m_openSim.NetServersInfo,
m_openSim.ConfigurationSettings.StandaloneAuthenticate, libraryRootFolder); m_openSim.ConfigurationSettings.StandaloneAuthenticate, libraryRootFolder);
m_commsManager = new HGCommunicationsStandalone(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, m_commsManager = new HGCommunicationsStandalone(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache,
userService, userService, inventoryService, gridService, userService, libraryRootFolder, m_openSim.ConfigurationSettings.DumpAssetsToFile); userService, userService, inventoryService, gridService, userService, libraryRootFolder, m_openSim.ConfigurationSettings.DumpAssetsToFile);
inventoryService.UserProfileCache = m_commsManager.UserProfileCacheService; inventoryService.UserProfileCache = m_commsManager.UserProfileCacheService;
HGServices = gridService; HGServices = gridService;
// set up XMLRPC handler for client's initial login request message // set up XMLRPC handler for client's initial login request message
m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod); m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod);
// provides the web form login // provides the web form login
m_httpServer.AddHTTPHandler("login", loginService.ProcessHTMLLogin); m_httpServer.AddHTTPHandler("login", loginService.ProcessHTMLLogin);
// Provides the LLSD login // Provides the LLSD login
m_httpServer.SetDefaultLLSDHandler(loginService.LLSDLoginMethod); m_httpServer.SetDefaultLLSDHandler(loginService.LLSDLoginMethod);
// provide grid info // provide grid info
// m_gridInfoService = new GridInfoService(m_config.Source.Configs["Startup"].GetString("inifile", Path.Combine(Util.configDir(), "OpenSim.ini"))); // m_gridInfoService = new GridInfoService(m_config.Source.Configs["Startup"].GetString("inifile", Path.Combine(Util.configDir(), "OpenSim.ini")));
m_gridInfoService = new GridInfoService(m_openSim.ConfigSource.Source); m_gridInfoService = new GridInfoService(m_openSim.ConfigSource.Source);
m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod); m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info", m_gridInfoService.RestGetGridInfoMethod)); m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info", m_gridInfoService.RestGetGridInfoMethod));
} }
protected virtual void InitialiseHGGridServices(LibraryRootFolder libraryRootFolder) protected virtual void InitialiseHGGridServices(LibraryRootFolder libraryRootFolder)
{ {
m_commsManager = new HGCommunicationsGridMode(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, m_openSim.SceneManager, libraryRootFolder); m_commsManager = new HGCommunicationsGridMode(m_openSim.NetServersInfo, m_httpServer, m_openSim.AssetCache, m_openSim.SceneManager, libraryRootFolder);
HGServices = ((HGCommunicationsGridMode)m_commsManager).HGServices; HGServices = ((HGCommunicationsGridMode)m_commsManager).HGServices;
m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler()); m_httpServer.AddStreamHandler(new OpenSim.SimStatusHandler());
} }
} }
} }

View File

@ -1,11 +1,11 @@
<Addin id="OpenSim.ApplicationPlugins.CreateCommsManager" version="0.1"> <Addin id="OpenSim.ApplicationPlugins.CreateCommsManager" version="0.1">
<Runtime> <Runtime>
<Import assembly="OpenSim.ApplicationPlugins.CreateCommsManager.dll"/> <Import assembly="OpenSim.ApplicationPlugins.CreateCommsManager.dll"/>
</Runtime> </Runtime>
<Dependencies> <Dependencies>
<Addin id="OpenSim" version="0.5" /> <Addin id="OpenSim" version="0.5" />
</Dependencies> </Dependencies>
<Extension path = "/OpenSim/Startup"> <Extension path = "/OpenSim/Startup">
<Plugin id="CreateCommsManager" type="OpenSim.ApplicationPlugins.CreateCommsManager.CreateCommsManagerPlugin" /> <Plugin id="CreateCommsManager" type="OpenSim.ApplicationPlugins.CreateCommsManager.CreateCommsManagerPlugin" />
</Extension> </Extension>
</Addin> </Addin>

View File

@ -1,12 +1,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public delegate void NewRegionCreated(IScene scene); public delegate void NewRegionCreated(IScene scene);
public interface IRegionCreator public interface IRegionCreator
{ {
event NewRegionCreated OnNewRegionCreated; event NewRegionCreated OnNewRegionCreated;
} }
} }

View File

@ -1,16 +1,16 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public interface IRegistryCore public interface IRegistryCore
{ {
T Get<T>(); T Get<T>();
void RegisterInterface<T>(T iface); void RegisterInterface<T>(T iface);
bool TryGet<T>(out T iface); bool TryGet<T>(out T iface);
void StackModuleInterface<M>(M mod); void StackModuleInterface<M>(M mod);
T[] RequestModuleInterfaces<T>(); T[] RequestModuleInterfaces<T>();
} }
} }

View File

@ -1,54 +1,54 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
public class RegistryCore : IRegistryCore public class RegistryCore : IRegistryCore
{ {
protected Dictionary<Type, object> m_moduleInterfaces = new Dictionary<Type, object>(); protected Dictionary<Type, object> m_moduleInterfaces = new Dictionary<Type, object>();
/// <summary> /// <summary>
/// Register an Module interface. /// Register an Module interface.
/// </summary> /// </summary>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="iface"></param> /// <param name="iface"></param>
public void RegisterInterface<T>(T iface) public void RegisterInterface<T>(T iface)
{ {
lock (m_moduleInterfaces) lock (m_moduleInterfaces)
{ {
if (!m_moduleInterfaces.ContainsKey(typeof(T))) if (!m_moduleInterfaces.ContainsKey(typeof(T)))
{ {
m_moduleInterfaces.Add(typeof(T), iface); m_moduleInterfaces.Add(typeof(T), iface);
} }
} }
} }
public bool TryGet<T>(out T iface) public bool TryGet<T>(out T iface)
{ {
if (m_moduleInterfaces.ContainsKey(typeof(T))) if (m_moduleInterfaces.ContainsKey(typeof(T)))
{ {
iface = (T)m_moduleInterfaces[typeof(T)]; iface = (T)m_moduleInterfaces[typeof(T)];
return true; return true;
} }
iface = default(T); iface = default(T);
return false; return false;
} }
public T Get<T>() public T Get<T>()
{ {
return (T)m_moduleInterfaces[typeof(T)]; return (T)m_moduleInterfaces[typeof(T)];
} }
public void StackModuleInterface<M>(M mod) public void StackModuleInterface<M>(M mod)
{ {
} }
public T[] RequestModuleInterfaces<T>() public T[] RequestModuleInterfaces<T>()
{ {
return new T[] { default(T) }; return new T[] { default(T) };
} }
} }
} }

View File

@ -1,40 +1,40 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the * * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
namespace OpenSim.Grid.Framework namespace OpenSim.Grid.Framework
{ {
public interface IGridServiceCore public interface IGridServiceCore
{ {
T Get<T>(); T Get<T>();
void RegisterInterface<T>(T iface); void RegisterInterface<T>(T iface);
bool TryGet<T>(out T iface); bool TryGet<T>(out T iface);
BaseHttpServer GetHttpServer(); BaseHttpServer GetHttpServer();
} }
} }

View File

@ -1,13 +1,13 @@
using System; using System;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
namespace OpenSim.Grid.Framework namespace OpenSim.Grid.Framework
{ {
public interface IGridServiceModule public interface IGridServiceModule
{ {
void Close(); void Close();
void Initialise(IGridServiceCore core); void Initialise(IGridServiceCore core);
void PostInitialise(); void PostInitialise();
void RegisterHandlers(BaseHttpServer httpServer); void RegisterHandlers(BaseHttpServer httpServer);
} }
} }

View File

@ -1,35 +1,35 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the * * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
namespace OpenSim.Grid.Framework namespace OpenSim.Grid.Framework
{ {
public interface IInterServiceUserService public interface IInterServiceUserService
{ {
bool SendToUserServer(System.Collections.Hashtable request, string method); bool SendToUserServer(System.Collections.Hashtable request, string method);
} }
} }

View File

@ -1,38 +1,38 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the * * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using OpenSim.Data; using OpenSim.Data;
namespace OpenSim.Grid.Framework namespace OpenSim.Grid.Framework
{ {
public interface IMessageRegionLookup public interface IMessageRegionLookup
{ {
int ClearRegionCache(); int ClearRegionCache();
RegionProfileData GetRegionInfo(ulong regionhandle); RegionProfileData GetRegionInfo(ulong regionhandle);
} }
} }

View File

@ -1,40 +1,40 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the * * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
namespace OpenSim.Grid.Framework namespace OpenSim.Grid.Framework
{ {
public interface IMessagingServerDiscovery public interface IMessagingServerDiscovery
{ {
List<MessageServerInfo> GetMessageServersList(); List<MessageServerInfo> GetMessageServersList();
void RegisterMessageServer(MessageServerInfo m); void RegisterMessageServer(MessageServerInfo m);
void DeRegisterMessageServer(MessageServerInfo m); void DeRegisterMessageServer(MessageServerInfo m);
} }
} }

View File

@ -1,186 +1,186 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the * * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using System.Threading; using System.Threading;
using System.Timers; using System.Timers;
using log4net; using log4net;
using Nwc.XmlRpc; using Nwc.XmlRpc;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Data; using OpenSim.Data;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Grid.Framework; using OpenSim.Grid.Framework;
using Timer = System.Timers.Timer; using Timer = System.Timers.Timer;
namespace OpenSim.Grid.MessagingServer.Modules namespace OpenSim.Grid.MessagingServer.Modules
{ {
public class InterMessageUserServerModule : IInterServiceUserService public class InterMessageUserServerModule : IInterServiceUserService
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MessageServerConfig m_cfg; private MessageServerConfig m_cfg;
private IGridServiceCore m_messageCore; private IGridServiceCore m_messageCore;
private Timer reconnectTimer = new Timer(300000); // 5 mins private Timer reconnectTimer = new Timer(300000); // 5 mins
public InterMessageUserServerModule(MessageServerConfig config, IGridServiceCore messageCore) public InterMessageUserServerModule(MessageServerConfig config, IGridServiceCore messageCore)
{ {
m_cfg = config; m_cfg = config;
m_messageCore = messageCore; m_messageCore = messageCore;
reconnectTimer.Elapsed += registerWithUserServer; reconnectTimer.Elapsed += registerWithUserServer;
reconnectTimer.Start(); reconnectTimer.Start();
} }
public void Initialise() public void Initialise()
{ {
m_messageCore.RegisterInterface<IInterServiceUserService>(this); m_messageCore.RegisterInterface<IInterServiceUserService>(this);
} }
public void PostInitialise() public void PostInitialise()
{ {
} }
public void RegisterHandlers() public void RegisterHandlers()
{ {
//have these in separate method as some servers restart the http server and reregister all the handlers. //have these in separate method as some servers restart the http server and reregister all the handlers.
} }
public void registerWithUserServer(object sender, ElapsedEventArgs e) public void registerWithUserServer(object sender, ElapsedEventArgs e)
{ {
registerWithUserServer(); registerWithUserServer();
} }
public bool registerWithUserServer() public bool registerWithUserServer()
{ {
Hashtable UserParams = new Hashtable(); Hashtable UserParams = new Hashtable();
// Login / Authentication // Login / Authentication
if (m_cfg.HttpSSL) if (m_cfg.HttpSSL)
{ {
UserParams["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort; UserParams["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
} }
else else
{ {
UserParams["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort; UserParams["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
} }
UserParams["recvkey"] = m_cfg.UserRecvKey; UserParams["recvkey"] = m_cfg.UserRecvKey;
UserParams["sendkey"] = m_cfg.UserRecvKey; UserParams["sendkey"] = m_cfg.UserRecvKey;
// Package into an XMLRPC Request // Package into an XMLRPC Request
ArrayList SendParams = new ArrayList(); ArrayList SendParams = new ArrayList();
SendParams.Add(UserParams); SendParams.Add(UserParams);
bool success = true; bool success = true;
string[] servers = m_cfg.UserServerURL.Split(' '); string[] servers = m_cfg.UserServerURL.Split(' ');
foreach (string srv in servers) foreach (string srv in servers)
{ {
// Send Request // Send Request
try try
{ {
XmlRpcRequest UserReq = new XmlRpcRequest("register_messageserver", SendParams); XmlRpcRequest UserReq = new XmlRpcRequest("register_messageserver", SendParams);
XmlRpcResponse UserResp = UserReq.Send(srv, 16000); XmlRpcResponse UserResp = UserReq.Send(srv, 16000);
// Process Response // Process Response
Hashtable GridRespData = (Hashtable)UserResp.Value; Hashtable GridRespData = (Hashtable)UserResp.Value;
// if we got a response, we were successful // if we got a response, we were successful
if (!GridRespData.ContainsKey("responsestring")) if (!GridRespData.ContainsKey("responsestring"))
success = false; success = false;
else else
m_log.InfoFormat("[SERVER] Registered with {0}", srv); m_log.InfoFormat("[SERVER] Registered with {0}", srv);
} }
catch catch
{ {
m_log.ErrorFormat("Unable to connect to server {0}. Server not running?", srv); m_log.ErrorFormat("Unable to connect to server {0}. Server not running?", srv);
success = false; success = false;
} }
} }
return success; return success;
} }
public bool deregisterWithUserServer() public bool deregisterWithUserServer()
{ {
Hashtable request = new Hashtable(); Hashtable request = new Hashtable();
return SendToUserServer(request, "deregister_messageserver"); return SendToUserServer(request, "deregister_messageserver");
} }
public bool SendToUserServer(Hashtable request, string method) public bool SendToUserServer(Hashtable request, string method)
{ {
// Login / Authentication // Login / Authentication
if (m_cfg.HttpSSL) if (m_cfg.HttpSSL)
{ {
request["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort; request["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
} }
else else
{ {
request["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort; request["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
} }
request["recvkey"] = m_cfg.UserRecvKey; request["recvkey"] = m_cfg.UserRecvKey;
request["sendkey"] = m_cfg.UserRecvKey; request["sendkey"] = m_cfg.UserRecvKey;
// Package into an XMLRPC Request // Package into an XMLRPC Request
ArrayList SendParams = new ArrayList(); ArrayList SendParams = new ArrayList();
SendParams.Add(request); SendParams.Add(request);
bool success = true; bool success = true;
string[] servers = m_cfg.UserServerURL.Split(' '); string[] servers = m_cfg.UserServerURL.Split(' ');
// Send Request // Send Request
foreach (string srv in servers) foreach (string srv in servers)
{ {
try try
{ {
XmlRpcRequest UserReq = new XmlRpcRequest(method, SendParams); XmlRpcRequest UserReq = new XmlRpcRequest(method, SendParams);
XmlRpcResponse UserResp = UserReq.Send(m_cfg.UserServerURL, 16000); XmlRpcResponse UserResp = UserReq.Send(m_cfg.UserServerURL, 16000);
// Process Response // Process Response
Hashtable UserRespData = (Hashtable)UserResp.Value; Hashtable UserRespData = (Hashtable)UserResp.Value;
// if we got a response, we were successful // if we got a response, we were successful
if (!UserRespData.ContainsKey("responsestring")) if (!UserRespData.ContainsKey("responsestring"))
success = false; success = false;
} }
catch catch
{ {
m_log.ErrorFormat("Unable to connect to server {0}. Server not running?", srv); m_log.ErrorFormat("Unable to connect to server {0}. Server not running?", srv);
success = false; success = false;
} }
} }
return success; return success;
} }
} }
} }

View File

@ -1,77 +1,77 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the * * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using log4net.Config; using log4net.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.Grid.Communications.OGS1; using OpenSim.Grid.Communications.OGS1;
using OpenSim.Grid.Framework; using OpenSim.Grid.Framework;
namespace OpenSim.Grid.UserServer.Modules namespace OpenSim.Grid.UserServer.Modules
{ {
public class GridInfoServiceModule public class GridInfoServiceModule
{ {
protected IGridServiceCore m_core; protected IGridServiceCore m_core;
protected GridInfoService m_gridInfoService; protected GridInfoService m_gridInfoService;
protected BaseHttpServer m_httpServer; protected BaseHttpServer m_httpServer;
public GridInfoServiceModule() public GridInfoServiceModule()
{ {
} }
public void Initialise(IGridServiceCore core) public void Initialise(IGridServiceCore core)
{ {
m_core = core; m_core = core;
m_gridInfoService = new GridInfoService(); m_gridInfoService = new GridInfoService();
} }
public void PostInitialise() public void PostInitialise()
{ {
} }
public void RegisterHandlers(BaseHttpServer httpServer) public void RegisterHandlers(BaseHttpServer httpServer)
{ {
m_httpServer = httpServer; m_httpServer = httpServer;
m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info", m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info",
m_gridInfoService.RestGetGridInfoMethod)); m_gridInfoService.RestGetGridInfoMethod));
m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod); m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
} }
public void Close() public void Close()
{ {
} }
} }
} }

View File

@ -1,141 +1,141 @@
/* /*
* Copyright (c) Contributors, http://opensimulator.org/ * Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders. * See CONTRIBUTORS.TXT for a full list of copyright holders.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the * * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products * names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using log4net.Config; using log4net.Config;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Data; using OpenSim.Data;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.Framework.Statistics; using OpenSim.Framework.Statistics;
using OpenSim.Grid.Communications.OGS1; using OpenSim.Grid.Communications.OGS1;
using OpenSim.Grid.Framework; using OpenSim.Grid.Framework;
using OpenSim.Grid.UserServer.Modules; using OpenSim.Grid.UserServer.Modules;
namespace OpenSim.Grid.UserServer namespace OpenSim.Grid.UserServer
{ {
//Do we actually need these event dispatchers? //Do we actually need these event dispatchers?
//shouldn't the other modules just directly register event handlers to each other? //shouldn't the other modules just directly register event handlers to each other?
public class UserServerEventDispatchModule public class UserServerEventDispatchModule
{ {
protected UserManager m_userManager; protected UserManager m_userManager;
protected MessageServersConnector m_messagesService; protected MessageServersConnector m_messagesService;
protected UserLoginService m_loginService; protected UserLoginService m_loginService;
public UserServerEventDispatchModule(UserManager userManager, MessageServersConnector messagesService, UserLoginService loginService) public UserServerEventDispatchModule(UserManager userManager, MessageServersConnector messagesService, UserLoginService loginService)
{ {
m_userManager = userManager; m_userManager = userManager;
m_messagesService = messagesService; m_messagesService = messagesService;
m_loginService = loginService; m_loginService = loginService;
} }
public void Initialise(IGridServiceCore core) public void Initialise(IGridServiceCore core)
{ {
} }
public void PostInitialise() public void PostInitialise()
{ {
m_loginService.OnUserLoggedInAtLocation += NotifyMessageServersUserLoggedInToLocation; m_loginService.OnUserLoggedInAtLocation += NotifyMessageServersUserLoggedInToLocation;
m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff; m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
m_messagesService.OnAgentLocation += HandleAgentLocation; m_messagesService.OnAgentLocation += HandleAgentLocation;
m_messagesService.OnAgentLeaving += HandleAgentLeaving; m_messagesService.OnAgentLeaving += HandleAgentLeaving;
m_messagesService.OnRegionStartup += HandleRegionStartup; m_messagesService.OnRegionStartup += HandleRegionStartup;
m_messagesService.OnRegionShutdown += HandleRegionShutdown; m_messagesService.OnRegionShutdown += HandleRegionShutdown;
} }
public void RegisterHandlers(BaseHttpServer httpServer) public void RegisterHandlers(BaseHttpServer httpServer)
{ {
} }
public void Close() public void Close()
{ {
m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation; m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
} }
#region Event Handlers #region Event Handlers
public void NotifyMessageServersUserLoggOff(UUID agentID) public void NotifyMessageServersUserLoggOff(UUID agentID)
{ {
m_messagesService.TellMessageServersAboutUserLogoff(agentID); m_messagesService.TellMessageServersAboutUserLogoff(agentID);
} }
public void NotifyMessageServersUserLoggedInToLocation(UUID agentID, UUID sessionID, UUID RegionID, public void NotifyMessageServersUserLoggedInToLocation(UUID agentID, UUID sessionID, UUID RegionID,
ulong regionhandle, float positionX, float positionY, ulong regionhandle, float positionX, float positionY,
float positionZ, string firstname, string lastname) float positionZ, string firstname, string lastname)
{ {
m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX, m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX,
positionY, positionZ, firstname, lastname); positionY, positionZ, firstname, lastname);
} }
public void HandleAgentLocation(UUID agentID, UUID regionID, ulong regionHandle) public void HandleAgentLocation(UUID agentID, UUID regionID, ulong regionHandle)
{ {
m_userManager.HandleAgentLocation(agentID, regionID, regionHandle); m_userManager.HandleAgentLocation(agentID, regionID, regionHandle);
} }
public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle) public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle)
{ {
m_userManager.HandleAgentLeaving(agentID, regionID, regionHandle); m_userManager.HandleAgentLeaving(agentID, regionID, regionHandle);
} }
public void HandleRegionStartup(UUID regionID) public void HandleRegionStartup(UUID regionID)
{ {
// This might seem strange, that we send this back to the // This might seem strange, that we send this back to the
// server it came from. But there is method to the madness. // server it came from. But there is method to the madness.
// There can be multiple user servers on the same database, // There can be multiple user servers on the same database,
// and each can have multiple messaging servers. So, we send // and each can have multiple messaging servers. So, we send
// it to all known user servers, who send it to all known // it to all known user servers, who send it to all known
// message servers. That way, we should be able to finally // message servers. That way, we should be able to finally
// update presence to all regions and thereby all friends // update presence to all regions and thereby all friends
// //
m_userManager.HandleRegionStartup(regionID); m_userManager.HandleRegionStartup(regionID);
m_messagesService.TellMessageServersAboutRegionShutdown(regionID); m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
} }
public void HandleRegionShutdown(UUID regionID) public void HandleRegionShutdown(UUID regionID)
{ {
// This might seem strange, that we send this back to the // This might seem strange, that we send this back to the
// server it came from. But there is method to the madness. // server it came from. But there is method to the madness.
// There can be multiple user servers on the same database, // There can be multiple user servers on the same database,
// and each can have multiple messaging servers. So, we send // and each can have multiple messaging servers. So, we send
// it to all known user servers, who send it to all known // it to all known user servers, who send it to all known
// message servers. That way, we should be able to finally // message servers. That way, we should be able to finally
// update presence to all regions and thereby all friends // update presence to all regions and thereby all friends
// //
m_userManager.HandleRegionShutdown(regionID); m_userManager.HandleRegionShutdown(regionID);
m_messagesService.TellMessageServersAboutRegionShutdown(regionID); m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
} }
#endregion #endregion
} }
} }