diff options
Merge branch 'master' into careminster-presence-refactor
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 6a61da6..496eb2c 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 | ||
@@ -107,6 +124,13 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
107 | { | 124 | { |
108 | IPEndPoint ext = regionInfo.ExternalEndPoint; | 125 | IPEndPoint ext = regionInfo.ExternalEndPoint; |
109 | if (ext == null) return "Region registration for " + regionInfo.RegionName + " failed: Could not resolve EndPoint"; | 126 | if (ext == null) return "Region registration for " + regionInfo.RegionName + " failed: Could not resolve EndPoint"; |
127 | // Generate and upload our map tile in PNG format to the SimianGrid AddMapTile service | ||
128 | Scene scene; | ||
129 | if (m_scenes.TryGetValue(regionInfo.RegionID, out scene)) | ||
130 | UploadMapTile(scene); | ||
131 | else | ||
132 | m_log.Warn("Registering region " + regionInfo.RegionName + " (" + regionInfo.RegionID + ") that we are not tracking"); | ||
133 | |||
110 | Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0); | 134 | Vector3d minPosition = new Vector3d(regionInfo.RegionLocX, regionInfo.RegionLocY, 0.0); |
111 | Vector3d maxPosition = minPosition + new Vector3d(Constants.RegionSize, Constants.RegionSize, 4096.0); | 135 | Vector3d maxPosition = minPosition + new Vector3d(Constants.RegionSize, Constants.RegionSize, 4096.0); |
112 | 136 | ||
@@ -432,7 +456,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
432 | if (!String.IsNullOrEmpty(errorMessage)) | 456 | if (!String.IsNullOrEmpty(errorMessage)) |
433 | { | 457 | { |
434 | m_log.WarnFormat("[SIMIAN GRID CONNECTOR]: Failed to store {0} byte PNG map tile for {1}: {2}", | 458 | m_log.WarnFormat("[SIMIAN GRID CONNECTOR]: Failed to store {0} byte PNG map tile for {1}: {2}", |
435 | pngData.Length, scene.RegionInfo.RegionName, errorMessage); | 459 | pngData.Length, scene.RegionInfo.RegionName, errorMessage.Replace('\n', ' ')); |
436 | } | 460 | } |
437 | } | 461 | } |
438 | 462 | ||