From 95f43ab73ebac860cbcd534f07d60404f257b0bb Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 24 Feb 2012 18:17:30 +0100 Subject: [PATCH] Add a cache on GridService requests --- .../Services/Connectors/Grid/GridServiceConnector.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 1599a56b1b..7deaf954c0 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs @@ -48,6 +48,9 @@ namespace OpenSim.Services.Connectors private string m_ServerURI = String.Empty; + private ExpiringCache m_regionCache = + new ExpiringCache(); + public GridServicesConnector() { } @@ -265,6 +268,11 @@ namespace OpenSim.Services.Connectors 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 sendData = new Dictionary(); sendData["SCOPEID"] = scopeID.ToString(); @@ -306,6 +314,8 @@ namespace OpenSim.Services.Connectors else m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition received null reply"); + m_regionCache.Add(regionHandle, rinfo, TimeSpan.FromSeconds(600)); + return rinfo; }