From 4db232763f578048c3339e6a60fe801cc3853b3d Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 25 Feb 2009 18:33:15 +0000
Subject: More refactoring of the Grid, User and Messaging servers.
---
OpenSim/Framework/Communications/IUserService.cs | 12 --
OpenSim/Grid/Framework/IGridMessagingMapper.cs | 40 -----
OpenSim/Grid/Framework/IMessageRegionLookup.cs | 38 +++++
OpenSim/Grid/Framework/IMessageRegionService.cs | 38 -----
.../Grid/Framework/IMessagingServerDiscovery.cs | 40 +++++
.../Grid/GridServer.Modules/GridMessagingModule.cs | 6 +-
.../Grid/GridServer.Modules/GridXmlRpcModule.cs | 6 +-
.../MessagingServer.Modules/MessageRegionModule.cs | 8 +-
.../Grid/MessagingServer.Modules/MessageService.cs | 6 +-
.../UserServer.Modules/GridInfoServiceModule.cs | 77 ++++++++++
.../UserServer.Modules/MessageServersConnector.cs | 13 +-
OpenSim/Grid/UserServer.Modules/UserManager.cs | 3 +-
.../UserServerAvatarAppearanceModule.cs | 5 +-
.../UserServer.Modules/UserServerFriendsModule.cs | 7 +-
OpenSim/Grid/UserServer/Main.cs | 167 +++++++--------------
OpenSim/Grid/UserServer/UserServerCommandModule.cs | 14 +-
.../UserServer/UserServerEventDispatchModule.cs | 141 +++++++++++++++++
17 files changed, 394 insertions(+), 227 deletions(-)
delete mode 100644 OpenSim/Grid/Framework/IGridMessagingMapper.cs
create mode 100644 OpenSim/Grid/Framework/IMessageRegionLookup.cs
delete mode 100644 OpenSim/Grid/Framework/IMessageRegionService.cs
create mode 100644 OpenSim/Grid/Framework/IMessagingServerDiscovery.cs
create mode 100644 OpenSim/Grid/UserServer.Modules/GridInfoServiceModule.cs
create mode 100644 OpenSim/Grid/UserServer/UserServerEventDispatchModule.cs
(limited to 'OpenSim')
diff --git a/OpenSim/Framework/Communications/IUserService.cs b/OpenSim/Framework/Communications/IUserService.cs
index 206fb1e..0846024 100644
--- a/OpenSim/Framework/Communications/IUserService.cs
+++ b/OpenSim/Framework/Communications/IUserService.cs
@@ -114,17 +114,5 @@ namespace OpenSim.Framework.Communications
///
/// The agent that we're retreiving the friends Data.
List GetUserFriendList(UUID friendlistowner);
-
- ///
- /// 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 GetAttachments(UUID user);
}
}
diff --git a/OpenSim/Grid/Framework/IGridMessagingMapper.cs b/OpenSim/Grid/Framework/IGridMessagingMapper.cs
deleted file mode 100644
index 3a21431..0000000
--- a/OpenSim/Grid/Framework/IGridMessagingMapper.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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 OpenSimulator 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 OpenSim.Framework.Servers;
-
-namespace OpenSim.Grid.Framework
-{
- public interface IGridMessagingMapper
- {
- List GetMessageServersList();
- void RegisterMessageServer(MessageServerInfo m);
- void DeRegisterMessageServer(MessageServerInfo m);
- }
-}
diff --git a/OpenSim/Grid/Framework/IMessageRegionLookup.cs b/OpenSim/Grid/Framework/IMessageRegionLookup.cs
new file mode 100644
index 0000000..5e49a40
--- /dev/null
+++ b/OpenSim/Grid/Framework/IMessageRegionLookup.cs
@@ -0,0 +1,38 @@
+/*
+ * 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 OpenSimulator 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 OpenSim.Data;
+
+namespace OpenSim.Grid.Framework
+{
+ public interface IMessageRegionLookup
+ {
+ int ClearRegionCache();
+ RegionProfileData GetRegionInfo(ulong regionhandle);
+ }
+}
diff --git a/OpenSim/Grid/Framework/IMessageRegionService.cs b/OpenSim/Grid/Framework/IMessageRegionService.cs
deleted file mode 100644
index 8c1d15a..0000000
--- a/OpenSim/Grid/Framework/IMessageRegionService.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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 OpenSimulator 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 OpenSim.Data;
-
-namespace OpenSim.Grid.Framework
-{
- public interface IMessageRegionService
- {
- int ClearRegionCache();
- RegionProfileData GetRegionInfo(ulong regionhandle);
- }
-}
diff --git a/OpenSim/Grid/Framework/IMessagingServerDiscovery.cs b/OpenSim/Grid/Framework/IMessagingServerDiscovery.cs
new file mode 100644
index 0000000..7995aba
--- /dev/null
+++ b/OpenSim/Grid/Framework/IMessagingServerDiscovery.cs
@@ -0,0 +1,40 @@
+/*
+ * 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 OpenSimulator 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 OpenSim.Framework.Servers;
+
+namespace OpenSim.Grid.Framework
+{
+ public interface IMessagingServerDiscovery
+ {
+ List GetMessageServersList();
+ void RegisterMessageServer(MessageServerInfo m);
+ void DeRegisterMessageServer(MessageServerInfo m);
+ }
+}
diff --git a/OpenSim/Grid/GridServer.Modules/GridMessagingModule.cs b/OpenSim/Grid/GridServer.Modules/GridMessagingModule.cs
index ee38310..1d2c529 100644
--- a/OpenSim/Grid/GridServer.Modules/GridMessagingModule.cs
+++ b/OpenSim/Grid/GridServer.Modules/GridMessagingModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -38,7 +38,7 @@ using OpenSim.Grid.Framework;
namespace OpenSim.Grid.GridServer.Modules
{
- public class GridMessagingModule : IGridMessagingMapper
+ public class GridMessagingModule : IMessagingServerDiscovery
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -68,7 +68,7 @@ namespace OpenSim.Grid.GridServer.Modules
m_gridCore = gridCore;
m_config = config;
- m_gridCore.RegisterInterface(this);
+ m_gridCore.RegisterInterface(this);
RegisterHandlers();
}
diff --git a/OpenSim/Grid/GridServer.Modules/GridXmlRpcModule.cs b/OpenSim/Grid/GridServer.Modules/GridXmlRpcModule.cs
index 292ce0d..62101e5 100644
--- a/OpenSim/Grid/GridServer.Modules/GridXmlRpcModule.cs
+++ b/OpenSim/Grid/GridServer.Modules/GridXmlRpcModule.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Grid.GridServer.Modules
protected GridConfig m_config;
- protected IGridMessagingMapper m_messagingServerMapper;
+ protected IMessagingServerDiscovery m_messagingServerMapper;
///
/// Used to notify old regions as to which OpenSim version to upgrade to
///
@@ -80,8 +80,8 @@ namespace OpenSim.Grid.GridServer.Modules
public void PostInitialise()
{
- IGridMessagingMapper messagingModule;
- if (m_gridCore.TryGet(out messagingModule))
+ IMessagingServerDiscovery messagingModule;
+ if (m_gridCore.TryGet(out messagingModule))
{
m_messagingServerMapper = messagingModule;
}
diff --git a/OpenSim/Grid/MessagingServer.Modules/MessageRegionModule.cs b/OpenSim/Grid/MessagingServer.Modules/MessageRegionModule.cs
index 7b3edfb..7002a2e 100644
--- a/OpenSim/Grid/MessagingServer.Modules/MessageRegionModule.cs
+++ b/OpenSim/Grid/MessagingServer.Modules/MessageRegionModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -42,7 +42,7 @@ using Timer = System.Timers.Timer;
namespace OpenSim.Grid.MessagingServer.Modules
{
- public class MessageRegionModule : IMessageRegionService
+ public class MessageRegionModule : IMessageRegionLookup
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -63,7 +63,7 @@ namespace OpenSim.Grid.MessagingServer.Modules
public void Initialise()
{
- m_messageCore.RegisterInterface(this);
+ m_messageCore.RegisterInterface(this);
}
public void PostInitialise()
@@ -210,4 +210,4 @@ namespace OpenSim.Grid.MessagingServer.Modules
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Grid/MessagingServer.Modules/MessageService.cs b/OpenSim/Grid/MessagingServer.Modules/MessageService.cs
index c76f332..e79e5b4 100644
--- a/OpenSim/Grid/MessagingServer.Modules/MessageService.cs
+++ b/OpenSim/Grid/MessagingServer.Modules/MessageService.cs
@@ -52,7 +52,7 @@ namespace OpenSim.Grid.MessagingServer.Modules
private IUGAIMCore m_messageCore;
private IMessageUserServerService m_userServerModule;
- private IMessageRegionService m_regionModule;
+ private IMessageRegionLookup m_regionModule;
// a dictionary of all current presences this server knows about
private Dictionary m_presences = new Dictionary();
@@ -82,8 +82,8 @@ namespace OpenSim.Grid.MessagingServer.Modules
m_userServerModule = messageUserServer;
}
- IMessageRegionService messageRegion;
- if (m_messageCore.TryGet(out messageRegion))
+ IMessageRegionLookup messageRegion;
+ if (m_messageCore.TryGet(out messageRegion))
{
m_regionModule = messageRegion;
}
diff --git a/OpenSim/Grid/UserServer.Modules/GridInfoServiceModule.cs b/OpenSim/Grid/UserServer.Modules/GridInfoServiceModule.cs
new file mode 100644
index 0000000..a6fdee0
--- /dev/null
+++ b/OpenSim/Grid/UserServer.Modules/GridInfoServiceModule.cs
@@ -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()
+ {
+ }
+ }
+}
diff --git a/OpenSim/Grid/UserServer.Modules/MessageServersConnector.cs b/OpenSim/Grid/UserServer.Modules/MessageServersConnector.cs
index 59e9805..5b245ee 100644
--- a/OpenSim/Grid/UserServer.Modules/MessageServersConnector.cs
+++ b/OpenSim/Grid/UserServer.Modules/MessageServersConnector.cs
@@ -35,6 +35,7 @@ using Nwc.XmlRpc;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
+using OpenSim.Grid.Framework;
namespace OpenSim.Grid.UserServer.Modules
{
@@ -78,6 +79,8 @@ namespace OpenSim.Grid.UserServer.Modules
Thread m_NotifyThread;
+ private IUGAIMCore m_core;
+
public event AgentLocationDelegate OnAgentLocation;
public event AgentLeavingDelegate OnAgentLeaving;
public event RegionStartupDelegate OnRegionStartup;
@@ -86,18 +89,18 @@ namespace OpenSim.Grid.UserServer.Modules
public MessageServersConnector()
{
MessageServers = new Dictionary();
- m_NotifyThread = new Thread(new ThreadStart(NotifyQueueRunner));
- m_NotifyThread.Start();
}
- public void Initialise()
+ public void Initialise(IUGAIMCore core)
{
-
+ m_core = core;
+ m_core.RegisterInterface(this);
+ m_NotifyThread = new Thread(new ThreadStart(NotifyQueueRunner));
+ m_NotifyThread.Start();
}
public void PostInitialise()
{
-
}
public void RegisterHandlers(BaseHttpServer httpServer)
diff --git a/OpenSim/Grid/UserServer.Modules/UserManager.cs b/OpenSim/Grid/UserServer.Modules/UserManager.cs
index 1f4b07d..34daff2 100644
--- a/OpenSim/Grid/UserServer.Modules/UserManager.cs
+++ b/OpenSim/Grid/UserServer.Modules/UserManager.cs
@@ -35,6 +35,7 @@ using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Servers;
+using OpenSim.Grid.Framework;
namespace OpenSim.Grid.UserServer.Modules
{
@@ -59,7 +60,7 @@ namespace OpenSim.Grid.UserServer.Modules
m_userDataBaseService = userDataBaseService;
}
- public void Initialise()
+ public void Initialise(IUGAIMCore core)
{
}
diff --git a/OpenSim/Grid/UserServer.Modules/UserServerAvatarAppearanceModule.cs b/OpenSim/Grid/UserServer.Modules/UserServerAvatarAppearanceModule.cs
index a1497b4..e68752d 100644
--- a/OpenSim/Grid/UserServer.Modules/UserServerAvatarAppearanceModule.cs
+++ b/OpenSim/Grid/UserServer.Modules/UserServerAvatarAppearanceModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -35,6 +35,7 @@ using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Servers;
+using OpenSim.Grid.Framework;
namespace OpenSim.Grid.UserServer.Modules
{
@@ -50,7 +51,7 @@ namespace OpenSim.Grid.UserServer.Modules
m_userDataBaseService = userDataBaseService;
}
- public void Initialise()
+ public void Initialise(IUGAIMCore core)
{
}
diff --git a/OpenSim/Grid/UserServer.Modules/UserServerFriendsModule.cs b/OpenSim/Grid/UserServer.Modules/UserServerFriendsModule.cs
index 9711a4b..6c1daea 100644
--- a/OpenSim/Grid/UserServer.Modules/UserServerFriendsModule.cs
+++ b/OpenSim/Grid/UserServer.Modules/UserServerFriendsModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -35,6 +35,7 @@ using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Communications;
using OpenSim.Framework.Servers;
+using OpenSim.Grid.Framework;
namespace OpenSim.Grid.UserServer.Modules
{
@@ -51,7 +52,7 @@ namespace OpenSim.Grid.UserServer.Modules
m_userDataBaseService = userDataBaseService;
}
- public void Initialise()
+ public void Initialise(IUGAIMCore core)
{
}
@@ -170,4 +171,4 @@ namespace OpenSim.Grid.UserServer.Modules
return FriendListItemListtoXmlRPCResponse(returndata);
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs
index e174b2d..63d788d 100644
--- a/OpenSim/Grid/UserServer/Main.cs
+++ b/OpenSim/Grid/UserServer/Main.cs
@@ -62,10 +62,12 @@ namespace OpenSim.Grid.UserServer
protected UserServerFriendsModule m_friendsModule;
public UserLoginService m_loginService;
- public GridInfoService m_gridInfoService;
public MessageServersConnector m_messagesService;
+ protected GridInfoServiceModule m_gridInfoService;
+
protected UserServerCommandModule m_consoleCommandModule;
+ protected UserServerEventDispatchModule m_eventDispatcher;
public static void Main(string[] args)
{
@@ -97,62 +99,40 @@ namespace OpenSim.Grid.UserServer
protected override void StartupSpecific()
{
- IInterServiceInventoryServices inventoryService = SetupRegisterCoreComponents();
+ IInterServiceInventoryServices inventoryService = StartupCoreComponents();
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
StartupUserServerModules();
StartOtherComponents(inventoryService);
- m_consoleCommandModule = new UserServerCommandModule(m_loginService);
- m_consoleCommandModule.Initialise(this);
-
- //register event handlers
- RegisterEventHandlers();
-
//PostInitialise the modules
- m_consoleCommandModule.PostInitialise(); //it will register its Console command handlers in here
- m_userDataBaseService.PostInitialise();
+ PostInitialiseModules();
//register http handlers and start http server
m_log.Info("[STARTUP]: Starting HTTP process");
RegisterHttpHandlers();
m_httpServer.Start();
-
- base.StartupSpecific();
- }
-
- private void StartOtherComponents(IInterServiceInventoryServices inventoryService)
- {
- 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();
+ base.StartupSpecific();
}
- private IInterServiceInventoryServices SetupRegisterCoreComponents()
+ protected virtual IInterServiceInventoryServices StartupCoreComponents()
{
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
- IInterServiceInventoryServices inventoryService = new OGS1InterServiceInventoryService(Cfg.InventoryUrl);
-
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
RegisterInterface(m_console);
RegisterInterface(Cfg);
+
+ IInterServiceInventoryServices inventoryService = new OGS1InterServiceInventoryService(Cfg.InventoryUrl);
+ // IRegionProfileService regionProfileService = new RegionProfileServiceProxy();
+
RegisterInterface(inventoryService);
+ // RegisterInterface(regionProfileService);
return inventoryService;
}
@@ -163,9 +143,43 @@ namespace OpenSim.Grid.UserServer
///
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.Initialise(this);
+
m_avatarAppearanceModule = new UserServerAvatarAppearanceModule(m_userDataBaseService);
+ m_avatarAppearanceModule.Initialise(this);
+
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(m_loginService); //TODO: should be done in the login service
+
+ m_eventDispatcher = new UserServerEventDispatchModule(m_userManager, m_messagesService, m_loginService);
+ m_eventDispatcher.Initialise(this);
}
///
@@ -178,34 +192,32 @@ namespace OpenSim.Grid.UserServer
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_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
-
- m_messagesService.OnAgentLocation += HandleAgentLocation;
- m_messagesService.OnAgentLeaving += HandleAgentLeaving;
- m_messagesService.OnRegionStartup += HandleRegionStartup;
- m_messagesService.OnRegionShutdown += HandleRegionShutdown;
+ m_consoleCommandModule.PostInitialise(); //it will register its Console command handlers in here
+ m_userDataBaseService.PostInitialise();
+ m_messagesService.PostInitialise();
+ m_eventDispatcher.PostInitialise(); //it will register event handlers in here
+ m_gridInfoService.PostInitialise();
+ m_userManager.PostInitialise();
+ m_avatarAppearanceModule.PostInitialise();
+ m_friendsModule.PostInitialise();
}
protected virtual void RegisterHttpHandlers()
{
m_loginService.RegisterHandlers(m_httpServer, Cfg.EnableLLSDLogin, true);
-
+
m_userManager.RegisterHandlers(m_httpServer);
m_friendsModule.RegisterHandlers(m_httpServer);
m_avatarAppearanceModule.RegisterHandlers(m_httpServer);
m_messagesService.RegisterHandlers(m_httpServer);
-
- m_httpServer.AddStreamHandler(new RestStreamHandler("GET", "/get_grid_info",
- m_gridInfoService.RestGetGridInfoMethod));
- m_httpServer.AddXmlRPCHandler("get_grid_info", m_gridInfoService.XmlRpcGridInfoMethod);
+ m_gridInfoService.RegisterHandlers(m_httpServer);
}
public override void ShutdownSpecific()
{
- m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
+ m_eventDispatcher.Close();
}
#region IUGAIMCore
@@ -247,74 +259,11 @@ namespace OpenSim.Grid.UserServer
{
return m_httpServer;
}
-
-
- #endregion
-
- #region Console Command Handlers
-
- protected override void ShowHelp(string[] helpArgs)
- {
- base.ShowHelp(helpArgs);
- }
#endregion
public void TestResponse(List resp)
{
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
}
}
diff --git a/OpenSim/Grid/UserServer/UserServerCommandModule.cs b/OpenSim/Grid/UserServer/UserServerCommandModule.cs
index f35cfec..a6f8af2 100644
--- a/OpenSim/Grid/UserServer/UserServerCommandModule.cs
+++ b/OpenSim/Grid/UserServer/UserServerCommandModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -59,9 +59,8 @@ namespace OpenSim.Grid.UserServer
protected IUGAIMCore m_core;
- public UserServerCommandModule( UserLoginService loginService)
+ public UserServerCommandModule()
{
- m_loginService = loginService;
}
public void Initialise(IUGAIMCore core)
@@ -83,8 +82,15 @@ namespace OpenSim.Grid.UserServer
m_userDataBaseService = userDBservice;
}
+ UserLoginService loginService;
+ if (m_core.TryGet(out loginService))
+ {
+ m_loginService = loginService;
+ }
+
ConsoleBase console;
- if ((m_core.TryGet(out console)) && (m_cfg != null) && (m_userDataBaseService != null))
+ if ((m_core.TryGet(out console)) && (m_cfg != null)
+ && (m_userDataBaseService != null) && (m_loginService != null))
{
RegisterConsoleCommands(console);
}
diff --git a/OpenSim/Grid/UserServer/UserServerEventDispatchModule.cs b/OpenSim/Grid/UserServer/UserServerEventDispatchModule.cs
new file mode 100644
index 0000000..e23a7d1
--- /dev/null
+++ b/OpenSim/Grid/UserServer/UserServerEventDispatchModule.cs
@@ -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
+ }
+}
--
cgit v1.1