diff options
author | Justin Clark-Casey (justincc) | 2009-09-25 19:19:01 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2009-09-25 19:19:01 +0100 |
commit | 0bdf75637ff67ee443fa5c4d335c76ca594c254a (patch) | |
tree | 52c546b2118101b7bb82ccc7dee273573c8fa0a2 /OpenSim/Services | |
parent | Don't preserve full user profile details within iars for now (diff) | |
parent | More small changes to FlotsamAssetCache as per mcortez' request. (diff) | |
download | opensim-SC-0bdf75637ff67ee443fa5c4d335c76ca594c254a.zip opensim-SC-0bdf75637ff67ee443fa5c4d335c76ca594c254a.tar.gz opensim-SC-0bdf75637ff67ee443fa5c4d335c76ca594c254a.tar.bz2 opensim-SC-0bdf75637ff67ee443fa5c4d335c76ca594c254a.tar.xz |
Merge branch 'master' of ssh://justincc@opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | 277 | ||||
-rw-r--r-- | OpenSim/Services/GridService/GridService.cs | 91 | ||||
-rw-r--r-- | OpenSim/Services/Interfaces/IGridService.cs | 68 |
3 files changed, 232 insertions, 204 deletions
diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 0a867db..748892a 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | |||
@@ -97,14 +97,27 @@ namespace OpenSim.Services.Connectors | |||
97 | 97 | ||
98 | sendData["METHOD"] = "register"; | 98 | sendData["METHOD"] = "register"; |
99 | 99 | ||
100 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 100 | string reqString = ServerUtils.BuildQueryString(sendData); |
101 | m_ServerURI + "/grid", | 101 | //m_log.DebugFormat("[GRID CONNECTOR]: queryString = {0}", reqString); |
102 | ServerUtils.BuildQueryString(sendData)); | 102 | try |
103 | 103 | { | |
104 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 104 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", |
105 | m_ServerURI + "/grid", | ||
106 | reqString); | ||
107 | if (reply != string.Empty) | ||
108 | { | ||
109 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
105 | 110 | ||
106 | if ((replyData["Result"] != null) && (replyData["Result"].ToString().ToLower() == "success")) | 111 | if ((replyData["Result"] != null) && (replyData["Result"].ToString().ToLower() == "success")) |
107 | return true; | 112 | return true; |
113 | } | ||
114 | else | ||
115 | m_log.DebugFormat("[GRID CONNECTOR]: RegisterRegion received null reply"); | ||
116 | } | ||
117 | catch (Exception e) | ||
118 | { | ||
119 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
120 | } | ||
108 | 121 | ||
109 | return false; | 122 | return false; |
110 | } | 123 | } |
@@ -117,14 +130,26 @@ namespace OpenSim.Services.Connectors | |||
117 | 130 | ||
118 | sendData["METHOD"] = "deregister"; | 131 | sendData["METHOD"] = "deregister"; |
119 | 132 | ||
120 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 133 | try |
121 | m_ServerURI + "/grid", | 134 | { |
122 | ServerUtils.BuildQueryString(sendData)); | 135 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", |
136 | m_ServerURI + "/grid", | ||
137 | ServerUtils.BuildQueryString(sendData)); | ||
123 | 138 | ||
124 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 139 | if (reply != string.Empty) |
140 | { | ||
141 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
125 | 142 | ||
126 | if ((replyData["Result"] != null) && (replyData["Result"].ToString().ToLower() == "success")) | 143 | if ((replyData["Result"] != null) && (replyData["Result"].ToString().ToLower() == "success")) |
127 | return true; | 144 | return true; |
145 | } | ||
146 | else | ||
147 | m_log.DebugFormat("[GRID CONNECTOR]: DeregisterRegion received null reply"); | ||
148 | } | ||
149 | catch (Exception e) | ||
150 | { | ||
151 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
152 | } | ||
128 | 153 | ||
129 | return false; | 154 | return false; |
130 | } | 155 | } |
@@ -138,16 +163,28 @@ namespace OpenSim.Services.Connectors | |||
138 | 163 | ||
139 | sendData["METHOD"] = "get_neighbours"; | 164 | sendData["METHOD"] = "get_neighbours"; |
140 | 165 | ||
141 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 166 | List<GridRegion> rinfos = new List<GridRegion>(); |
142 | m_ServerURI + "/grid", | 167 | |
143 | ServerUtils.BuildQueryString(sendData)); | 168 | string reqString = ServerUtils.BuildQueryString(sendData); |
169 | string reply = string.Empty; | ||
170 | try | ||
171 | { | ||
172 | reply = SynchronousRestFormsRequester.MakeRequest("POST", | ||
173 | m_ServerURI + "/grid", | ||
174 | reqString); | ||
175 | } | ||
176 | catch (Exception e) | ||
177 | { | ||
178 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
179 | return rinfos; | ||
180 | } | ||
144 | 181 | ||
145 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 182 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); |
146 | 183 | ||
147 | List<GridRegion> rinfos = new List<GridRegion>(); | ||
148 | if (replyData != null) | 184 | if (replyData != null) |
149 | { | 185 | { |
150 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; | 186 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; |
187 | //m_log.DebugFormat("[GRID CONNECTOR]: get neighbours returned {0} elements", rinfosList.Count); | ||
151 | foreach (object r in rinfosList) | 188 | foreach (object r in rinfosList) |
152 | { | 189 | { |
153 | if (r is Dictionary<string, object>) | 190 | if (r is Dictionary<string, object>) |
@@ -156,8 +193,8 @@ namespace OpenSim.Services.Connectors | |||
156 | rinfos.Add(rinfo); | 193 | rinfos.Add(rinfo); |
157 | } | 194 | } |
158 | else | 195 | else |
159 | m_log.DebugFormat("[GRID CONNECTOR]: GetNeighbours {0}, {1} received invalid response", | 196 | m_log.DebugFormat("[GRID CONNECTOR]: GetNeighbours {0}, {1} received invalid response type {2}", |
160 | scopeID, regionID); | 197 | scopeID, regionID, r.GetType()); |
161 | } | 198 | } |
162 | } | 199 | } |
163 | else | 200 | else |
@@ -176,24 +213,39 @@ namespace OpenSim.Services.Connectors | |||
176 | 213 | ||
177 | sendData["METHOD"] = "get_region_by_uuid"; | 214 | sendData["METHOD"] = "get_region_by_uuid"; |
178 | 215 | ||
179 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 216 | string reply = string.Empty; |
180 | m_ServerURI + "/grid", | 217 | try |
181 | ServerUtils.BuildQueryString(sendData)); | 218 | { |
182 | 219 | reply = SynchronousRestFormsRequester.MakeRequest("POST", | |
183 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 220 | m_ServerURI + "/grid", |
221 | ServerUtils.BuildQueryString(sendData)); | ||
222 | } | ||
223 | catch (Exception e) | ||
224 | { | ||
225 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
226 | return null; | ||
227 | } | ||
184 | 228 | ||
185 | GridRegion rinfo = null; | 229 | GridRegion rinfo = null; |
186 | if ((replyData != null) && (replyData["result"] != null)) | 230 | |
231 | if (reply != string.Empty) | ||
187 | { | 232 | { |
188 | if (replyData["result"] is Dictionary<string, object>) | 233 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); |
189 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | 234 | |
235 | if ((replyData != null) && (replyData["result"] != null)) | ||
236 | { | ||
237 | if (replyData["result"] is Dictionary<string, object>) | ||
238 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | ||
239 | //else | ||
240 | // m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received null response", | ||
241 | // scopeID, regionID); | ||
242 | } | ||
190 | else | 243 | else |
191 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received invalid response", | 244 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received null response", |
192 | scopeID, regionID); | 245 | scopeID, regionID); |
193 | } | 246 | } |
194 | else | 247 | else |
195 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received null response", | 248 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID received null reply"); |
196 | scopeID, regionID); | ||
197 | 249 | ||
198 | return rinfo; | 250 | return rinfo; |
199 | } | 251 | } |
@@ -207,25 +259,38 @@ namespace OpenSim.Services.Connectors | |||
207 | sendData["Y"] = y.ToString(); | 259 | sendData["Y"] = y.ToString(); |
208 | 260 | ||
209 | sendData["METHOD"] = "get_region_by_position"; | 261 | sendData["METHOD"] = "get_region_by_position"; |
210 | 262 | string reply = string.Empty; | |
211 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 263 | try |
212 | m_ServerURI + "/grid", | 264 | { |
213 | ServerUtils.BuildQueryString(sendData)); | 265 | reply = SynchronousRestFormsRequester.MakeRequest("POST", |
214 | 266 | m_ServerURI + "/grid", | |
215 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 267 | ServerUtils.BuildQueryString(sendData)); |
268 | } | ||
269 | catch (Exception e) | ||
270 | { | ||
271 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
272 | return null; | ||
273 | } | ||
216 | 274 | ||
217 | GridRegion rinfo = null; | 275 | GridRegion rinfo = null; |
218 | if ((replyData != null) && (replyData["result"] != null)) | 276 | if (reply != string.Empty) |
219 | { | 277 | { |
220 | if (replyData["result"] is Dictionary<string, object>) | 278 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); |
221 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | 279 | |
280 | if ((replyData != null) && (replyData["result"] != null)) | ||
281 | { | ||
282 | if (replyData["result"] is Dictionary<string, object>) | ||
283 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | ||
284 | else | ||
285 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received invalid response", | ||
286 | scopeID, x, y); | ||
287 | } | ||
222 | else | 288 | else |
223 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received invalid response", | 289 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received null response", |
224 | scopeID, x, y); | 290 | scopeID, x, y); |
225 | } | 291 | } |
226 | else | 292 | else |
227 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received null response", | 293 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition received null reply"); |
228 | scopeID, x, y); | ||
229 | 294 | ||
230 | return rinfo; | 295 | return rinfo; |
231 | } | 296 | } |
@@ -238,25 +303,35 @@ namespace OpenSim.Services.Connectors | |||
238 | sendData["NAME"] = regionName; | 303 | sendData["NAME"] = regionName; |
239 | 304 | ||
240 | sendData["METHOD"] = "get_region_by_name"; | 305 | sendData["METHOD"] = "get_region_by_name"; |
241 | 306 | string reply = string.Empty; | |
242 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 307 | try |
243 | m_ServerURI + "/grid", | 308 | { |
244 | ServerUtils.BuildQueryString(sendData)); | 309 | reply = SynchronousRestFormsRequester.MakeRequest("POST", |
245 | 310 | m_ServerURI + "/grid", | |
246 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 311 | ServerUtils.BuildQueryString(sendData)); |
312 | } | ||
313 | catch (Exception e) | ||
314 | { | ||
315 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
316 | return null; | ||
317 | } | ||
247 | 318 | ||
248 | GridRegion rinfo = null; | 319 | GridRegion rinfo = null; |
249 | if ((replyData != null) && (replyData["result"] != null)) | 320 | if (reply != string.Empty) |
250 | { | 321 | { |
251 | if (replyData["result"] is Dictionary<string, object>) | 322 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); |
252 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | 323 | |
324 | if ((replyData != null) && (replyData["result"] != null)) | ||
325 | { | ||
326 | if (replyData["result"] is Dictionary<string, object>) | ||
327 | rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]); | ||
328 | } | ||
253 | else | 329 | else |
254 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1} received invalid response", | 330 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1} received null response", |
255 | scopeID, regionName); | 331 | scopeID, regionName); |
256 | } | 332 | } |
257 | else | 333 | else |
258 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1} received null response", | 334 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByName received null reply"); |
259 | scopeID, regionName); | ||
260 | 335 | ||
261 | return rinfo; | 336 | return rinfo; |
262 | } | 337 | } |
@@ -270,32 +345,45 @@ namespace OpenSim.Services.Connectors | |||
270 | sendData["MAX"] = maxNumber.ToString(); | 345 | sendData["MAX"] = maxNumber.ToString(); |
271 | 346 | ||
272 | sendData["METHOD"] = "get_regions_by_name"; | 347 | sendData["METHOD"] = "get_regions_by_name"; |
273 | |||
274 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | ||
275 | m_ServerURI + "/grid", | ||
276 | ServerUtils.BuildQueryString(sendData)); | ||
277 | |||
278 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
279 | |||
280 | List<GridRegion> rinfos = new List<GridRegion>(); | 348 | List<GridRegion> rinfos = new List<GridRegion>(); |
281 | if (replyData != null) | 349 | string reply = string.Empty; |
350 | try | ||
282 | { | 351 | { |
283 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; | 352 | reply = SynchronousRestFormsRequester.MakeRequest("POST", |
284 | foreach (object r in rinfosList) | 353 | m_ServerURI + "/grid", |
354 | ServerUtils.BuildQueryString(sendData)); | ||
355 | } | ||
356 | catch (Exception e) | ||
357 | { | ||
358 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
359 | return rinfos; | ||
360 | } | ||
361 | |||
362 | if (reply != string.Empty) | ||
363 | { | ||
364 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | ||
365 | |||
366 | if (replyData != null) | ||
285 | { | 367 | { |
286 | if (r is Dictionary<string, object>) | 368 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; |
369 | foreach (object r in rinfosList) | ||
287 | { | 370 | { |
288 | GridRegion rinfo = new GridRegion((Dictionary<string, object>)r); | 371 | if (r is Dictionary<string, object>) |
289 | rinfos.Add(rinfo); | 372 | { |
373 | GridRegion rinfo = new GridRegion((Dictionary<string, object>)r); | ||
374 | rinfos.Add(rinfo); | ||
375 | } | ||
376 | else | ||
377 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received invalid response", | ||
378 | scopeID, name, maxNumber); | ||
290 | } | 379 | } |
291 | else | ||
292 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received invalid response", | ||
293 | scopeID, name, maxNumber); | ||
294 | } | 380 | } |
381 | else | ||
382 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received null response", | ||
383 | scopeID, name, maxNumber); | ||
295 | } | 384 | } |
296 | else | 385 | else |
297 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received null response", | 386 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName received null reply"); |
298 | scopeID, name, maxNumber); | ||
299 | 387 | ||
300 | return rinfos; | 388 | return rinfos; |
301 | } | 389 | } |
@@ -312,31 +400,44 @@ namespace OpenSim.Services.Connectors | |||
312 | 400 | ||
313 | sendData["METHOD"] = "get_region_range"; | 401 | sendData["METHOD"] = "get_region_range"; |
314 | 402 | ||
315 | string reply = SynchronousRestFormsRequester.MakeRequest("POST", | 403 | List<GridRegion> rinfos = new List<GridRegion>(); |
316 | m_ServerURI + "/grid", | 404 | string reply = string.Empty; |
317 | ServerUtils.BuildQueryString(sendData)); | 405 | try |
406 | { | ||
407 | reply = SynchronousRestFormsRequester.MakeRequest("POST", | ||
408 | m_ServerURI + "/grid", | ||
409 | ServerUtils.BuildQueryString(sendData)); | ||
318 | 410 | ||
319 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); | 411 | //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply); |
412 | } | ||
413 | catch (Exception e) | ||
414 | { | ||
415 | m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); | ||
416 | return rinfos; | ||
417 | } | ||
320 | 418 | ||
321 | List<GridRegion> rinfos = new List<GridRegion>(); | 419 | if (reply != string.Empty) |
322 | if (replyData != null) | ||
323 | { | 420 | { |
324 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; | 421 | Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); |
325 | foreach (object r in rinfosList) | 422 | |
423 | if (replyData != null) | ||
326 | { | 424 | { |
327 | if (r is Dictionary<string, object>) | 425 | Dictionary<string, object>.ValueCollection rinfosList = replyData.Values; |
426 | foreach (object r in rinfosList) | ||
328 | { | 427 | { |
329 | GridRegion rinfo = new GridRegion((Dictionary<string, object>)r); | 428 | if (r is Dictionary<string, object>) |
330 | rinfos.Add(rinfo); | 429 | { |
430 | GridRegion rinfo = new GridRegion((Dictionary<string, object>)r); | ||
431 | rinfos.Add(rinfo); | ||
432 | } | ||
331 | } | 433 | } |
332 | else | ||
333 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange {0}, {1}-{2} {3}-{4} received invalid response", | ||
334 | scopeID, xmin, xmax, ymin, ymax); | ||
335 | } | 434 | } |
435 | else | ||
436 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange {0}, {1}-{2} {3}-{4} received null response", | ||
437 | scopeID, xmin, xmax, ymin, ymax); | ||
336 | } | 438 | } |
337 | else | 439 | else |
338 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange {0}, {1}-{2} {3}-{4} received null response", | 440 | m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange received null reply"); |
339 | scopeID, xmin, xmax, ymin, ymax); | ||
340 | 441 | ||
341 | return rinfos; | 442 | return rinfos; |
342 | } | 443 | } |
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 01ffa1d..991acf2 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs | |||
@@ -50,35 +50,27 @@ namespace OpenSim.Services.GridService | |||
50 | : base(config) | 50 | : base(config) |
51 | { | 51 | { |
52 | m_log.DebugFormat("[GRID SERVICE]: Starting..."); | 52 | m_log.DebugFormat("[GRID SERVICE]: Starting..."); |
53 | MainConsole.Instance.Commands.AddCommand("kfs", false, | ||
54 | "show digest", | ||
55 | "show digest <ID>", | ||
56 | "Show asset digest", HandleShowDigest); | ||
57 | |||
58 | MainConsole.Instance.Commands.AddCommand("kfs", false, | ||
59 | "delete asset", | ||
60 | "delete asset <ID>", | ||
61 | "Delete asset from database", HandleDeleteAsset); | ||
62 | |||
63 | } | 53 | } |
64 | 54 | ||
65 | #region IGridService | 55 | #region IGridService |
66 | 56 | ||
67 | public bool RegisterRegion(UUID scopeID, GridRegion regionInfos) | 57 | public bool RegisterRegion(UUID scopeID, GridRegion regionInfos) |
68 | { | 58 | { |
69 | if (m_Database.Get(regionInfos.RegionID, scopeID) != null) | ||
70 | { | ||
71 | m_log.WarnFormat("[GRID SERVICE]: Region {0} already registered in scope {1}.", regionInfos.RegionID, scopeID); | ||
72 | return false; | ||
73 | } | ||
74 | // This needs better sanity testing. What if regionInfo is registering in | 59 | // This needs better sanity testing. What if regionInfo is registering in |
75 | // overlapping coords? | 60 | // overlapping coords? |
76 | if (m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID) != null) | 61 | RegionData region = m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); |
62 | if ((region != null) && (region.RegionID != regionInfos.RegionID)) | ||
77 | { | 63 | { |
78 | m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register in coordinates {1}, {2} which are already in use in scope {3}.", | 64 | m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register in coordinates {1}, {2} which are already in use in scope {3}.", |
79 | regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); | 65 | regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); |
80 | return false; | 66 | return false; |
81 | } | 67 | } |
68 | if ((region != null) && (region.RegionID == regionInfos.RegionID) && | ||
69 | ((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY))) | ||
70 | { | ||
71 | // Region reregistering in other coordinates. Delete the old entry | ||
72 | m_Database.Delete(regionInfos.RegionID); | ||
73 | } | ||
82 | 74 | ||
83 | // Everything is ok, let's register | 75 | // Everything is ok, let's register |
84 | RegionData rdata = RegionInfo2RegionData(regionInfos); | 76 | RegionData rdata = RegionInfo2RegionData(regionInfos); |
@@ -183,9 +175,9 @@ namespace OpenSim.Services.GridService | |||
183 | rdata.posX = (int)rinfo.RegionLocX; | 175 | rdata.posX = (int)rinfo.RegionLocX; |
184 | rdata.posY = (int)rinfo.RegionLocY; | 176 | rdata.posY = (int)rinfo.RegionLocY; |
185 | rdata.RegionID = rinfo.RegionID; | 177 | rdata.RegionID = rinfo.RegionID; |
186 | rdata.Data = rinfo.ToKeyValuePairs(); | ||
187 | rdata.RegionName = rinfo.RegionName; | 178 | rdata.RegionName = rinfo.RegionName; |
188 | 179 | rdata.Data = rinfo.ToKeyValuePairs(); | |
180 | rdata.Data["regionHandle"] = Utils.UIntsToLong((uint)rdata.posX, (uint)rdata.posY); | ||
189 | return rdata; | 181 | return rdata; |
190 | } | 182 | } |
191 | 183 | ||
@@ -196,73 +188,12 @@ namespace OpenSim.Services.GridService | |||
196 | rinfo.RegionLocY = rdata.posY; | 188 | rinfo.RegionLocY = rdata.posY; |
197 | rinfo.RegionID = rdata.RegionID; | 189 | rinfo.RegionID = rdata.RegionID; |
198 | rinfo.RegionName = rdata.RegionName; | 190 | rinfo.RegionName = rdata.RegionName; |
191 | rinfo.ScopeID = rdata.ScopeID; | ||
199 | 192 | ||
200 | return rinfo; | 193 | return rinfo; |
201 | } | 194 | } |
202 | 195 | ||
203 | #endregion | 196 | #endregion |
204 | 197 | ||
205 | void HandleShowDigest(string module, string[] args) | ||
206 | { | ||
207 | //if (args.Length < 3) | ||
208 | //{ | ||
209 | // MainConsole.Instance.Output("Syntax: show digest <ID>"); | ||
210 | // return; | ||
211 | //} | ||
212 | |||
213 | //AssetBase asset = Get(args[2]); | ||
214 | |||
215 | //if (asset == null || asset.Data.Length == 0) | ||
216 | //{ | ||
217 | // MainConsole.Instance.Output("Asset not found"); | ||
218 | // return; | ||
219 | //} | ||
220 | |||
221 | //int i; | ||
222 | |||
223 | //MainConsole.Instance.Output(String.Format("Name: {0}", asset.Name)); | ||
224 | //MainConsole.Instance.Output(String.Format("Description: {0}", asset.Description)); | ||
225 | //MainConsole.Instance.Output(String.Format("Type: {0}", asset.Type)); | ||
226 | //MainConsole.Instance.Output(String.Format("Content-type: {0}", asset.Metadata.ContentType)); | ||
227 | |||
228 | //for (i = 0 ; i < 5 ; i++) | ||
229 | //{ | ||
230 | // int off = i * 16; | ||
231 | // if (asset.Data.Length <= off) | ||
232 | // break; | ||
233 | // int len = 16; | ||
234 | // if (asset.Data.Length < off + len) | ||
235 | // len = asset.Data.Length - off; | ||
236 | |||
237 | // byte[] line = new byte[len]; | ||
238 | // Array.Copy(asset.Data, off, line, 0, len); | ||
239 | |||
240 | // string text = BitConverter.ToString(line); | ||
241 | // MainConsole.Instance.Output(String.Format("{0:x4}: {1}", off, text)); | ||
242 | //} | ||
243 | } | ||
244 | |||
245 | void HandleDeleteAsset(string module, string[] args) | ||
246 | { | ||
247 | //if (args.Length < 3) | ||
248 | //{ | ||
249 | // MainConsole.Instance.Output("Syntax: delete asset <ID>"); | ||
250 | // return; | ||
251 | //} | ||
252 | |||
253 | //AssetBase asset = Get(args[2]); | ||
254 | |||
255 | //if (asset == null || asset.Data.Length == 0) | ||
256 | // MainConsole.Instance.Output("Asset not found"); | ||
257 | // return; | ||
258 | //} | ||
259 | |||
260 | //Delete(args[2]); | ||
261 | |||
262 | ////MainConsole.Instance.Output("Asset deleted"); | ||
263 | //// TODO: Implement this | ||
264 | |||
265 | //MainConsole.Instance.Output("Asset deletion not supported by database"); | ||
266 | } | ||
267 | } | 198 | } |
268 | } | 199 | } |
diff --git a/OpenSim/Services/Interfaces/IGridService.cs b/OpenSim/Services/Interfaces/IGridService.cs index a188f7e..ce432ab 100644 --- a/OpenSim/Services/Interfaces/IGridService.cs +++ b/OpenSim/Services/Interfaces/IGridService.cs | |||
@@ -263,59 +263,55 @@ namespace OpenSim.Services.Interfaces | |||
263 | kvp["uuid"] = RegionID.ToString(); | 263 | kvp["uuid"] = RegionID.ToString(); |
264 | kvp["locX"] = RegionLocX.ToString(); | 264 | kvp["locX"] = RegionLocX.ToString(); |
265 | kvp["locY"] = RegionLocY.ToString(); | 265 | kvp["locY"] = RegionLocY.ToString(); |
266 | kvp["external_ip_address"] = ExternalEndPoint.Address.ToString(); | 266 | kvp["regionName"] = RegionName; |
267 | kvp["external_port"] = ExternalEndPoint.Port.ToString(); | 267 | kvp["serverIP"] = ExternalHostName; //ExternalEndPoint.Address.ToString(); |
268 | kvp["external_host_name"] = ExternalHostName; | 268 | kvp["serverHttpPort"] = HttpPort.ToString(); |
269 | kvp["http_port"] = HttpPort.ToString(); | 269 | kvp["serverURI"] = ServerURI; |
270 | kvp["internal_ip_address"] = InternalEndPoint.Address.ToString(); | 270 | kvp["serverPort"] = InternalEndPoint.Port.ToString(); |
271 | kvp["internal_port"] = InternalEndPoint.Port.ToString(); | ||
272 | kvp["alternate_ports"] = m_allow_alternate_ports.ToString(); | ||
273 | kvp["server_uri"] = ServerURI; | ||
274 | 271 | ||
275 | return kvp; | 272 | return kvp; |
276 | } | 273 | } |
277 | 274 | ||
278 | public GridRegion(Dictionary<string, object> kvp) | 275 | public GridRegion(Dictionary<string, object> kvp) |
279 | { | 276 | { |
280 | if ((kvp["external_ip_address"] != null) && (kvp["external_port"] != null)) | 277 | if (kvp.ContainsKey("uuid")) |
281 | { | 278 | RegionID = new UUID((string)kvp["uuid"]); |
282 | int port = 0; | ||
283 | Int32.TryParse((string)kvp["external_port"], out port); | ||
284 | IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["external_ip_address"]), port); | ||
285 | ExternalEndPoint = ep; | ||
286 | } | ||
287 | else | ||
288 | ExternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | ||
289 | 279 | ||
290 | if (kvp["external_host_name"] != null) | 280 | if (kvp.ContainsKey("locX")) |
291 | ExternalHostName = (string)kvp["external_host_name"]; | 281 | RegionLocX = Convert.ToInt32((string)kvp["locX"]); |
292 | 282 | ||
293 | if (kvp["http_port"] != null) | 283 | if (kvp.ContainsKey("locY")) |
284 | RegionLocY = Convert.ToInt32((string)kvp["locY"]); | ||
285 | |||
286 | if (kvp.ContainsKey("regionName")) | ||
287 | RegionName = (string)kvp["regionName"]; | ||
288 | |||
289 | if (kvp.ContainsKey("serverIP")) | ||
294 | { | 290 | { |
295 | UInt32 port = 0; | 291 | //int port = 0; |
296 | UInt32.TryParse((string)kvp["http_port"], out port); | 292 | //Int32.TryParse((string)kvp["serverPort"], out port); |
297 | HttpPort = port; | 293 | //IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["serverIP"]), port); |
294 | ExternalHostName = (string)kvp["serverIP"]; | ||
298 | } | 295 | } |
296 | else | ||
297 | ExternalHostName = "127.0.0.1"; | ||
299 | 298 | ||
300 | if ((kvp["internal_ip_address"] != null) && (kvp["internal_port"] != null)) | 299 | if (kvp.ContainsKey("serverPort")) |
301 | { | 300 | { |
302 | int port = 0; | 301 | Int32 port = 0; |
303 | Int32.TryParse((string)kvp["internal_port"], out port); | 302 | Int32.TryParse((string)kvp["serverPort"], out port); |
304 | IPEndPoint ep = new IPEndPoint(IPAddress.Parse((string)kvp["internal_ip_address"]), port); | 303 | InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port); |
305 | InternalEndPoint = ep; | ||
306 | } | 304 | } |
307 | else | ||
308 | InternalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | ||
309 | 305 | ||
310 | if (kvp["alternate_ports"] != null) | 306 | if (kvp.ContainsKey("serverHttpPort")) |
311 | { | 307 | { |
312 | bool alts = false; | 308 | UInt32 port = 0; |
313 | Boolean.TryParse((string)kvp["alternate_ports"], out alts); | 309 | UInt32.TryParse((string)kvp["serverHttpPort"], out port); |
314 | m_allow_alternate_ports = alts; | 310 | HttpPort = port; |
315 | } | 311 | } |
316 | 312 | ||
317 | if (kvp["server_uri"] != null) | 313 | if (kvp.ContainsKey("serverURI")) |
318 | ServerURI = (string)kvp["server_uri"]; | 314 | ServerURI = (string)kvp["serverURI"]; |
319 | } | 315 | } |
320 | } | 316 | } |
321 | 317 | ||