diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs index 33cc838..6f364ae 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs | |||
@@ -53,6 +53,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
53 | private IGridService m_LocalGridService; | 53 | private IGridService m_LocalGridService; |
54 | private IGridService m_RemoteGridService; | 54 | private IGridService m_RemoteGridService; |
55 | 55 | ||
56 | private RegionInfoCache m_RegionInfoCache = new RegionInfoCache(); | ||
57 | |||
56 | public RemoteGridServicesConnector() | 58 | public RemoteGridServicesConnector() |
57 | { | 59 | { |
58 | } | 60 | } |
@@ -169,10 +171,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
169 | 171 | ||
170 | public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID) | 172 | public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID) |
171 | { | 173 | { |
172 | GridRegion rinfo = m_LocalGridService.GetRegionByUUID(scopeID, regionID); | 174 | bool inCache = false; |
175 | GridRegion rinfo = m_RegionInfoCache.Get(scopeID,regionID,out inCache); | ||
176 | if (inCache) | ||
177 | return rinfo; | ||
178 | |||
179 | rinfo = m_LocalGridService.GetRegionByUUID(scopeID, regionID); | ||
173 | if (rinfo == null) | 180 | if (rinfo == null) |
174 | rinfo = m_RemoteGridService.GetRegionByUUID(scopeID, regionID); | 181 | rinfo = m_RemoteGridService.GetRegionByUUID(scopeID, regionID); |
175 | 182 | ||
183 | m_RegionInfoCache.Cache(scopeID,regionID,rinfo); | ||
176 | return rinfo; | 184 | return rinfo; |
177 | } | 185 | } |
178 | 186 | ||
@@ -187,10 +195,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
187 | 195 | ||
188 | public GridRegion GetRegionByName(UUID scopeID, string regionName) | 196 | public GridRegion GetRegionByName(UUID scopeID, string regionName) |
189 | { | 197 | { |
190 | GridRegion rinfo = m_LocalGridService.GetRegionByName(scopeID, regionName); | 198 | bool inCache = false; |
199 | GridRegion rinfo = m_RegionInfoCache.Get(scopeID,regionName, out inCache); | ||
200 | if (inCache) | ||
201 | return rinfo; | ||
202 | |||
203 | rinfo = m_LocalGridService.GetRegionByName(scopeID, regionName); | ||
191 | if (rinfo == null) | 204 | if (rinfo == null) |
192 | rinfo = m_RemoteGridService.GetRegionByName(scopeID, regionName); | 205 | rinfo = m_RemoteGridService.GetRegionByName(scopeID, regionName); |
193 | 206 | ||
207 | // can't cache negative results for name lookups | ||
208 | m_RegionInfoCache.Cache(rinfo); | ||
194 | return rinfo; | 209 | return rinfo; |
195 | } | 210 | } |
196 | 211 | ||
@@ -204,8 +219,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
204 | { | 219 | { |
205 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionsByName {0} found {1} regions", name, grinfo.Count); | 220 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionsByName {0} found {1} regions", name, grinfo.Count); |
206 | foreach (GridRegion r in grinfo) | 221 | foreach (GridRegion r in grinfo) |
222 | { | ||
223 | m_RegionInfoCache.Cache(r); | ||
207 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | 224 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) |
208 | rinfo.Add(r); | 225 | rinfo.Add(r); |
226 | } | ||
209 | } | 227 | } |
210 | 228 | ||
211 | return rinfo; | 229 | return rinfo; |
@@ -221,8 +239,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
221 | { | 239 | { |
222 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionRange {0} found {1} regions", name, grinfo.Count); | 240 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionRange {0} found {1} regions", name, grinfo.Count); |
223 | foreach (GridRegion r in grinfo) | 241 | foreach (GridRegion r in grinfo) |
242 | { | ||
243 | m_RegionInfoCache.Cache(r); | ||
224 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | 244 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) |
225 | rinfo.Add(r); | 245 | rinfo.Add(r); |
246 | } | ||
226 | } | 247 | } |
227 | 248 | ||
228 | return rinfo; | 249 | return rinfo; |
@@ -238,8 +259,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
238 | { | 259 | { |
239 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetDefaultRegions {0} found {1} regions", name, grinfo.Count); | 260 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetDefaultRegions {0} found {1} regions", name, grinfo.Count); |
240 | foreach (GridRegion r in grinfo) | 261 | foreach (GridRegion r in grinfo) |
262 | { | ||
263 | m_RegionInfoCache.Cache(r); | ||
241 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | 264 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) |
242 | rinfo.Add(r); | 265 | rinfo.Add(r); |
266 | } | ||
243 | } | 267 | } |
244 | 268 | ||
245 | return rinfo; | 269 | return rinfo; |
@@ -255,8 +279,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
255 | { | 279 | { |
256 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetFallbackRegions {0} found {1} regions", name, grinfo.Count); | 280 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetFallbackRegions {0} found {1} regions", name, grinfo.Count); |
257 | foreach (GridRegion r in grinfo) | 281 | foreach (GridRegion r in grinfo) |
282 | { | ||
283 | m_RegionInfoCache.Cache(r); | ||
258 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | 284 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) |
259 | rinfo.Add(r); | 285 | rinfo.Add(r); |
286 | } | ||
260 | } | 287 | } |
261 | 288 | ||
262 | return rinfo; | 289 | return rinfo; |
@@ -272,8 +299,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
272 | { | 299 | { |
273 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetHyperlinks {0} found {1} regions", name, grinfo.Count); | 300 | //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetHyperlinks {0} found {1} regions", name, grinfo.Count); |
274 | foreach (GridRegion r in grinfo) | 301 | foreach (GridRegion r in grinfo) |
302 | { | ||
303 | m_RegionInfoCache.Cache(r); | ||
275 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) | 304 | if (rinfo.Find(delegate(GridRegion gr) { return gr.RegionID == r.RegionID; }) == null) |
276 | rinfo.Add(r); | 305 | rinfo.Add(r); |
306 | } | ||
277 | } | 307 | } |
278 | 308 | ||
279 | return rinfo; | 309 | return rinfo; |