aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/Null/NullRegionData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Data/Null/NullRegionData.cs')
-rw-r--r--OpenSim/Data/Null/NullRegionData.cs69
1 files changed, 66 insertions, 3 deletions
diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs
index e8263ea..d596698 100644
--- a/OpenSim/Data/Null/NullRegionData.cs
+++ b/OpenSim/Data/Null/NullRegionData.cs
@@ -31,32 +31,45 @@ using System.Collections.Generic;
31using OpenMetaverse; 31using OpenMetaverse;
32using OpenSim.Framework; 32using OpenSim.Framework;
33using OpenSim.Data; 33using OpenSim.Data;
34using System.Reflection;
35using log4net;
34 36
35namespace OpenSim.Data.Null 37namespace OpenSim.Data.Null
36{ 38{
37 public class NullRegionData : IRegionData 39 public class NullRegionData : IRegionData
38 { 40 {
41 private static NullRegionData Instance = null;
42
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44
39 Dictionary<UUID, RegionData> m_regionData = new Dictionary<UUID, RegionData>(); 45 Dictionary<UUID, RegionData> m_regionData = new Dictionary<UUID, RegionData>();
40 46
41 public NullRegionData(string connectionString, string realm) 47 public NullRegionData(string connectionString, string realm)
42 { 48 {
49 if (Instance == null)
50 Instance = this;
43 //Console.WriteLine("[XXX] NullRegionData constructor"); 51 //Console.WriteLine("[XXX] NullRegionData constructor");
44 } 52 }
45 53
46 public List<RegionData> Get(string regionName, UUID scopeID) 54 public List<RegionData> Get(string regionName, UUID scopeID)
47 { 55 {
56 if (Instance != this)
57 return Instance.Get(regionName, scopeID);
58
48 List<RegionData> ret = new List<RegionData>(); 59 List<RegionData> ret = new List<RegionData>();
49 60
50 foreach (RegionData r in m_regionData.Values) 61 foreach (RegionData r in m_regionData.Values)
51 { 62 {
52 if (regionName.Contains("%")) 63 if (regionName.Contains("%"))
53 { 64 {
54 if (r.RegionName.Contains(regionName.Replace("%", ""))) 65 string cleanname = regionName.Replace("%", "");
66 m_log.DebugFormat("[NULL REGION DATA]: comparing {0} to {1}", cleanname.ToLower(), r.RegionName.ToLower());
67 if (r.RegionName.ToLower().Contains(cleanname.ToLower()))
55 ret.Add(r); 68 ret.Add(r);
56 } 69 }
57 else 70 else
58 { 71 {
59 if (r.RegionName == regionName) 72 if (r.RegionName.ToLower() == regionName.ToLower())
60 ret.Add(r); 73 ret.Add(r);
61 } 74 }
62 } 75 }
@@ -69,6 +82,9 @@ namespace OpenSim.Data.Null
69 82
70 public RegionData Get(int posX, int posY, UUID scopeID) 83 public RegionData Get(int posX, int posY, UUID scopeID)
71 { 84 {
85 if (Instance != this)
86 return Instance.Get(posX, posY, scopeID);
87
72 List<RegionData> ret = new List<RegionData>(); 88 List<RegionData> ret = new List<RegionData>();
73 89
74 foreach (RegionData r in m_regionData.Values) 90 foreach (RegionData r in m_regionData.Values)
@@ -85,6 +101,9 @@ namespace OpenSim.Data.Null
85 101
86 public RegionData Get(UUID regionID, UUID scopeID) 102 public RegionData Get(UUID regionID, UUID scopeID)
87 { 103 {
104 if (Instance != this)
105 return Instance.Get(regionID, scopeID);
106
88 if (m_regionData.ContainsKey(regionID)) 107 if (m_regionData.ContainsKey(regionID))
89 return m_regionData[regionID]; 108 return m_regionData[regionID];
90 109
@@ -93,6 +112,9 @@ namespace OpenSim.Data.Null
93 112
94 public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID) 113 public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID)
95 { 114 {
115 if (Instance != this)
116 return Instance.Get(startX, startY, endX, endY, scopeID);
117
96 List<RegionData> ret = new List<RegionData>(); 118 List<RegionData> ret = new List<RegionData>();
97 119
98 foreach (RegionData r in m_regionData.Values) 120 foreach (RegionData r in m_regionData.Values)
@@ -106,6 +128,9 @@ namespace OpenSim.Data.Null
106 128
107 public bool Store(RegionData data) 129 public bool Store(RegionData data)
108 { 130 {
131 if (Instance != this)
132 return Instance.Store(data);
133
109 m_regionData[data.RegionID] = data; 134 m_regionData[data.RegionID] = data;
110 135
111 return true; 136 return true;
@@ -113,6 +138,9 @@ namespace OpenSim.Data.Null
113 138
114 public bool SetDataItem(UUID regionID, string item, string value) 139 public bool SetDataItem(UUID regionID, string item, string value)
115 { 140 {
141 if (Instance != this)
142 return Instance.SetDataItem(regionID, item, value);
143
116 if (!m_regionData.ContainsKey(regionID)) 144 if (!m_regionData.ContainsKey(regionID))
117 return false; 145 return false;
118 146
@@ -123,6 +151,9 @@ namespace OpenSim.Data.Null
123 151
124 public bool Delete(UUID regionID) 152 public bool Delete(UUID regionID)
125 { 153 {
154 if (Instance != this)
155 return Instance.Delete(regionID);
156
126 if (!m_regionData.ContainsKey(regionID)) 157 if (!m_regionData.ContainsKey(regionID))
127 return false; 158 return false;
128 159
@@ -130,5 +161,37 @@ namespace OpenSim.Data.Null
130 161
131 return true; 162 return true;
132 } 163 }
164
165 public List<RegionData> GetDefaultRegions(UUID scopeID)
166 {
167 if (Instance != this)
168 return Instance.GetDefaultRegions(scopeID);
169
170 List<RegionData> ret = new List<RegionData>();
171
172 foreach (RegionData r in m_regionData.Values)
173 {
174 if ((Convert.ToInt32(r.Data["flags"]) & 1) != 0)
175 ret.Add(r);
176 }
177
178 return ret;
179 }
180
181 public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
182 {
183 if (Instance != this)
184 return Instance.GetFallbackRegions(scopeID, x, y);
185
186 List<RegionData> ret = new List<RegionData>();
187
188 foreach (RegionData r in m_regionData.Values)
189 {
190 if ((Convert.ToInt32(r.Data["flags"]) & 2) != 0)
191 ret.Add(r);
192 }
193
194 return ret;
195 }
133 } 196 }
134} 197} \ No newline at end of file