From f5c312bc3c2567449c7268a54a08a54119f58d53 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Wed, 30 Apr 2008 21:16:36 +0000 Subject: * Refactored Environment/Modules directory - modules now reside in their own directory with any associated module-specific classes. * Each module directory is currently inside one of the following category folders: Agent (Anything relating to do with Client<->Server communications.), Avatar (Anything to do with the avatar or presence inworld), Framework (Classes modules can use), Grid (Grid traffic, new OGS2 grid comms), Scripting (Scripting functions, etc), World (The enrivonment/scene, IE Sun/Tree modules.) * This should be moved into a seperate project file. --- .../Interregion/IInterregionModule.cs | 15 -- .../Interregion/InterregionModule.cs | 174 --------------------- .../Communications/Interregion/RemotingObject.cs | 50 ------ 3 files changed, 239 deletions(-) delete mode 100644 OpenSim/Region/Environment/Modules/Communications/Interregion/IInterregionModule.cs delete mode 100644 OpenSim/Region/Environment/Modules/Communications/Interregion/InterregionModule.cs delete mode 100644 OpenSim/Region/Environment/Modules/Communications/Interregion/RemotingObject.cs (limited to 'OpenSim/Region/Environment/Modules/Communications/Interregion') diff --git a/OpenSim/Region/Environment/Modules/Communications/Interregion/IInterregionModule.cs b/OpenSim/Region/Environment/Modules/Communications/Interregion/IInterregionModule.cs deleted file mode 100644 index 713b46a..0000000 --- a/OpenSim/Region/Environment/Modules/Communications/Interregion/IInterregionModule.cs +++ /dev/null @@ -1,15 +0,0 @@ -using OpenSim.Framework; -using OpenSim.Region.Environment.Scenes; - -namespace OpenSim.Region.Environment.Modules.Communications.Interregion -{ - public interface IInterregionModule - { - void RegisterMethod(T e); - bool HasInterface(Location loc); - T RequestInterface(Location loc); - T[] RequestInterface(); - Location GetLocationByDirection(Scene scene, InterregionModule.Direction dir); - void internal_CreateRemotingObjects(); - } -} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/Communications/Interregion/InterregionModule.cs b/OpenSim/Region/Environment/Modules/Communications/Interregion/InterregionModule.cs deleted file mode 100644 index 8d040c4..0000000 --- a/OpenSim/Region/Environment/Modules/Communications/Interregion/InterregionModule.cs +++ /dev/null @@ -1,174 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Runtime.Remoting; -using System.Runtime.Remoting.Channels; -using System.Runtime.Remoting.Channels.Tcp; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Environment.Interfaces; -using OpenSim.Region.Environment.Scenes; - -namespace OpenSim.Region.Environment.Modules.Communications.Interregion -{ - public class InterregionModule : IInterregionModule, IRegionModule - { - #region Direction enum - - public enum Direction - { - North, - NorthEast, - East, - SouthEast, - South, - SouthWest, - West, - NorthWest - } - - #endregion - - private readonly Dictionary m_interfaces = new Dictionary(); - private readonly List m_myLocations = new List(); - - private readonly Dictionary m_neighbourInterfaces = new Dictionary(); - private readonly Dictionary m_neighbourRemote = new Dictionary(); - private IConfigSource m_config; - private RemotingObject m_myRemote; - - private Object m_lockObject = new object(); - private TcpChannel m_tcpChannel; - private int m_tcpPort = 10101; - private bool m_enabled = false; - - #region IRegionModule Members - - //TODO: This prevents us from registering new scenes after PostInitialise if we want comms updated. - public void Initialise(Scene scene, IConfigSource source) - { - if (m_enabled) - { - m_myLocations.Add(new Location((int) scene.RegionInfo.RegionLocX, - (int) scene.RegionInfo.RegionLocY)); - m_config = source; - - scene.RegisterModuleInterface(this); - } - } - - //TODO: This prevents us from registering new scenes after PostInitialise if we want comms updated. - public void PostInitialise() - { - if (m_enabled) - { - try - { - m_tcpPort = m_config.Configs["Comms"].GetInt("remoting_port", m_tcpPort); - } - catch - { - } - - internal_CreateRemotingObjects(); - } - } - - public void Close() - { - ChannelServices.UnregisterChannel(m_tcpChannel); - } - - public string Name - { - get { return "InterregionModule"; } - } - - public bool IsSharedModule - { - get { return true; } - } - - #endregion - - public void internal_CreateRemotingObjects() - { - lock (m_lockObject) - { - if (m_tcpChannel == null) - { - m_myRemote = new RemotingObject(m_interfaces, m_myLocations.ToArray()); - m_tcpChannel = new TcpChannel(m_tcpPort); - - ChannelServices.RegisterChannel(m_tcpChannel, false); - RemotingServices.Marshal(m_myRemote, "OpenSimRemote2", typeof (RemotingObject)); - } - } - } - - public void RegisterRemoteRegion(string uri) - { - RegisterRemotingInterface((RemotingObject) Activator.GetObject(typeof (RemotingObject), uri)); - } - - private void RegisterRemotingInterface(RemotingObject remote) - { - Location[] locs = remote.GetLocations(); - string[] interfaces = remote.GetInterfaces(); - foreach (Location loc in locs) - { - m_neighbourInterfaces[loc] = interfaces; - m_neighbourRemote[loc] = remote; - } - } - - public void RegisterMethod(T e) - { - m_interfaces[typeof (T)] = e; - } - - public bool HasInterface(Location loc) - { - foreach (string val in m_neighbourInterfaces[loc]) - { - if (val == typeof (T).FullName) - { - return true; - } - } - return false; - } - - public T RequestInterface(Location loc) - { - if (m_neighbourRemote.ContainsKey(loc)) - { - return m_neighbourRemote[loc].RequestInterface(); - } - else - { - throw new IndexOutOfRangeException("No neighbour availible at that location"); - } - } - - public T[] RequestInterface() - { - List m_t = new List(); - foreach (RemotingObject remote in m_neighbourRemote.Values) - { - try - { - m_t.Add(remote.RequestInterface()); - } - catch (NotSupportedException) - { - } - } - return m_t.ToArray(); - } - - public Location GetLocationByDirection(Scene scene, Direction dir) - { - return new Location(0, 0); - } - } -} \ No newline at end of file diff --git a/OpenSim/Region/Environment/Modules/Communications/Interregion/RemotingObject.cs b/OpenSim/Region/Environment/Modules/Communications/Interregion/RemotingObject.cs deleted file mode 100644 index a735677..0000000 --- a/OpenSim/Region/Environment/Modules/Communications/Interregion/RemotingObject.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using OpenSim.Framework; - -namespace OpenSim.Region.Environment.Modules.Communications.Interregion -{ - public class RemotingObject : MarshalByRefObject - { - private readonly Location[] m_coords; - private readonly Dictionary m_interfaces = new Dictionary(); - - public RemotingObject(Dictionary myInterfaces, Location[] coords) - { - m_interfaces = myInterfaces; - m_coords = coords; - } - - public Location[] GetLocations() - { - return (Location[]) m_coords.Clone(); - } - - public string[] GetInterfaces() - { - string[] interfaces = new string[m_interfaces.Count]; - int i = 0; - - foreach (KeyValuePair pair in m_interfaces) - { - interfaces[i++] = pair.Key.FullName; - } - - return interfaces; - } - - /// - /// Returns a registered interface availible to neighbouring regions. - /// - /// The type of interface you wish to request - /// A MarshalByRefObject inherited from this region inheriting the interface requested. - /// All registered interfaces MUST inherit from MarshalByRefObject and use only serialisable types. - public T RequestInterface() - { - if (m_interfaces.ContainsKey(typeof (T))) - return (T) m_interfaces[typeof (T)]; - - throw new NotSupportedException("No such interface registered."); - } - } -} \ No newline at end of file -- cgit v1.1