From bafa5a3693ec054670ae19d115a5d0734ef7a68f Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 28 Dec 2008 19:15:20 +0000 Subject: Demonstration code for modular comms. No user functionality --- .../Modules/Framework/InterregionComms.cs | 37 +++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs') diff --git a/OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs b/OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs index 9fe17d6..f6bcf88 100644 --- a/OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs @@ -47,13 +47,27 @@ namespace OpenSim.Region.Environment.Modules.Framework public class InterregionCommsModule : IInterregionComms { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private Scene m_Scene = null; + private List m_SceneList = new List(); + public event InterregionDataReceived OnInterregionData; + public void Initialise(Scene scene, IConfigSource config) { - m_Scene = scene; + if (m_SceneList.Count == 0) + { + // Do first-time only init here + // + } + + if (!m_SceneList.Contains(scene)) + { + lock(m_SceneList) + { + m_SceneList.Add(scene); + scene.RegisterModuleInterface(this); + } - m_Scene.RegisterModuleInterface(this); + } } public void PostInitialise() @@ -71,11 +85,26 @@ namespace OpenSim.Region.Environment.Modules.Framework public bool IsSharedModule { - get { return false; } + get { return true; } } public bool SendInterregionData(UUID destination, InterregionData data) { + lock(m_SceneList) + { + foreach(Scene s in m_SceneList) + { + if (s.RegionInfo.RegionID == destination) + { + if (OnInterregionData != null) + OnInterregionData(data); + return true; + } + } + } + + // Implement remote sending here + // return false; } } -- cgit v1.1