diff options
Diffstat (limited to 'OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs')
-rw-r--r-- | OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs index db9027a..bea8172 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs | |||
@@ -59,18 +59,35 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
59 | MethodBase.GetCurrentMethod().DeclaringType); | 59 | MethodBase.GetCurrentMethod().DeclaringType); |
60 | 60 | ||
61 | private string m_serverUrl = String.Empty; | 61 | private string m_serverUrl = String.Empty; |
62 | private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); | ||
62 | 63 | ||
63 | #region ISharedRegionModule | 64 | #region ISharedRegionModule |
64 | 65 | ||
65 | public Type ReplaceableInterface { get { return null; } } | 66 | public Type ReplaceableInterface { get { return null; } } |
66 | public void RegionLoaded(Scene scene) { if (!String.IsNullOrEmpty(m_serverUrl)) { UploadMapTile(scene); } } | 67 | public void RegionLoaded(Scene scene) { } |
67 | public void PostInitialise() { } | 68 | public void PostInitialise() { } |
68 | public void Close() { } | 69 | public void Close() { } |
69 | 70 | ||
70 | public SimianGridServiceConnector() { } | 71 | public SimianGridServiceConnector() { } |
71 | public string Name { get { return "SimianGridServiceConnector"; } } | 72 | public string Name { get { return "SimianGridServiceConnector"; } } |
72 | public void AddRegion(Scene scene) { if (!String.IsNullOrEmpty(m_serverUrl)) { scene.RegisterModuleInterface<IGridService>(this); } } | 73 | public void AddRegion(Scene scene) |
73 | public void RemoveRegion(Scene scene) { if (!String.IsNullOrEmpty(m_serverUrl)) { scene.UnregisterModuleInterface<IGridService>(this); } } | 74 | { |
75 | // Every shared region module has to maintain an indepedent list of | ||
76 | // currently running regions | ||
77 | lock (m_scenes) | ||
78 | m_scenes[scene.RegionInfo.RegionID] = scene; | ||
79 | |||
80 | if (!String.IsNullOrEmpty(m_serverUrl)) | ||
81 | scene.RegisterModuleInterface<IGridService>(this); | ||
82 | } | ||
83 | public void RemoveRegion(Scene scene) | ||
84 | { | ||
85 | lock (m_scenes) | ||
86 | m_scenes.Remove(scene.RegionInfo.RegionID); | ||
87 | |||
88 | if (!String.IsNullOrEmpty(m_serverUrl)) | ||
89 | scene.UnregisterModuleInterface<IGridService>(this); | ||
90 | } | ||
74 | 91 | ||
75 | #endregion ISharedRegionModule | 92 | #endregion ISharedRegionModule |
76 | 93 | ||
@@ -105,6 +122,13 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
105 | 122 | ||
106 | public string RegisterRegion(UUID scopeID, GridRegion regionInfo) | 123 | public string RegisterRegion(UUID scopeID, GridRegion regionInfo) |
107 | { | 124 | { |
125 | // Generate and upload our map tile in PNG format to the SimianGrid AddMapTile service | ||
126 | Scene scene; | ||
127 | if (m_scenes.TryGetValue(regionInfo.RegionID, out scene)) | ||
128 | UploadMapTile(scene); | ||
129 | else | ||
130 | m_log.Warn("Registering region " + regionInfo.RegionName + " (" + regionInfo.RegionID + ") that we are not tracking"); | ||
131 | |||
108 | Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0); | 132 | Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0); |
109 | Vector3d maxPosition = minPosition + new Vector3d(Constants.RegionSize, Constants.RegionSize, 4096.0); | 133 | Vector3d maxPosition = minPosition + new Vector3d(Constants.RegionSize, Constants.RegionSize, 4096.0); |
110 | 134 | ||
@@ -430,7 +454,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
430 | if (!String.IsNullOrEmpty(errorMessage)) | 454 | if (!String.IsNullOrEmpty(errorMessage)) |
431 | { | 455 | { |
432 | m_log.WarnFormat("[SIMIAN GRID CONNECTOR]: Failed to store {0} byte PNG map tile for {1}: {2}", | 456 | m_log.WarnFormat("[SIMIAN GRID CONNECTOR]: Failed to store {0} byte PNG map tile for {1}: {2}", |
433 | pngData.Length, scene.RegionInfo.RegionName, errorMessage); | 457 | pngData.Length, scene.RegionInfo.RegionName, errorMessage.Replace('\n', ' ')); |
434 | } | 458 | } |
435 | } | 459 | } |
436 | 460 | ||