aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications/OGS1
diff options
context:
space:
mode:
authorTeravus Ovares2007-11-26 05:02:18 +0000
committerTeravus Ovares2007-11-26 05:02:18 +0000
commit175b6115f19f9bad7c81fde625250b3a7f8a33f2 (patch)
treef907f3b409eca34017f6e18dcf4d644b623d0302 /OpenSim/Region/Communications/OGS1
parentAdded Region name to the terrain texture description that gets sent to the as... (diff)
downloadopensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.zip
opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.gz
opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.bz2
opensim-SC_OLD-175b6115f19f9bad7c81fde625250b3a7f8a33f2.tar.xz
* Restarting regions with the estate tools works in sandbox mode. I'm still working on grid mode, however. It doesn't break anything, but that feature doesn't work in grid mode yet either.
Diffstat (limited to 'OpenSim/Region/Communications/OGS1')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs90
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs26
2 files changed, 115 insertions, 1 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 6b2407a..a0d6bd3 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -380,6 +380,7 @@ namespace OpenSim.Region.Communications.OGS1
380 InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; 380 InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent;
381 InterRegionSingleton.Instance.OnPrimGroupArrival += IncomingPrim; 381 InterRegionSingleton.Instance.OnPrimGroupArrival += IncomingPrim;
382 InterRegionSingleton.Instance.OnPrimGroupNear += TriggerExpectPrimCrossing; 382 InterRegionSingleton.Instance.OnPrimGroupNear += TriggerExpectPrimCrossing;
383 InterRegionSingleton.Instance.OnRegionUp += TriggerRegionUp;
383 384
384 } 385 }
385 386
@@ -465,6 +466,81 @@ namespace OpenSim.Region.Communications.OGS1
465 } 466 }
466 return true; 467 return true;
467 } 468 }
469
470 // UGLY!
471 public bool RegionUp(RegionInfo region)
472 {
473 RegionInfo regInfo = null;
474 try
475 {
476 if (m_localBackend.RegionUp(region))
477 {
478 return true;
479 }
480 foreach (RegionInfo remoteInfo in m_remoteRegionInfoCache.Values)
481 {
482 regInfo = RequestNeighbourInfo(remoteInfo.RegionHandle);
483 if (regInfo != null)
484 {
485 //don't want to be creating a new link to the remote instance every time like we are here
486 bool retValue = false;
487
488
489 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
490 typeof(OGS1InterRegionRemoting),
491 "tcp://" + regInfo.RemotingAddress +
492 ":" + regInfo.RemotingPort +
493 "/InterRegions");
494
495 if (remObject != null)
496 {
497 retValue = remObject.RegionUp(region);
498 }
499 else
500 {
501 Console.WriteLine("remoting object not found");
502 }
503 remObject = null;
504
505 }
506
507 }
508
509
510 return true;
511 }
512 catch (RemotingException e)
513 {
514 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
515 MainLog.Instance.Debug(e.ToString());
516 return false;
517 }
518 catch (SocketException e)
519 {
520 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
521 MainLog.Instance.Debug(e.ToString());
522 return false;
523 }
524 catch (InvalidCredentialException e)
525 {
526 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
527 MainLog.Instance.Debug(e.ToString());
528 return false;
529 }
530 catch (AuthenticationException e)
531 {
532 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
533 MainLog.Instance.Debug(e.ToString());
534 return false;
535 }
536 catch (Exception e)
537 {
538 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
539 MainLog.Instance.Debug(e.ToString());
540 return false;
541 }
542 return true;
543 }
468 /// <summary> 544 /// <summary>
469 /// 545 ///
470 /// </summary> 546 /// </summary>
@@ -680,6 +756,20 @@ namespace OpenSim.Region.Communications.OGS1
680 } 756 }
681 } 757 }
682 758
759 public bool TriggerRegionUp(RegionInfo regionData)
760 {
761 try
762 {
763 return m_localBackend.TriggerRegionUp(regionData);
764 }
765
766 catch (RemotingException e)
767 {
768 MainLog.Instance.Error("Remoting Error: Unable to connect to adjacent region.\n" + e.ToString());
769 return false;
770 }
771 }
772
683 /// <summary> 773 /// <summary>
684 /// 774 ///
685 /// </summary> 775 /// </summary>
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
index 70018fd..aa6f59a 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
@@ -41,6 +41,8 @@ namespace OpenSim.Region.Communications.OGS1
41 41
42 public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); 42 public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData);
43 43
44 public delegate bool RegionUP (RegionInfo region);
45
44 public sealed class InterRegionSingleton 46 public sealed class InterRegionSingleton
45 { 47 {
46 private static readonly InterRegionSingleton instance = new InterRegionSingleton(); 48 private static readonly InterRegionSingleton instance = new InterRegionSingleton();
@@ -49,6 +51,8 @@ namespace OpenSim.Region.Communications.OGS1
49 public event ExpectArrival OnArrival; 51 public event ExpectArrival OnArrival;
50 public event InformRegionPrimGroup OnPrimGroupNear; 52 public event InformRegionPrimGroup OnPrimGroupNear;
51 public event PrimGroupArrival OnPrimGroupArrival; 53 public event PrimGroupArrival OnPrimGroupArrival;
54 public event RegionUp OnRegionUp;
55
52 56
53 static InterRegionSingleton() 57 static InterRegionSingleton()
54 { 58 {
@@ -72,6 +76,15 @@ namespace OpenSim.Region.Communications.OGS1
72 return false; 76 return false;
73 } 77 }
74 78
79 public bool RegionUp(RegionInfo region)
80 {
81 if (OnRegionUp != null)
82 {
83 return OnRegionUp(region);
84 }
85 return false;
86 }
87
75 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) 88 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
76 { 89 {
77 if (OnArrival != null) 90 if (OnArrival != null)
@@ -116,7 +129,18 @@ namespace OpenSim.Region.Communications.OGS1
116 return false; 129 return false;
117 } 130 }
118 } 131 }
119 132 public bool RegionUp(RegionInfo region)
133 {
134 try
135 {
136 return InterRegionSingleton.Instance.RegionUp(region);
137 }
138 catch (RemotingException e)
139 {
140 Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString());
141 return false;
142 }
143 }
120 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) 144 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
121 { 145 {
122 try 146 try