aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Interfaces/IInterregionComms.cs4
-rw-r--r--OpenSim/Region/Environment/Modules/Framework/InterregionComms.cs37
2 files changed, 37 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
index d2b5dad..37cf2de 100644
--- a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
+++ b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs
@@ -31,8 +31,12 @@ using OpenMetaverse;
31 31
32namespace OpenSim.Region.Environment.Interfaces 32namespace OpenSim.Region.Environment.Interfaces
33{ 33{
34 public delegate void InterregionDataReceived(InterregionData data);
35
34 public interface IInterregionComms : IRegionModule 36 public interface IInterregionComms : IRegionModule
35 { 37 {
38 event InterregionDataReceived OnInterregionData;
39
36 bool SendInterregionData(UUID destination, InterregionData data); 40 bool SendInterregionData(UUID destination, InterregionData data);
37 } 41 }
38} 42}
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
47 public class InterregionCommsModule : IInterregionComms 47 public class InterregionCommsModule : IInterregionComms
48 { 48 {
49 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 49 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
50 private Scene m_Scene = null; 50 private List<Scene> m_SceneList = new List<Scene>();
51 51
52 public event InterregionDataReceived OnInterregionData;
53
52 public void Initialise(Scene scene, IConfigSource config) 54 public void Initialise(Scene scene, IConfigSource config)
53 { 55 {
54 m_Scene = scene; 56 if (m_SceneList.Count == 0)
57 {
58 // Do first-time only init here
59 //
60 }
61
62 if (!m_SceneList.Contains(scene))
63 {
64 lock(m_SceneList)
65 {
66 m_SceneList.Add(scene);
67 scene.RegisterModuleInterface<IInterregionComms>(this);
68 }
55 69
56 m_Scene.RegisterModuleInterface<IInterregionComms>(this); 70 }
57 } 71 }
58 72
59 public void PostInitialise() 73 public void PostInitialise()
@@ -71,11 +85,26 @@ namespace OpenSim.Region.Environment.Modules.Framework
71 85
72 public bool IsSharedModule 86 public bool IsSharedModule
73 { 87 {
74 get { return false; } 88 get { return true; }
75 } 89 }
76 90
77 public bool SendInterregionData(UUID destination, InterregionData data) 91 public bool SendInterregionData(UUID destination, InterregionData data)
78 { 92 {
93 lock(m_SceneList)
94 {
95 foreach(Scene s in m_SceneList)
96 {
97 if (s.RegionInfo.RegionID == destination)
98 {
99 if (OnInterregionData != null)
100 OnInterregionData(data);
101 return true;
102 }
103 }
104 }
105
106 // Implement remote sending here
107 //
79 return false; 108 return false;
80 } 109 }
81 } 110 }