aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications/OGS1
diff options
context:
space:
mode:
authorTeravus Ovares2008-03-30 08:01:47 +0000
committerTeravus Ovares2008-03-30 08:01:47 +0000
commitfd2caf5f1673ad14702d89db9804f841c5cb861a (patch)
tree18fd4ae03180b14df41f93544afa0cc9d5ec5309 /OpenSim/Region/Communications/OGS1
parent* Stop the grid inventory service sending all folder and item details twice (diff)
downloadopensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.zip
opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.gz
opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.bz2
opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.xz
This update has good news and bad news, first the bad.
* This update breaks inter-region communications, sorry. * You will need to run prebuild. Next, the good; * This update solves the unexpected binary element when Linux simulators inform windows simulators and vice versa. So Linux Simulators and Windows simulators are 100% compatible again. * This update introduces an Integer in the prim crossing method to tell the receiving simulator which XML method to use to load the prim that crossed the border. If the receiving prim doesn't support the method, the prim crossing fails and no prims are lost. That being said, it's best to update all your simulators to this revision at once.
Diffstat (limited to 'OpenSim/Region/Communications/OGS1')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs32
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs16
2 files changed, 28 insertions, 20 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index d19752c..22bb0f0 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -857,6 +857,8 @@ namespace OpenSim.Region.Communications.OGS1
857 // The region asking the grid services about itself.. 857 // The region asking the grid services about itself..
858 // And, surprisingly, the reason is.. it doesn't know 858 // And, surprisingly, the reason is.. it doesn't know
859 // it's own remoting port! How special. 859 // it's own remoting port! How special.
860 RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port);
861
860 region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle)); 862 region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle));
861 region.RemotingAddress = region.ExternalHostName; 863 region.RemotingAddress = region.ExternalHostName;
862 region.RemotingPort = NetworkServersInfo.RemotingListenerPort; 864 region.RemotingPort = NetworkServersInfo.RemotingListenerPort;
@@ -885,7 +887,7 @@ namespace OpenSim.Region.Communications.OGS1
885 887
886 if (remObject != null) 888 if (remObject != null)
887 { 889 {
888 retValue = remObject.RegionUp(region, regionhandle); 890 retValue = remObject.RegionUp(regiondata, regionhandle);
889 } 891 }
890 else 892 else
891 { 893 {
@@ -962,7 +964,7 @@ namespace OpenSim.Region.Communications.OGS1
962 /// <param name="regionHandle"></param> 964 /// <param name="regionHandle"></param>
963 /// <param name="agentData"></param> 965 /// <param name="agentData"></param>
964 /// <returns></returns> 966 /// <returns></returns>
965 public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) 967 public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod)
966 { 968 {
967 int failures = 0; 969 int failures = 0;
968 lock (m_deadRegionCache) 970 lock (m_deadRegionCache)
@@ -977,7 +979,7 @@ namespace OpenSim.Region.Communications.OGS1
977 RegionInfo regInfo = null; 979 RegionInfo regInfo = null;
978 try 980 try
979 { 981 {
980 if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData)) 982 if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData, XMLMethod))
981 { 983 {
982 return true; 984 return true;
983 } 985 }
@@ -996,7 +998,7 @@ namespace OpenSim.Region.Communications.OGS1
996 998
997 if (remObject != null) 999 if (remObject != null)
998 { 1000 {
999 retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData); 1001 retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData, XMLMethod);
1000 } 1002 }
1001 else 1003 else
1002 { 1004 {
@@ -1325,23 +1327,29 @@ namespace OpenSim.Region.Communications.OGS1
1325 } 1327 }
1326 } 1328 }
1327 1329
1328 public bool TriggerRegionUp(SearializableRegionInfo regionData, ulong regionhandle) 1330 public bool TriggerRegionUp(RegionUpData regionData, ulong regionhandle)
1329 { 1331 {
1330 m_log.Info("[OGS1 GRID SERVICES]: " + 1332 m_log.Info("[OGS1 GRID SERVICES]: " +
1331 gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.RegionLocX + 1333 gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.X +
1332 "," + regionData.RegionLocY + "). Giving this region a fresh set of 'dead' tries"); 1334 "," + regionData.Y + "). Giving this region a fresh set of 'dead' tries");
1335 RegionInfo nRegionInfo = new RegionInfo();
1336 nRegionInfo.SetEndPoint("127.0.0.1", regionData.PORT);
1337 nRegionInfo.ExternalHostName = regionData.IPADDR;
1338 nRegionInfo.RegionLocX = regionData.X;
1339 nRegionInfo.RegionLocY = regionData.Y;
1333 1340
1341
1334 try 1342 try
1335 { 1343 {
1336 lock (m_deadRegionCache) 1344 lock (m_deadRegionCache)
1337 { 1345 {
1338 if (m_deadRegionCache.ContainsKey(regionData.RegionHandle)) 1346 if (m_deadRegionCache.ContainsKey(nRegionInfo.RegionHandle))
1339 { 1347 {
1340 m_deadRegionCache.Remove(regionData.RegionHandle); 1348 m_deadRegionCache.Remove(nRegionInfo.RegionHandle);
1341 } 1349 }
1342 } 1350 }
1343 1351
1344 return m_localBackend.TriggerRegionUp(new RegionInfo(regionData), regionhandle); 1352 return m_localBackend.TriggerRegionUp(nRegionInfo, regionhandle);
1345 } 1353 }
1346 1354
1347 catch (RemotingException e) 1355 catch (RemotingException e)
@@ -1372,12 +1380,12 @@ namespace OpenSim.Region.Communications.OGS1
1372 /// <param name="regionHandle"></param> 1380 /// <param name="regionHandle"></param>
1373 /// <param name="agentData"></param> 1381 /// <param name="agentData"></param>
1374 /// <returns></returns> 1382 /// <returns></returns>
1375 public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData) 1383 public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod)
1376 { 1384 {
1377 // Is this necessary? 1385 // Is this necessary?
1378 try 1386 try
1379 { 1387 {
1380 m_localBackend.TriggerExpectPrim(regionHandle, primID, objData); 1388 m_localBackend.TriggerExpectPrim(regionHandle, primID, objData, XMLMethod);
1381 return true; 1389 return true;
1382 //m_localBackend. 1390 //m_localBackend.
1383 } 1391 }
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
index c282464..2e106d7 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
@@ -38,9 +38,9 @@ namespace OpenSim.Region.Communications.OGS1
38 38
39 public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical); 39 public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical);
40 40
41 public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); 41 public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData, int XMLMethod);
42 42
43 public delegate bool RegionUp(SearializableRegionInfo region, ulong regionhandle); 43 public delegate bool RegionUp(RegionUpData region, ulong regionhandle);
44 44
45 public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate); 45 public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate);
46 46
@@ -90,7 +90,7 @@ namespace OpenSim.Region.Communications.OGS1
90 return false; 90 return false;
91 } 91 }
92 92
93 public bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) 93 public bool RegionUp(RegionUpData sregion, ulong regionhandle)
94 { 94 {
95 handlerRegionUp = OnRegionUp; 95 handlerRegionUp = OnRegionUp;
96 if (handlerRegionUp != null) 96 if (handlerRegionUp != null)
@@ -130,12 +130,12 @@ namespace OpenSim.Region.Communications.OGS1
130 return false; 130 return false;
131 } 131 }
132 132
133 public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData) 133 public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod)
134 { 134 {
135 handlerPrimGroupArrival = OnPrimGroupArrival; 135 handlerPrimGroupArrival = OnPrimGroupArrival;
136 if (handlerPrimGroupArrival != null) 136 if (handlerPrimGroupArrival != null)
137 { 137 {
138 return handlerPrimGroupArrival(regionHandle, primID, objData); 138 return handlerPrimGroupArrival(regionHandle, primID, objData, XMLMethod);
139 } 139 }
140 return false; 140 return false;
141 } 141 }
@@ -173,7 +173,7 @@ namespace OpenSim.Region.Communications.OGS1
173 } 173 }
174 } 174 }
175 175
176 public bool RegionUp(SearializableRegionInfo region, ulong regionhandle) 176 public bool RegionUp(RegionUpData region, ulong regionhandle)
177 { 177 {
178 try 178 try
179 { 179 {
@@ -232,11 +232,11 @@ namespace OpenSim.Region.Communications.OGS1
232 } 232 }
233 } 233 }
234 234
235 public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData) 235 public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData, int XMLMethod)
236 { 236 {
237 try 237 try
238 { 238 {
239 return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData); 239 return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData, XMLMethod);
240 } 240 }
241 catch (RemotingException e) 241 catch (RemotingException e)
242 { 242 {