aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications/OGS1
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Communications/OGS1')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs190
1 files changed, 87 insertions, 103 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index b7fae65..f324886 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -134,7 +134,8 @@ namespace OpenSim.Region.Communications.OGS1
134 { 134 {
135 GridReq = new XmlRpcRequest("simulator_login", SendParams); 135 GridReq = new XmlRpcRequest("simulator_login", SendParams);
136 GridResp = GridReq.Send(serversInfo.GridURL, 16000); 136 GridResp = GridReq.Send(serversInfo.GridURL, 16000);
137 } catch (Exception ex) 137 }
138 catch (Exception ex)
138 { 139 {
139 m_log.Error("Unable to connect to grid. Grid server not running?"); 140 m_log.Error("Unable to connect to grid. Grid server not running?");
140 throw(ex); 141 throw(ex);
@@ -182,7 +183,8 @@ namespace OpenSim.Region.Communications.OGS1
182 Hashtable griddatahash = GridRespData; 183 Hashtable griddatahash = GridRespData;
183 184
184 // Process Response 185 // Process Response
185 if (GridRespData.ContainsKey("error")) { 186 if (GridRespData.ContainsKey("error"))
187 {
186 string errorstring = (string)GridRespData["error"]; 188 string errorstring = (string)GridRespData["error"];
187 m_log.Error("Unable to connect to grid: " + errorstring); 189 m_log.Error("Unable to connect to grid: " + errorstring);
188 return false; 190 return false;
@@ -202,7 +204,6 @@ namespace OpenSim.Region.Communications.OGS1
202 returnGridSettings.Add(Dictkey, m_queuedGridSettings[Dictkey]); 204 returnGridSettings.Add(Dictkey, m_queuedGridSettings[Dictkey]);
203 } 205 }
204 206
205
206 m_queuedGridSettings.Clear(); 207 m_queuedGridSettings.Clear();
207 } 208 }
208 209
@@ -308,10 +309,7 @@ namespace OpenSim.Region.Communications.OGS1
308 return regionInfo; 309 return regionInfo;
309 } 310 }
310 311
311 if (m_remoteRegionInfoCache.TryGetValue(regionHandle, out regionInfo)) 312 if (!m_remoteRegionInfoCache.TryGetValue(regionHandle, out regionInfo))
312 {
313 }
314 else
315 { 313 {
316 try 314 try
317 { 315 {
@@ -366,54 +364,51 @@ namespace OpenSim.Region.Communications.OGS1
366 // Don't use this method. It's only for SLURLS and Logins 364 // Don't use this method. It's only for SLURLS and Logins
367 RegionInfo regionInfo = null; 365 RegionInfo regionInfo = null;
368 try 366 try
369 { 367 {
370 Hashtable requestData = new Hashtable(); 368 Hashtable requestData = new Hashtable();
371 requestData["region_name_search"] = regionName; 369 requestData["region_name_search"] = regionName;
372 requestData["authkey"] = serversInfo.GridSendKey; 370 requestData["authkey"] = serversInfo.GridSendKey;
373 ArrayList SendParams = new ArrayList(); 371 ArrayList SendParams = new ArrayList();
374 SendParams.Add(requestData); 372 SendParams.Add(requestData);
375 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); 373 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
376 XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 3000); 374 XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 3000);
377 375
378 Hashtable responseData = (Hashtable) GridResp.Value; 376 Hashtable responseData = (Hashtable) GridResp.Value;
379 377
380 if (responseData.ContainsKey("error")) 378 if (responseData.ContainsKey("error"))
381 { 379 {
382 m_log.Error("[OGS1 GRID SERVICES]: Error received from grid server" + responseData["error"]); 380 m_log.Error("[OGS1 GRID SERVICES]: Error received from grid server" + responseData["error"]);
383 return null; 381 return null;
384 } 382 }
385 383
386 uint regX = Convert.ToUInt32((string) responseData["region_locx"]); 384 uint regX = Convert.ToUInt32((string) responseData["region_locx"]);
387 uint regY = Convert.ToUInt32((string) responseData["region_locy"]); 385 uint regY = Convert.ToUInt32((string) responseData["region_locy"]);
388 string internalIpStr = (string) responseData["sim_ip"]; 386 string internalIpStr = (string) responseData["sim_ip"];
389 uint port = Convert.ToUInt32(responseData["sim_port"]); 387 uint port = Convert.ToUInt32(responseData["sim_port"]);
390 string externalUri = (string) responseData["sim_uri"]; 388 string externalUri = (string) responseData["sim_uri"];
391 389
392 IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), (int) port); 390 IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), (int) port);
393 string neighbourExternalUri = externalUri; 391 string neighbourExternalUri = externalUri;
394 regionInfo = new RegionInfo(regX, regY, neighbourInternalEndPoint, internalIpStr); 392 regionInfo = new RegionInfo(regX, regY, neighbourInternalEndPoint, internalIpStr);
395 393
396 regionInfo.RemotingPort = Convert.ToUInt32((string) responseData["remoting_port"]); 394 regionInfo.RemotingPort = Convert.ToUInt32((string) responseData["remoting_port"]);
397 regionInfo.RemotingAddress = internalIpStr; 395 regionInfo.RemotingAddress = internalIpStr;
398 396
399 regionInfo.RegionID = new LLUUID((string) responseData["region_UUID"]); 397 regionInfo.RegionID = new LLUUID((string) responseData["region_UUID"]);
400 regionInfo.RegionName = (string) responseData["region_name"]; 398 regionInfo.RegionName = (string) responseData["region_name"];
401 399
402 m_remoteRegionInfoCache.Add(regionInfo.RegionHandle, regionInfo); 400 m_remoteRegionInfoCache.Add(regionInfo.RegionHandle, regionInfo);
403 } 401 }
404 catch (WebException) 402 catch (WebException)
405 { 403 {
406 m_log.Error("[OGS1 GRID SERVICES]: " + 404 m_log.Error("[OGS1 GRID SERVICES]: " +
407 "Region lookup failed for: " + regionName + 405 "Region lookup failed for: " + regionName +
408 " - Is the GridServer down?"); 406 " - Is the GridServer down?");
409 } 407 }
410
411 408
412 return regionInfo; 409 return regionInfo;
413
414 } 410 }
415 411
416
417 /// <summary> 412 /// <summary>
418 /// 413 ///
419 /// </summary> 414 /// </summary>
@@ -465,9 +460,6 @@ namespace OpenSim.Region.Communications.OGS1
465 return neighbours; 460 return neighbours;
466 } 461 }
467 462
468
469
470
471 /// <summary> 463 /// <summary>
472 /// Performs a XML-RPC query against the grid server returning mapblock information in the specified coordinates 464 /// Performs a XML-RPC query against the grid server returning mapblock information in the specified coordinates
473 /// </summary> 465 /// </summary>
@@ -519,7 +511,6 @@ namespace OpenSim.Region.Communications.OGS1
519 return response; 511 return response;
520 } 512 }
521 513
522
523 // Grid Request Processing 514 // Grid Request Processing
524 /// <summary> 515 /// <summary>
525 /// Received from the user server when a user starts logging in. This call allows 516 /// Received from the user server when a user starts logging in. This call allows
@@ -596,7 +587,6 @@ namespace OpenSim.Region.Communications.OGS1
596 InterRegionSingleton.Instance.OnRegionUp += TriggerRegionUp; 587 InterRegionSingleton.Instance.OnRegionUp += TriggerRegionUp;
597 InterRegionSingleton.Instance.OnChildAgentUpdate += TriggerChildAgentUpdate; 588 InterRegionSingleton.Instance.OnChildAgentUpdate += TriggerChildAgentUpdate;
598 InterRegionSingleton.Instance.OnTellRegionToCloseChildConnection += TriggerTellRegionToCloseChildConnection; 589 InterRegionSingleton.Instance.OnTellRegionToCloseChildConnection += TriggerTellRegionToCloseChildConnection;
599
600 } 590 }
601 591
602 #region Methods called by regions in this instance 592 #region Methods called by regions in this instance
@@ -629,10 +619,10 @@ namespace OpenSim.Region.Communications.OGS1
629 619
630 620
631 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 621 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
632 typeof(OGS1InterRegionRemoting), 622 typeof(OGS1InterRegionRemoting),
633 "tcp://" + regInfo.RemotingAddress + 623 "tcp://" + regInfo.RemotingAddress +
634 ":" + regInfo.RemotingPort + 624 ":" + regInfo.RemotingPort +
635 "/InterRegions"); 625 "/InterRegions");
636 626
637 if (remObject != null) 627 if (remObject != null)
638 { 628 {
@@ -738,29 +728,27 @@ namespace OpenSim.Region.Communications.OGS1
738 //don't want to be creating a new link to the remote instance every time like we are here 728 //don't want to be creating a new link to the remote instance every time like we are here
739 bool retValue = false; 729 bool retValue = false;
740 730
731 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
732 typeof(OGS1InterRegionRemoting),
733 "tcp://" + regInfo.RemotingAddress +
734 ":" + regInfo.RemotingPort +
735 "/InterRegions");
741 736
742 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 737 if (remObject != null)
743 typeof(OGS1InterRegionRemoting), 738 {
744 "tcp://" + regInfo.RemotingAddress + 739 retValue = remObject.InformRegionOfChildAgent(regionHandle, new sAgentCircuitData(agentData));
745 ":" + regInfo.RemotingPort + 740 }
746 "/InterRegions"); 741 else
747 742 {
748 if (remObject != null) 743 m_log.Warn("[OGS1 GRID SERVICES]: remoting object not found");
749 { 744 }
750 retValue = remObject.InformRegionOfChildAgent(regionHandle, new sAgentCircuitData(agentData)); 745 remObject = null;
751 } 746 m_log.Info("[OGS1 GRID SERVICES]: " +
752 else 747 gdebugRegionName + ": OGS1 tried to InformRegionOfChildAgent for " +
753 { 748 agentData.firstname + " " + agentData.lastname + " and got " +
754 m_log.Warn("[OGS1 GRID SERVICES]: remoting object not found"); 749 retValue.ToString());
755 }
756 remObject = null;
757 m_log.Info("[OGS1 GRID SERVICES]: " +
758 gdebugRegionName + ": OGS1 tried to InformRegionOfChildAgent for " +
759 agentData.firstname + " " + agentData.lastname + " and got " +
760 retValue.ToString());
761
762 return retValue;
763 750
751 return retValue;
764 } 752 }
765 NoteDeadRegion(regionHandle); 753 NoteDeadRegion(regionHandle);
766 return false; 754 return false;
@@ -849,14 +837,12 @@ namespace OpenSim.Region.Communications.OGS1
849 //don't want to be creating a new link to the remote instance every time like we are here 837 //don't want to be creating a new link to the remote instance every time like we are here
850 bool retValue = false; 838 bool retValue = false;
851 839
852
853 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject( 840 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject(
854 typeof ( 841 typeof(OGS1InterRegionRemoting),
855 OGS1InterRegionRemoting), 842 "tcp://" +
856 "tcp://" + 843 regInfo.RemotingAddress +
857 regInfo.RemotingAddress + 844 ":" + regInfo.RemotingPort +
858 ":" + regInfo.RemotingPort + 845 "/InterRegions");
859 "/InterRegions");
860 846
861 if (remObject != null) 847 if (remObject != null)
862 { 848 {
@@ -939,7 +925,7 @@ namespace OpenSim.Region.Communications.OGS1
939 /// <returns></returns> 925 /// <returns></returns>
940 public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) 926 public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData)
941 { 927 {
942 int failures = 0; 928 int failures = 0;
943 lock (m_deadRegionCache) 929 lock (m_deadRegionCache)
944 { 930 {
945 if (m_deadRegionCache.ContainsKey(regionHandle)) 931 if (m_deadRegionCache.ContainsKey(regionHandle))
@@ -963,12 +949,11 @@ namespace OpenSim.Region.Communications.OGS1
963 //don't want to be creating a new link to the remote instance every time like we are here 949 //don't want to be creating a new link to the remote instance every time like we are here
964 bool retValue = false; 950 bool retValue = false;
965 951
966
967 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 952 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
968 typeof(OGS1InterRegionRemoting), 953 typeof(OGS1InterRegionRemoting),
969 "tcp://" + regInfo.RemotingAddress + 954 "tcp://" + regInfo.RemotingAddress +
970 ":" + regInfo.RemotingPort + 955 ":" + regInfo.RemotingPort +
971 "/InterRegions"); 956 "/InterRegions");
972 957
973 if (remObject != null) 958 if (remObject != null)
974 { 959 {
@@ -980,7 +965,6 @@ namespace OpenSim.Region.Communications.OGS1
980 } 965 }
981 remObject = null; 966 remObject = null;
982 967
983
984 return retValue; 968 return retValue;
985 } 969 }
986 NoteDeadRegion(regionHandle); 970 NoteDeadRegion(regionHandle);
@@ -1050,10 +1034,11 @@ namespace OpenSim.Region.Communications.OGS1
1050 { 1034 {
1051 bool retValue = false; 1035 bool retValue = false;
1052 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject( 1036 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject(
1053 typeof (OGS1InterRegionRemoting), 1037 typeof (OGS1InterRegionRemoting),
1054 "tcp://" + regInfo.RemotingAddress + 1038 "tcp://" + regInfo.RemotingAddress +
1055 ":" + regInfo.RemotingPort + 1039 ":" + regInfo.RemotingPort +
1056 "/InterRegions"); 1040 "/InterRegions");
1041
1057 if (remObject != null) 1042 if (remObject != null)
1058 { 1043 {
1059 retValue = 1044 retValue =
@@ -1106,10 +1091,11 @@ namespace OpenSim.Region.Communications.OGS1
1106 { 1091 {
1107 bool retValue = false; 1092 bool retValue = false;
1108 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject( 1093 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject(
1109 typeof (OGS1InterRegionRemoting), 1094 typeof (OGS1InterRegionRemoting),
1110 "tcp://" + regInfo.RemotingAddress + 1095 "tcp://" + regInfo.RemotingAddress +
1111 ":" + regInfo.RemotingPort + 1096 ":" + regInfo.RemotingPort +
1112 "/InterRegions"); 1097 "/InterRegions");
1098
1113 if (remObject != null) 1099 if (remObject != null)
1114 { 1100 {
1115 retValue = 1101 retValue =
@@ -1181,10 +1167,11 @@ namespace OpenSim.Region.Communications.OGS1
1181 { 1167 {
1182 bool retValue = false; 1168 bool retValue = false;
1183 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 1169 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
1184 typeof(OGS1InterRegionRemoting), 1170 typeof(OGS1InterRegionRemoting),
1185 "tcp://" + regInfo.RemotingAddress + 1171 "tcp://" + regInfo.RemotingAddress +
1186 ":" + regInfo.RemotingPort + 1172 ":" + regInfo.RemotingPort +
1187 "/InterRegions"); 1173 "/InterRegions");
1174
1188 if (remObject != null) 1175 if (remObject != null)
1189 { 1176 {
1190 retValue = 1177 retValue =
@@ -1211,7 +1198,6 @@ namespace OpenSim.Region.Communications.OGS1
1211 //m_log.Debug(e.ToString()); 1198 //m_log.Debug(e.ToString());
1212 return false; 1199 return false;
1213 } 1200 }
1214
1215 catch (SocketException e) 1201 catch (SocketException e)
1216 { 1202 {
1217 NoteDeadRegion(regionHandle); 1203 NoteDeadRegion(regionHandle);
@@ -1312,7 +1298,6 @@ namespace OpenSim.Region.Communications.OGS1
1312 { 1298 {
1313 if (m_deadRegionCache.ContainsKey(regionData.RegionHandle)) 1299 if (m_deadRegionCache.ContainsKey(regionData.RegionHandle))
1314 { 1300 {
1315
1316 m_deadRegionCache.Remove(regionData.RegionHandle); 1301 m_deadRegionCache.Remove(regionData.RegionHandle);
1317 } 1302 }
1318 } 1303 }
@@ -1356,7 +1341,6 @@ namespace OpenSim.Region.Communications.OGS1
1356 m_localBackend.TriggerExpectPrim(regionHandle, primID, objData); 1341 m_localBackend.TriggerExpectPrim(regionHandle, primID, objData);
1357 return true; 1342 return true;
1358 //m_localBackend. 1343 //m_localBackend.
1359
1360 } 1344 }
1361 catch (RemotingException e) 1345 catch (RemotingException e)
1362 { 1346 {