Add a cache on GridService requests

avinationmerge
Melanie 2012-02-24 18:17:30 +01:00
parent ec94b82f51
commit 95f43ab73e
1 changed files with 10 additions and 0 deletions

View File

@ -48,6 +48,9 @@ namespace OpenSim.Services.Connectors
private string m_ServerURI = String.Empty; private string m_ServerURI = String.Empty;
private ExpiringCache<ulong, GridRegion> m_regionCache =
new ExpiringCache<ulong, GridRegion>();
public GridServicesConnector() public GridServicesConnector()
{ {
} }
@ -265,6 +268,11 @@ namespace OpenSim.Services.Connectors
public GridRegion GetRegionByPosition(UUID scopeID, int x, int y) public GridRegion GetRegionByPosition(UUID scopeID, int x, int y)
{ {
ulong regionHandle = Util.UIntsToLong((uint)x, (uint)y);
if (m_regionCache.Contains(regionHandle))
return (GridRegion)m_regionCache[regionHandle];
Dictionary<string, object> sendData = new Dictionary<string, object>(); Dictionary<string, object> sendData = new Dictionary<string, object>();
sendData["SCOPEID"] = scopeID.ToString(); sendData["SCOPEID"] = scopeID.ToString();
@ -306,6 +314,8 @@ namespace OpenSim.Services.Connectors
else else
m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition received null reply"); m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition received null reply");
m_regionCache.Add(regionHandle, rinfo, TimeSpan.FromSeconds(600));
return rinfo; return rinfo;
} }