aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs34
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;