More refactoring of the Grid, User and Messaging servers.
parent
50dcd66896
commit
4db232763f
|
@ -114,17 +114,5 @@ namespace OpenSim.Framework.Communications
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param>
|
/// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param>
|
||||||
List<FriendListItem> GetUserFriendList(UUID friendlistowner);
|
List<FriendListItem> GetUserFriendList(UUID friendlistowner);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get's the User Appearance
|
|
||||||
// AvatarAppearance GetUserAppearance(UUID user);
|
|
||||||
|
|
||||||
// void UpdateUserAppearance(UUID user, AvatarAppearance appearance);
|
|
||||||
|
|
||||||
// void AddAttachment(UUID user, UUID attach);
|
|
||||||
|
|
||||||
// void RemoveAttachment(UUID user, UUID attach);
|
|
||||||
|
|
||||||
// List<UUID> GetAttachments(UUID user);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ using OpenSim.Data;
|
||||||
|
|
||||||
namespace OpenSim.Grid.Framework
|
namespace OpenSim.Grid.Framework
|
||||||
{
|
{
|
||||||
public interface IMessageRegionService
|
public interface IMessageRegionLookup
|
||||||
{
|
{
|
||||||
int ClearRegionCache();
|
int ClearRegionCache();
|
||||||
RegionProfileData GetRegionInfo(ulong regionhandle);
|
RegionProfileData GetRegionInfo(ulong regionhandle);
|
|
@ -31,7 +31,7 @@ using OpenSim.Framework.Servers;
|
||||||
|
|
||||||
namespace OpenSim.Grid.Framework
|
namespace OpenSim.Grid.Framework
|
||||||
{
|
{
|
||||||
public interface IGridMessagingMapper
|
public interface IMessagingServerDiscovery
|
||||||
{
|
{
|
||||||
List<MessageServerInfo> GetMessageServersList();
|
List<MessageServerInfo> GetMessageServersList();
|
||||||
void RegisterMessageServer(MessageServerInfo m);
|
void RegisterMessageServer(MessageServerInfo m);
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -38,7 +38,7 @@ using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.GridServer.Modules
|
namespace OpenSim.Grid.GridServer.Modules
|
||||||
{
|
{
|
||||||
public class GridMessagingModule : IGridMessagingMapper
|
public class GridMessagingModule : IMessagingServerDiscovery
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ namespace OpenSim.Grid.GridServer.Modules
|
||||||
m_gridCore = gridCore;
|
m_gridCore = gridCore;
|
||||||
m_config = config;
|
m_config = config;
|
||||||
|
|
||||||
m_gridCore.RegisterInterface<IGridMessagingMapper>(this);
|
m_gridCore.RegisterInterface<IMessagingServerDiscovery>(this);
|
||||||
|
|
||||||
RegisterHandlers();
|
RegisterHandlers();
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace OpenSim.Grid.GridServer.Modules
|
||||||
|
|
||||||
protected GridConfig m_config;
|
protected GridConfig m_config;
|
||||||
|
|
||||||
protected IGridMessagingMapper m_messagingServerMapper;
|
protected IMessagingServerDiscovery m_messagingServerMapper;
|
||||||
/// <value>
|
/// <value>
|
||||||
/// Used to notify old regions as to which OpenSim version to upgrade to
|
/// Used to notify old regions as to which OpenSim version to upgrade to
|
||||||
/// </value>
|
/// </value>
|
||||||
|
@ -80,8 +80,8 @@ namespace OpenSim.Grid.GridServer.Modules
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
IGridMessagingMapper messagingModule;
|
IMessagingServerDiscovery messagingModule;
|
||||||
if (m_gridCore.TryGet<IGridMessagingMapper>(out messagingModule))
|
if (m_gridCore.TryGet<IMessagingServerDiscovery>(out messagingModule))
|
||||||
{
|
{
|
||||||
m_messagingServerMapper = messagingModule;
|
m_messagingServerMapper = messagingModule;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -42,7 +42,7 @@ using Timer = System.Timers.Timer;
|
||||||
|
|
||||||
namespace OpenSim.Grid.MessagingServer.Modules
|
namespace OpenSim.Grid.MessagingServer.Modules
|
||||||
{
|
{
|
||||||
public class MessageRegionModule : IMessageRegionService
|
public class MessageRegionModule : IMessageRegionLookup
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ namespace OpenSim.Grid.MessagingServer.Modules
|
||||||
|
|
||||||
public void Initialise()
|
public void Initialise()
|
||||||
{
|
{
|
||||||
m_messageCore.RegisterInterface<IMessageRegionService>(this);
|
m_messageCore.RegisterInterface<IMessageRegionLookup>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace OpenSim.Grid.MessagingServer.Modules
|
||||||
private IUGAIMCore m_messageCore;
|
private IUGAIMCore m_messageCore;
|
||||||
|
|
||||||
private IMessageUserServerService m_userServerModule;
|
private IMessageUserServerService m_userServerModule;
|
||||||
private IMessageRegionService m_regionModule;
|
private IMessageRegionLookup m_regionModule;
|
||||||
|
|
||||||
// a dictionary of all current presences this server knows about
|
// a dictionary of all current presences this server knows about
|
||||||
private Dictionary<UUID, UserPresenceData> m_presences = new Dictionary<UUID,UserPresenceData>();
|
private Dictionary<UUID, UserPresenceData> m_presences = new Dictionary<UUID,UserPresenceData>();
|
||||||
|
@ -82,8 +82,8 @@ namespace OpenSim.Grid.MessagingServer.Modules
|
||||||
m_userServerModule = messageUserServer;
|
m_userServerModule = messageUserServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMessageRegionService messageRegion;
|
IMessageRegionLookup messageRegion;
|
||||||
if (m_messageCore.TryGet<IMessageRegionService>(out messageRegion))
|
if (m_messageCore.TryGet<IMessageRegionLookup>(out messageRegion))
|
||||||
{
|
{
|
||||||
m_regionModule = messageRegion;
|
m_regionModule = messageRegion;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSim Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* 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
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
using log4net.Config;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Communications;
|
||||||
|
using OpenSim.Framework.Communications.Cache;
|
||||||
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Grid.Communications.OGS1;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
|
{
|
||||||
|
public class GridInfoServiceModule
|
||||||
|
{
|
||||||
|
protected IUGAIMCore m_core;
|
||||||
|
protected GridInfoService m_gridInfoService;
|
||||||
|
protected BaseHttpServer m_httpServer;
|
||||||
|
|
||||||
|
public GridInfoServiceModule()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise(IUGAIMCore core)
|
||||||
|
{
|
||||||
|
m_core = core;
|
||||||
|
m_gridInfoService = new GridInfoService();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PostInitialise()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegisterHandlers(BaseHttpServer httpServer)
|
||||||
|
{
|
||||||
|
m_httpServer = httpServer;
|
||||||
|
m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info",
|
||||||
|
m_gridInfoService.RestGetGridInfoMethod));
|
||||||
|
m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,6 +35,7 @@ using Nwc.XmlRpc;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.UserServer.Modules
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
{
|
{
|
||||||
|
@ -78,6 +79,8 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
|
|
||||||
Thread m_NotifyThread;
|
Thread m_NotifyThread;
|
||||||
|
|
||||||
|
private IUGAIMCore m_core;
|
||||||
|
|
||||||
public event AgentLocationDelegate OnAgentLocation;
|
public event AgentLocationDelegate OnAgentLocation;
|
||||||
public event AgentLeavingDelegate OnAgentLeaving;
|
public event AgentLeavingDelegate OnAgentLeaving;
|
||||||
public event RegionStartupDelegate OnRegionStartup;
|
public event RegionStartupDelegate OnRegionStartup;
|
||||||
|
@ -86,18 +89,18 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
public MessageServersConnector()
|
public MessageServersConnector()
|
||||||
{
|
{
|
||||||
MessageServers = new Dictionary<string, MessageServerInfo>();
|
MessageServers = new Dictionary<string, MessageServerInfo>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise(IUGAIMCore core)
|
||||||
|
{
|
||||||
|
m_core = core;
|
||||||
|
m_core.RegisterInterface<MessageServersConnector>(this);
|
||||||
m_NotifyThread = new Thread(new ThreadStart(NotifyQueueRunner));
|
m_NotifyThread = new Thread(new ThreadStart(NotifyQueueRunner));
|
||||||
m_NotifyThread.Start();
|
m_NotifyThread.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegisterHandlers(BaseHttpServer httpServer)
|
public void RegisterHandlers(BaseHttpServer httpServer)
|
||||||
|
|
|
@ -35,6 +35,7 @@ using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.UserServer.Modules
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
{
|
{
|
||||||
|
@ -59,7 +60,7 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
m_userDataBaseService = userDataBaseService;
|
m_userDataBaseService = userDataBaseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise()
|
public void Initialise(IUGAIMCore core)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -35,6 +35,7 @@ using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.UserServer.Modules
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
{
|
{
|
||||||
|
@ -50,7 +51,7 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
m_userDataBaseService = userDataBaseService;
|
m_userDataBaseService = userDataBaseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise()
|
public void Initialise(IUGAIMCore core)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -35,6 +35,7 @@ using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.UserServer.Modules
|
namespace OpenSim.Grid.UserServer.Modules
|
||||||
{
|
{
|
||||||
|
@ -51,7 +52,7 @@ namespace OpenSim.Grid.UserServer.Modules
|
||||||
m_userDataBaseService = userDataBaseService;
|
m_userDataBaseService = userDataBaseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise()
|
public void Initialise(IUGAIMCore core)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,10 +62,12 @@ namespace OpenSim.Grid.UserServer
|
||||||
protected UserServerFriendsModule m_friendsModule;
|
protected UserServerFriendsModule m_friendsModule;
|
||||||
|
|
||||||
public UserLoginService m_loginService;
|
public UserLoginService m_loginService;
|
||||||
public GridInfoService m_gridInfoService;
|
|
||||||
public MessageServersConnector m_messagesService;
|
public MessageServersConnector m_messagesService;
|
||||||
|
|
||||||
|
protected GridInfoServiceModule m_gridInfoService;
|
||||||
|
|
||||||
protected UserServerCommandModule m_consoleCommandModule;
|
protected UserServerCommandModule m_consoleCommandModule;
|
||||||
|
protected UserServerEventDispatchModule m_eventDispatcher;
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
@ -97,29 +99,17 @@ namespace OpenSim.Grid.UserServer
|
||||||
|
|
||||||
protected override void StartupSpecific()
|
protected override void StartupSpecific()
|
||||||
{
|
{
|
||||||
IInterServiceInventoryServices inventoryService = SetupRegisterCoreComponents();
|
IInterServiceInventoryServices inventoryService = StartupCoreComponents();
|
||||||
|
|
||||||
m_stats = StatsManager.StartCollectingUserStats();
|
m_stats = StatsManager.StartCollectingUserStats();
|
||||||
|
|
||||||
m_log.Info("[STARTUP]: Establishing data connection");
|
|
||||||
//setup database access service
|
|
||||||
m_userDataBaseService = new UserDataBaseService();
|
|
||||||
m_userDataBaseService.Initialise(this);
|
|
||||||
|
|
||||||
//setup services/modules
|
//setup services/modules
|
||||||
StartupUserServerModules();
|
StartupUserServerModules();
|
||||||
|
|
||||||
StartOtherComponents(inventoryService);
|
StartOtherComponents(inventoryService);
|
||||||
|
|
||||||
m_consoleCommandModule = new UserServerCommandModule(m_loginService);
|
|
||||||
m_consoleCommandModule.Initialise(this);
|
|
||||||
|
|
||||||
//register event handlers
|
|
||||||
RegisterEventHandlers();
|
|
||||||
|
|
||||||
//PostInitialise the modules
|
//PostInitialise the modules
|
||||||
m_consoleCommandModule.PostInitialise(); //it will register its Console command handlers in here
|
PostInitialiseModules();
|
||||||
m_userDataBaseService.PostInitialise();
|
|
||||||
|
|
||||||
//register http handlers and start http server
|
//register http handlers and start http server
|
||||||
m_log.Info("[STARTUP]: Starting HTTP process");
|
m_log.Info("[STARTUP]: Starting HTTP process");
|
||||||
|
@ -129,30 +119,20 @@ namespace OpenSim.Grid.UserServer
|
||||||
base.StartupSpecific();
|
base.StartupSpecific();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StartOtherComponents(IInterServiceInventoryServices inventoryService)
|
protected virtual IInterServiceInventoryServices StartupCoreComponents()
|
||||||
{
|
|
||||||
m_gridInfoService = new GridInfoService();
|
|
||||||
|
|
||||||
StartupLoginService(inventoryService);
|
|
||||||
//
|
|
||||||
// Get the minimum defaultLevel to access to the grid
|
|
||||||
//
|
|
||||||
m_loginService.setloginlevel((int)Cfg.DefaultUserLevel);
|
|
||||||
|
|
||||||
m_messagesService = new MessageServersConnector();
|
|
||||||
}
|
|
||||||
|
|
||||||
private IInterServiceInventoryServices SetupRegisterCoreComponents()
|
|
||||||
{
|
{
|
||||||
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
|
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
|
||||||
|
|
||||||
IInterServiceInventoryServices inventoryService = new OGS1InterServiceInventoryService(Cfg.InventoryUrl);
|
|
||||||
|
|
||||||
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
|
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
|
||||||
|
|
||||||
RegisterInterface<ConsoleBase>(m_console);
|
RegisterInterface<ConsoleBase>(m_console);
|
||||||
RegisterInterface<UserConfig>(Cfg);
|
RegisterInterface<UserConfig>(Cfg);
|
||||||
|
|
||||||
|
IInterServiceInventoryServices inventoryService = new OGS1InterServiceInventoryService(Cfg.InventoryUrl);
|
||||||
|
// IRegionProfileService regionProfileService = new RegionProfileServiceProxy();
|
||||||
|
|
||||||
RegisterInterface<IInterServiceInventoryServices>(inventoryService);
|
RegisterInterface<IInterServiceInventoryServices>(inventoryService);
|
||||||
|
// RegisterInterface<IRegionProfileService>(regionProfileService);
|
||||||
|
|
||||||
return inventoryService;
|
return inventoryService;
|
||||||
}
|
}
|
||||||
|
@ -163,9 +143,43 @@ namespace OpenSim.Grid.UserServer
|
||||||
/// <param name="inventoryService"></param>
|
/// <param name="inventoryService"></param>
|
||||||
protected virtual void StartupUserServerModules()
|
protected virtual void StartupUserServerModules()
|
||||||
{
|
{
|
||||||
|
m_log.Info("[STARTUP]: Establishing data connection");
|
||||||
|
//setup database access service, for now this has to be created before the other modules.
|
||||||
|
m_userDataBaseService = new UserDataBaseService();
|
||||||
|
m_userDataBaseService.Initialise(this);
|
||||||
|
|
||||||
|
//TODO: change these modules so they fetch the databaseService class in the PostInitialise method
|
||||||
m_userManager = new UserManager(m_userDataBaseService);
|
m_userManager = new UserManager(m_userDataBaseService);
|
||||||
|
m_userManager.Initialise(this);
|
||||||
|
|
||||||
m_avatarAppearanceModule = new UserServerAvatarAppearanceModule(m_userDataBaseService);
|
m_avatarAppearanceModule = new UserServerAvatarAppearanceModule(m_userDataBaseService);
|
||||||
|
m_avatarAppearanceModule.Initialise(this);
|
||||||
|
|
||||||
m_friendsModule = new UserServerFriendsModule(m_userDataBaseService);
|
m_friendsModule = new UserServerFriendsModule(m_userDataBaseService);
|
||||||
|
m_friendsModule.Initialise(this);
|
||||||
|
|
||||||
|
m_consoleCommandModule = new UserServerCommandModule();
|
||||||
|
m_consoleCommandModule.Initialise(this);
|
||||||
|
|
||||||
|
m_messagesService = new MessageServersConnector();
|
||||||
|
m_messagesService.Initialise(this);
|
||||||
|
|
||||||
|
m_gridInfoService = new GridInfoServiceModule();
|
||||||
|
m_gridInfoService.Initialise(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void StartOtherComponents(IInterServiceInventoryServices inventoryService)
|
||||||
|
{
|
||||||
|
StartupLoginService(inventoryService);
|
||||||
|
//
|
||||||
|
// Get the minimum defaultLevel to access to the grid
|
||||||
|
//
|
||||||
|
m_loginService.setloginlevel((int)Cfg.DefaultUserLevel);
|
||||||
|
|
||||||
|
RegisterInterface<UserLoginService>(m_loginService); //TODO: should be done in the login service
|
||||||
|
|
||||||
|
m_eventDispatcher = new UserServerEventDispatchModule(m_userManager, m_messagesService, m_loginService);
|
||||||
|
m_eventDispatcher.Initialise(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -178,15 +192,16 @@ namespace OpenSim.Grid.UserServer
|
||||||
m_userDataBaseService, inventoryService, new LibraryRootFolder(Cfg.LibraryXmlfile), Cfg, Cfg.DefaultStartupMsg, new RegionProfileServiceProxy());
|
m_userDataBaseService, inventoryService, new LibraryRootFolder(Cfg.LibraryXmlfile), Cfg, Cfg.DefaultStartupMsg, new RegionProfileServiceProxy());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void RegisterEventHandlers()
|
protected virtual void PostInitialiseModules()
|
||||||
{
|
{
|
||||||
m_loginService.OnUserLoggedInAtLocation += NotifyMessageServersUserLoggedInToLocation;
|
m_consoleCommandModule.PostInitialise(); //it will register its Console command handlers in here
|
||||||
m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
|
m_userDataBaseService.PostInitialise();
|
||||||
|
m_messagesService.PostInitialise();
|
||||||
m_messagesService.OnAgentLocation += HandleAgentLocation;
|
m_eventDispatcher.PostInitialise(); //it will register event handlers in here
|
||||||
m_messagesService.OnAgentLeaving += HandleAgentLeaving;
|
m_gridInfoService.PostInitialise();
|
||||||
m_messagesService.OnRegionStartup += HandleRegionStartup;
|
m_userManager.PostInitialise();
|
||||||
m_messagesService.OnRegionShutdown += HandleRegionShutdown;
|
m_avatarAppearanceModule.PostInitialise();
|
||||||
|
m_friendsModule.PostInitialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void RegisterHttpHandlers()
|
protected virtual void RegisterHttpHandlers()
|
||||||
|
@ -197,15 +212,12 @@ namespace OpenSim.Grid.UserServer
|
||||||
m_friendsModule.RegisterHandlers(m_httpServer);
|
m_friendsModule.RegisterHandlers(m_httpServer);
|
||||||
m_avatarAppearanceModule.RegisterHandlers(m_httpServer);
|
m_avatarAppearanceModule.RegisterHandlers(m_httpServer);
|
||||||
m_messagesService.RegisterHandlers(m_httpServer);
|
m_messagesService.RegisterHandlers(m_httpServer);
|
||||||
|
m_gridInfoService.RegisterHandlers(m_httpServer);
|
||||||
m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info",
|
|
||||||
m_gridInfoService.RestGetGridInfoMethod));
|
|
||||||
m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ShutdownSpecific()
|
public override void ShutdownSpecific()
|
||||||
{
|
{
|
||||||
m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
|
m_eventDispatcher.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IUGAIMCore
|
#region IUGAIMCore
|
||||||
|
@ -247,74 +259,11 @@ namespace OpenSim.Grid.UserServer
|
||||||
{
|
{
|
||||||
return m_httpServer;
|
return m_httpServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Console Command Handlers
|
|
||||||
|
|
||||||
protected override void ShowHelp(string[] helpArgs)
|
|
||||||
{
|
|
||||||
base.ShowHelp(helpArgs);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public void TestResponse(List<InventoryFolderBase> resp)
|
public void TestResponse(List<InventoryFolderBase> resp)
|
||||||
{
|
{
|
||||||
m_console.Notice("response got");
|
m_console.Notice("response got");
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Event Handlers
|
|
||||||
public void NotifyMessageServersUserLoggOff(UUID agentID)
|
|
||||||
{
|
|
||||||
m_messagesService.TellMessageServersAboutUserLogoff(agentID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void NotifyMessageServersUserLoggedInToLocation(UUID agentID, UUID sessionID, UUID RegionID,
|
|
||||||
ulong regionhandle, float positionX, float positionY,
|
|
||||||
float positionZ, string firstname, string lastname)
|
|
||||||
{
|
|
||||||
m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX,
|
|
||||||
positionY, positionZ, firstname, lastname);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HandleAgentLocation(UUID agentID, UUID regionID, ulong regionHandle)
|
|
||||||
{
|
|
||||||
m_userManager.HandleAgentLocation(agentID, regionID, regionHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle)
|
|
||||||
{
|
|
||||||
m_userManager.HandleAgentLeaving(agentID, regionID, regionHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HandleRegionStartup(UUID regionID)
|
|
||||||
{
|
|
||||||
// This might seem strange, that we send this back to the
|
|
||||||
// server it came from. But there is method to the madness.
|
|
||||||
// There can be multiple user servers on the same database,
|
|
||||||
// and each can have multiple messaging servers. So, we send
|
|
||||||
// it to all known user servers, who send it to all known
|
|
||||||
// message servers. That way, we should be able to finally
|
|
||||||
// update presence to all regions and thereby all friends
|
|
||||||
//
|
|
||||||
m_userManager.HandleRegionStartup(regionID);
|
|
||||||
m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HandleRegionShutdown(UUID regionID)
|
|
||||||
{
|
|
||||||
// This might seem strange, that we send this back to the
|
|
||||||
// server it came from. But there is method to the madness.
|
|
||||||
// There can be multiple user servers on the same database,
|
|
||||||
// and each can have multiple messaging servers. So, we send
|
|
||||||
// it to all known user servers, who send it to all known
|
|
||||||
// message servers. That way, we should be able to finally
|
|
||||||
// update presence to all regions and thereby all friends
|
|
||||||
//
|
|
||||||
m_userManager.HandleRegionShutdown(regionID);
|
|
||||||
m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -59,9 +59,8 @@ namespace OpenSim.Grid.UserServer
|
||||||
|
|
||||||
protected IUGAIMCore m_core;
|
protected IUGAIMCore m_core;
|
||||||
|
|
||||||
public UserServerCommandModule( UserLoginService loginService)
|
public UserServerCommandModule()
|
||||||
{
|
{
|
||||||
m_loginService = loginService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialise(IUGAIMCore core)
|
public void Initialise(IUGAIMCore core)
|
||||||
|
@ -83,8 +82,15 @@ namespace OpenSim.Grid.UserServer
|
||||||
m_userDataBaseService = userDBservice;
|
m_userDataBaseService = userDBservice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UserLoginService loginService;
|
||||||
|
if (m_core.TryGet<UserLoginService>(out loginService))
|
||||||
|
{
|
||||||
|
m_loginService = loginService;
|
||||||
|
}
|
||||||
|
|
||||||
ConsoleBase console;
|
ConsoleBase console;
|
||||||
if ((m_core.TryGet<ConsoleBase>(out console)) && (m_cfg != null) && (m_userDataBaseService != null))
|
if ((m_core.TryGet<ConsoleBase>(out console)) && (m_cfg != null)
|
||||||
|
&& (m_userDataBaseService != null) && (m_loginService != null))
|
||||||
{
|
{
|
||||||
RegisterConsoleCommands(console);
|
RegisterConsoleCommands(console);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSim Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* 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
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
using log4net.Config;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Data;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Communications;
|
||||||
|
using OpenSim.Framework.Communications.Cache;
|
||||||
|
using OpenSim.Framework.Console;
|
||||||
|
using OpenSim.Framework.Servers;
|
||||||
|
using OpenSim.Framework.Statistics;
|
||||||
|
using OpenSim.Grid.Communications.OGS1;
|
||||||
|
using OpenSim.Grid.Framework;
|
||||||
|
using OpenSim.Grid.UserServer.Modules;
|
||||||
|
|
||||||
|
namespace OpenSim.Grid.UserServer
|
||||||
|
{
|
||||||
|
//Do we actually need these event dispatchers?
|
||||||
|
//shouldn't the other modules just directly register event handlers to each other?
|
||||||
|
public class UserServerEventDispatchModule
|
||||||
|
{
|
||||||
|
protected UserManager m_userManager;
|
||||||
|
protected MessageServersConnector m_messagesService;
|
||||||
|
protected UserLoginService m_loginService;
|
||||||
|
|
||||||
|
public UserServerEventDispatchModule(UserManager userManager, MessageServersConnector messagesService, UserLoginService loginService)
|
||||||
|
{
|
||||||
|
m_userManager = userManager;
|
||||||
|
m_messagesService = messagesService;
|
||||||
|
m_loginService = loginService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise(IUGAIMCore core)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PostInitialise()
|
||||||
|
{
|
||||||
|
m_loginService.OnUserLoggedInAtLocation += NotifyMessageServersUserLoggedInToLocation;
|
||||||
|
m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
|
||||||
|
|
||||||
|
m_messagesService.OnAgentLocation += HandleAgentLocation;
|
||||||
|
m_messagesService.OnAgentLeaving += HandleAgentLeaving;
|
||||||
|
m_messagesService.OnRegionStartup += HandleRegionStartup;
|
||||||
|
m_messagesService.OnRegionShutdown += HandleRegionShutdown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RegisterHandlers(BaseHttpServer httpServer)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Close()
|
||||||
|
{
|
||||||
|
m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Event Handlers
|
||||||
|
public void NotifyMessageServersUserLoggOff(UUID agentID)
|
||||||
|
{
|
||||||
|
m_messagesService.TellMessageServersAboutUserLogoff(agentID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NotifyMessageServersUserLoggedInToLocation(UUID agentID, UUID sessionID, UUID RegionID,
|
||||||
|
ulong regionhandle, float positionX, float positionY,
|
||||||
|
float positionZ, string firstname, string lastname)
|
||||||
|
{
|
||||||
|
m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX,
|
||||||
|
positionY, positionZ, firstname, lastname);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HandleAgentLocation(UUID agentID, UUID regionID, ulong regionHandle)
|
||||||
|
{
|
||||||
|
m_userManager.HandleAgentLocation(agentID, regionID, regionHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HandleAgentLeaving(UUID agentID, UUID regionID, ulong regionHandle)
|
||||||
|
{
|
||||||
|
m_userManager.HandleAgentLeaving(agentID, regionID, regionHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HandleRegionStartup(UUID regionID)
|
||||||
|
{
|
||||||
|
// This might seem strange, that we send this back to the
|
||||||
|
// server it came from. But there is method to the madness.
|
||||||
|
// There can be multiple user servers on the same database,
|
||||||
|
// and each can have multiple messaging servers. So, we send
|
||||||
|
// it to all known user servers, who send it to all known
|
||||||
|
// message servers. That way, we should be able to finally
|
||||||
|
// update presence to all regions and thereby all friends
|
||||||
|
//
|
||||||
|
m_userManager.HandleRegionStartup(regionID);
|
||||||
|
m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HandleRegionShutdown(UUID regionID)
|
||||||
|
{
|
||||||
|
// This might seem strange, that we send this back to the
|
||||||
|
// server it came from. But there is method to the madness.
|
||||||
|
// There can be multiple user servers on the same database,
|
||||||
|
// and each can have multiple messaging servers. So, we send
|
||||||
|
// it to all known user servers, who send it to all known
|
||||||
|
// message servers. That way, we should be able to finally
|
||||||
|
// update presence to all regions and thereby all friends
|
||||||
|
//
|
||||||
|
m_userManager.HandleRegionShutdown(regionID);
|
||||||
|
m_messagesService.TellMessageServersAboutRegionShutdown(regionID);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue