aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-05-09 23:25:01 +0100
committerJustin Clark-Casey (justincc)2012-05-09 23:25:01 +0100
commitd8a78374aa11c5460d6e58a6f4110fca61dfded4 (patch)
tree4214094c092eeff11f2dcd60f71cfc294ab887be /OpenSim/Services/Connectors/Grid/GridServicesConnector.cs
parentImprove logging on the prim inventory script asset request path for future use. (diff)
downloadopensim-SC_OLD-d8a78374aa11c5460d6e58a6f4110fca61dfded4.zip
opensim-SC_OLD-d8a78374aa11c5460d6e58a6f4110fca61dfded4.tar.gz
opensim-SC_OLD-d8a78374aa11c5460d6e58a6f4110fca61dfded4.tar.bz2
opensim-SC_OLD-d8a78374aa11c5460d6e58a6f4110fca61dfded4.tar.xz
Where necessary, rename OpenSim/Services/Connectors/*.cs files to reflect the actual class names.
This is usually because the file name was singular (*Service*) but the class name was plural (*Services*). This is to make configuration easier rather than having to look in the c# code itself to find the slightly different name of the connector. This does not affect existing configuration since the files are being renamed rather than the classes.
Diffstat (limited to 'OpenSim/Services/Connectors/Grid/GridServicesConnector.cs')
-rw-r--r--OpenSim/Services/Connectors/Grid/GridServicesConnector.cs671
1 files changed, 671 insertions, 0 deletions
diff --git a/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs b/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs
new file mode 100644
index 0000000..34ed0d7
--- /dev/null
+++ b/OpenSim/Services/Connectors/Grid/GridServicesConnector.cs
@@ -0,0 +1,671 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using log4net;
29using System;
30using System.Collections.Generic;
31using System.IO;
32using System.Reflection;
33using Nini.Config;
34using OpenSim.Framework;
35using OpenSim.Framework.Communications;
36using OpenSim.Services.Interfaces;
37using GridRegion = OpenSim.Services.Interfaces.GridRegion;
38using OpenSim.Server.Base;
39using OpenMetaverse;
40
41namespace OpenSim.Services.Connectors
42{
43 public class GridServicesConnector : IGridService
44 {
45 private static readonly ILog m_log =
46 LogManager.GetLogger(
47 MethodBase.GetCurrentMethod().DeclaringType);
48
49 private string m_ServerURI = String.Empty;
50
51 public GridServicesConnector()
52 {
53 }
54
55 public GridServicesConnector(string serverURI)
56 {
57 m_ServerURI = serverURI.TrimEnd('/');
58 }
59
60 public GridServicesConnector(IConfigSource source)
61 {
62 Initialise(source);
63 }
64
65 public virtual void Initialise(IConfigSource source)
66 {
67 IConfig gridConfig = source.Configs["GridService"];
68 if (gridConfig == null)
69 {
70 m_log.Error("[GRID CONNECTOR]: GridService missing from OpenSim.ini");
71 throw new Exception("Grid connector init error");
72 }
73
74 string serviceURI = gridConfig.GetString("GridServerURI",
75 String.Empty);
76
77 if (serviceURI == String.Empty)
78 {
79 m_log.Error("[GRID CONNECTOR]: No Server URI named in section GridService");
80 throw new Exception("Grid connector init error");
81 }
82 m_ServerURI = serviceURI;
83 }
84
85
86 #region IGridService
87
88 public string RegisterRegion(UUID scopeID, GridRegion regionInfo)
89 {
90 Dictionary<string, object> rinfo = regionInfo.ToKeyValuePairs();
91 Dictionary<string, object> sendData = new Dictionary<string,object>();
92 foreach (KeyValuePair<string, object> kvp in rinfo)
93 sendData[kvp.Key] = (string)kvp.Value;
94
95 sendData["SCOPEID"] = scopeID.ToString();
96 sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
97 sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
98 sendData["METHOD"] = "register";
99
100 string reqString = ServerUtils.BuildQueryString(sendData);
101 string uri = m_ServerURI + "/grid";
102 // m_log.DebugFormat("[GRID CONNECTOR]: queryString = {0}", reqString);
103 try
104 {
105 string reply = SynchronousRestFormsRequester.MakeRequest("POST", uri, reqString);
106 if (reply != string.Empty)
107 {
108 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
109
110 if (replyData.ContainsKey("Result")&& (replyData["Result"].ToString().ToLower() == "success"))
111 {
112 return String.Empty;
113 }
114 else if (replyData.ContainsKey("Result")&& (replyData["Result"].ToString().ToLower() == "failure"))
115 {
116 m_log.ErrorFormat(
117 "[GRID CONNECTOR]: Registration failed: {0} when contacting {1}", replyData["Message"], uri);
118
119 return replyData["Message"].ToString();
120 }
121 else if (!replyData.ContainsKey("Result"))
122 {
123 m_log.ErrorFormat(
124 "[GRID CONNECTOR]: reply data does not contain result field when contacting {0}", uri);
125 }
126 else
127 {
128 m_log.ErrorFormat(
129 "[GRID CONNECTOR]: unexpected result {0} when contacting {1}", replyData["Result"], uri);
130
131 return "Unexpected result " + replyData["Result"].ToString();
132 }
133 }
134 else
135 {
136 m_log.ErrorFormat(
137 "[GRID CONNECTOR]: RegisterRegion received null reply when contacting grid server at {0}", uri);
138 }
139 }
140 catch (Exception e)
141 {
142 m_log.ErrorFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
143 }
144
145 return string.Format("Error communicating with the grid service at {0}", uri);
146 }
147
148 public bool DeregisterRegion(UUID regionID)
149 {
150 Dictionary<string, object> sendData = new Dictionary<string, object>();
151
152 sendData["REGIONID"] = regionID.ToString();
153
154 sendData["METHOD"] = "deregister";
155
156 string uri = m_ServerURI + "/grid";
157
158 try
159 {
160 string reply
161 = SynchronousRestFormsRequester.MakeRequest("POST", uri, ServerUtils.BuildQueryString(sendData));
162
163 if (reply != string.Empty)
164 {
165 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
166
167 if ((replyData["Result"] != null) && (replyData["Result"].ToString().ToLower() == "success"))
168 return true;
169 }
170 else
171 m_log.DebugFormat("[GRID CONNECTOR]: DeregisterRegion received null reply");
172 }
173 catch (Exception e)
174 {
175 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
176 }
177
178 return false;
179 }
180
181 public List<GridRegion> GetNeighbours(UUID scopeID, UUID regionID)
182 {
183 Dictionary<string, object> sendData = new Dictionary<string, object>();
184
185 sendData["SCOPEID"] = scopeID.ToString();
186 sendData["REGIONID"] = regionID.ToString();
187
188 sendData["METHOD"] = "get_neighbours";
189
190 List<GridRegion> rinfos = new List<GridRegion>();
191
192 string reqString = ServerUtils.BuildQueryString(sendData);
193 string reply = string.Empty;
194 string uri = m_ServerURI + "/grid";
195
196 try
197 {
198 reply = SynchronousRestFormsRequester.MakeRequest("POST", uri, reqString);
199 }
200 catch (Exception e)
201 {
202 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
203 return rinfos;
204 }
205
206 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
207
208 if (replyData != null)
209 {
210 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
211 //m_log.DebugFormat("[GRID CONNECTOR]: get neighbours returned {0} elements", rinfosList.Count);
212 foreach (object r in rinfosList)
213 {
214 if (r is Dictionary<string, object>)
215 {
216 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
217 rinfos.Add(rinfo);
218 }
219 }
220 }
221 else
222 m_log.DebugFormat("[GRID CONNECTOR]: GetNeighbours {0}, {1} received null response",
223 scopeID, regionID);
224
225 return rinfos;
226 }
227
228 public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID)
229 {
230 Dictionary<string, object> sendData = new Dictionary<string, object>();
231
232 sendData["SCOPEID"] = scopeID.ToString();
233 sendData["REGIONID"] = regionID.ToString();
234
235 sendData["METHOD"] = "get_region_by_uuid";
236
237 string reply = string.Empty;
238 string uri = m_ServerURI + "/grid";
239 try
240 {
241 reply = SynchronousRestFormsRequester.MakeRequest("POST", uri, ServerUtils.BuildQueryString(sendData));
242 }
243 catch (Exception e)
244 {
245 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
246 return null;
247 }
248
249 GridRegion rinfo = null;
250
251 if (reply != string.Empty)
252 {
253 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
254
255 if ((replyData != null) && (replyData["result"] != null))
256 {
257 if (replyData["result"] is Dictionary<string, object>)
258 rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]);
259 //else
260 // m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received null response",
261 // scopeID, regionID);
262 }
263 else
264 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID {0}, {1} received null response",
265 scopeID, regionID);
266 }
267 else
268 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByUUID received null reply");
269
270 return rinfo;
271 }
272
273 public GridRegion GetRegionByPosition(UUID scopeID, int x, int y)
274 {
275 Dictionary<string, object> sendData = new Dictionary<string, object>();
276
277 sendData["SCOPEID"] = scopeID.ToString();
278 sendData["X"] = x.ToString();
279 sendData["Y"] = y.ToString();
280
281 sendData["METHOD"] = "get_region_by_position";
282 string reply = string.Empty;
283 string uri = m_ServerURI + "/grid";
284 try
285 {
286 reply = SynchronousRestFormsRequester.MakeRequest("POST",
287 uri,
288 ServerUtils.BuildQueryString(sendData));
289 }
290 catch (Exception e)
291 {
292 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
293 return null;
294 }
295
296 GridRegion rinfo = null;
297 if (reply != string.Empty)
298 {
299 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
300
301 if ((replyData != null) && (replyData["result"] != null))
302 {
303 if (replyData["result"] is Dictionary<string, object>)
304 rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]);
305 //else
306 // m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received no region",
307 // scopeID, x, y);
308 }
309 else
310 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received null response",
311 scopeID, x, y);
312 }
313 else
314 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition received null reply");
315
316 return rinfo;
317 }
318
319 public GridRegion GetRegionByName(UUID scopeID, string regionName)
320 {
321 Dictionary<string, object> sendData = new Dictionary<string, object>();
322
323 sendData["SCOPEID"] = scopeID.ToString();
324 sendData["NAME"] = regionName;
325
326 sendData["METHOD"] = "get_region_by_name";
327 string reply = string.Empty;
328 string uri = m_ServerURI + "/grid";
329 try
330 {
331 reply = SynchronousRestFormsRequester.MakeRequest("POST",
332 uri,
333 ServerUtils.BuildQueryString(sendData));
334 }
335 catch (Exception e)
336 {
337 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
338 return null;
339 }
340
341 GridRegion rinfo = null;
342 if (reply != string.Empty)
343 {
344 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
345
346 if ((replyData != null) && (replyData["result"] != null))
347 {
348 if (replyData["result"] is Dictionary<string, object>)
349 rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]);
350 }
351 else
352 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1} received null response",
353 scopeID, regionName);
354 }
355 else
356 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByName received null reply");
357
358 return rinfo;
359 }
360
361 public List<GridRegion> GetRegionsByName(UUID scopeID, string name, int maxNumber)
362 {
363 Dictionary<string, object> sendData = new Dictionary<string, object>();
364
365 sendData["SCOPEID"] = scopeID.ToString();
366 sendData["NAME"] = name;
367 sendData["MAX"] = maxNumber.ToString();
368
369 sendData["METHOD"] = "get_regions_by_name";
370 List<GridRegion> rinfos = new List<GridRegion>();
371 string reply = string.Empty;
372 string uri = m_ServerURI + "/grid";
373 try
374 {
375 reply = SynchronousRestFormsRequester.MakeRequest("POST",
376 uri,
377 ServerUtils.BuildQueryString(sendData));
378 }
379 catch (Exception e)
380 {
381 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
382 return rinfos;
383 }
384
385 if (reply != string.Empty)
386 {
387 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
388
389 if (replyData != null)
390 {
391 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
392 foreach (object r in rinfosList)
393 {
394 if (r is Dictionary<string, object>)
395 {
396 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
397 rinfos.Add(rinfo);
398 }
399 }
400 }
401 else
402 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received null response",
403 scopeID, name, maxNumber);
404 }
405 else
406 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName received null reply");
407
408 return rinfos;
409 }
410
411 public List<GridRegion> GetRegionRange(UUID scopeID, int xmin, int xmax, int ymin, int ymax)
412 {
413 Dictionary<string, object> sendData = new Dictionary<string, object>();
414
415 sendData["SCOPEID"] = scopeID.ToString();
416 sendData["XMIN"] = xmin.ToString();
417 sendData["XMAX"] = xmax.ToString();
418 sendData["YMIN"] = ymin.ToString();
419 sendData["YMAX"] = ymax.ToString();
420
421 sendData["METHOD"] = "get_region_range";
422
423 List<GridRegion> rinfos = new List<GridRegion>();
424 string reply = string.Empty;
425 string uri = m_ServerURI + "/grid";
426
427 try
428 {
429 reply = SynchronousRestFormsRequester.MakeRequest("POST",
430 uri,
431 ServerUtils.BuildQueryString(sendData));
432
433 //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply);
434 }
435 catch (Exception e)
436 {
437 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
438 return rinfos;
439 }
440
441 if (reply != string.Empty)
442 {
443 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
444
445 if (replyData != null)
446 {
447 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
448 foreach (object r in rinfosList)
449 {
450 if (r is Dictionary<string, object>)
451 {
452 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
453 rinfos.Add(rinfo);
454 }
455 }
456 }
457 else
458 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange {0}, {1}-{2} {3}-{4} received null response",
459 scopeID, xmin, xmax, ymin, ymax);
460 }
461 else
462 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionRange received null reply");
463
464 return rinfos;
465 }
466
467 public List<GridRegion> GetDefaultRegions(UUID scopeID)
468 {
469 Dictionary<string, object> sendData = new Dictionary<string, object>();
470
471 sendData["SCOPEID"] = scopeID.ToString();
472
473 sendData["METHOD"] = "get_default_regions";
474
475 List<GridRegion> rinfos = new List<GridRegion>();
476 string reply = string.Empty;
477 string uri = m_ServerURI + "/grid";
478 try
479 {
480 reply = SynchronousRestFormsRequester.MakeRequest("POST",
481 uri,
482 ServerUtils.BuildQueryString(sendData));
483
484 //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply);
485 }
486 catch (Exception e)
487 {
488 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
489 return rinfos;
490 }
491
492 if (reply != string.Empty)
493 {
494 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
495
496 if (replyData != null)
497 {
498 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
499 foreach (object r in rinfosList)
500 {
501 if (r is Dictionary<string, object>)
502 {
503 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
504 rinfos.Add(rinfo);
505 }
506 }
507 }
508 else
509 m_log.DebugFormat("[GRID CONNECTOR]: GetDefaultRegions {0} received null response",
510 scopeID);
511 }
512 else
513 m_log.DebugFormat("[GRID CONNECTOR]: GetDefaultRegions received null reply");
514
515 return rinfos;
516 }
517
518 public List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y)
519 {
520 Dictionary<string, object> sendData = new Dictionary<string, object>();
521
522 sendData["SCOPEID"] = scopeID.ToString();
523 sendData["X"] = x.ToString();
524 sendData["Y"] = y.ToString();
525
526 sendData["METHOD"] = "get_fallback_regions";
527
528 List<GridRegion> rinfos = new List<GridRegion>();
529 string reply = string.Empty;
530 string uri = m_ServerURI + "/grid";
531 try
532 {
533 reply = SynchronousRestFormsRequester.MakeRequest("POST",
534 uri,
535 ServerUtils.BuildQueryString(sendData));
536
537 //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply);
538 }
539 catch (Exception e)
540 {
541 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
542 return rinfos;
543 }
544
545 if (reply != string.Empty)
546 {
547 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
548
549 if (replyData != null)
550 {
551 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
552 foreach (object r in rinfosList)
553 {
554 if (r is Dictionary<string, object>)
555 {
556 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
557 rinfos.Add(rinfo);
558 }
559 }
560 }
561 else
562 m_log.DebugFormat("[GRID CONNECTOR]: GetFallbackRegions {0}, {1}-{2} received null response",
563 scopeID, x, y);
564 }
565 else
566 m_log.DebugFormat("[GRID CONNECTOR]: GetFallbackRegions received null reply");
567
568 return rinfos;
569 }
570
571 public List<GridRegion> GetHyperlinks(UUID scopeID)
572 {
573 Dictionary<string, object> sendData = new Dictionary<string, object>();
574
575 sendData["SCOPEID"] = scopeID.ToString();
576
577 sendData["METHOD"] = "get_hyperlinks";
578
579 List<GridRegion> rinfos = new List<GridRegion>();
580 string reply = string.Empty;
581 string uri = m_ServerURI + "/grid";
582 try
583 {
584 reply = SynchronousRestFormsRequester.MakeRequest("POST",
585 uri,
586 ServerUtils.BuildQueryString(sendData));
587
588 //m_log.DebugFormat("[GRID CONNECTOR]: reply was {0}", reply);
589 }
590 catch (Exception e)
591 {
592 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
593 return rinfos;
594 }
595
596 if (reply != string.Empty)
597 {
598 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
599
600 if (replyData != null)
601 {
602 Dictionary<string, object>.ValueCollection rinfosList = replyData.Values;
603 foreach (object r in rinfosList)
604 {
605 if (r is Dictionary<string, object>)
606 {
607 GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
608 rinfos.Add(rinfo);
609 }
610 }
611 }
612 else
613 m_log.DebugFormat("[GRID CONNECTOR]: GetHyperlinks {0} received null response",
614 scopeID);
615 }
616 else
617 m_log.DebugFormat("[GRID CONNECTOR]: GetHyperlinks received null reply");
618
619 return rinfos;
620 }
621
622 public int GetRegionFlags(UUID scopeID, UUID regionID)
623 {
624 Dictionary<string, object> sendData = new Dictionary<string, object>();
625
626 sendData["SCOPEID"] = scopeID.ToString();
627 sendData["REGIONID"] = regionID.ToString();
628
629 sendData["METHOD"] = "get_region_flags";
630
631 string reply = string.Empty;
632 string uri = m_ServerURI + "/grid";
633 try
634 {
635 reply = SynchronousRestFormsRequester.MakeRequest("POST",
636 uri,
637 ServerUtils.BuildQueryString(sendData));
638 }
639 catch (Exception e)
640 {
641 m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server at {0}: {1}", uri, e.Message);
642 return -1;
643 }
644
645 int flags = -1;
646
647 if (reply != string.Empty)
648 {
649 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
650
651 if ((replyData != null) && replyData.ContainsKey("result") && (replyData["result"] != null))
652 {
653 Int32.TryParse((string)replyData["result"], out flags);
654 //else
655 // m_log.DebugFormat("[GRID CONNECTOR]: GetRegionFlags {0}, {1} received wrong type {2}",
656 // scopeID, regionID, replyData["result"].GetType());
657 }
658 else
659 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionFlags {0}, {1} received null response",
660 scopeID, regionID);
661 }
662 else
663 m_log.DebugFormat("[GRID CONNECTOR]: GetRegionFlags received null reply");
664
665 return flags;
666 }
667
668 #endregion
669
670 }
671}