diff options
Diffstat (limited to 'OpenSim/Data/Null/NullRegionData.cs')
-rw-r--r-- | OpenSim/Data/Null/NullRegionData.cs | 69 |
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; | |||
31 | using OpenMetaverse; | 31 | using OpenMetaverse; |
32 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
33 | using OpenSim.Data; | 33 | using OpenSim.Data; |
34 | using System.Reflection; | ||
35 | using log4net; | ||
34 | 36 | ||
35 | namespace OpenSim.Data.Null | 37 | namespace 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 |