aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications
diff options
context:
space:
mode:
authorMW2007-07-22 11:44:36 +0000
committerMW2007-07-22 11:44:36 +0000
commit70fa30204272e874b8e3acccdc2e22cd4e42b2b2 (patch)
tree2f6c3c0f3b3bd60d5972f8dea6b3abeae4dc9065 /OpenSim/Region/Communications
parent* Aerobic erosion now uses Navier Stokes algorithms for wind calculations. (diff)
downloadopensim-SC-70fa30204272e874b8e3acccdc2e22cd4e42b2b2.zip
opensim-SC-70fa30204272e874b8e3acccdc2e22cd4e42b2b2.tar.gz
opensim-SC-70fa30204272e874b8e3acccdc2e22cd4e42b2b2.tar.bz2
opensim-SC-70fa30204272e874b8e3acccdc2e22cd4e42b2b2.tar.xz
* Some work in progress code: Inventory cache, start of inventory server/service, userprofile cache, inventory handling. (non of it is enabled yet (or at least it shouldn't be).
* Fixed some of the problems with crossing regions when flying: you should no longer sink to ground level when crossing (should keep roughly your right height). Should no longer sometimes get sent back to the centre of the current region when attempting to border cross. But instead sometimes you will find you avatar stop at the edge of region and you will need to start moving again to retry the crossing (which should then work). This code is partly based on Babblefrog's issue #212 patch. [I think I have some ideas of how to solve the stopping at edges problem, just want to get the inventory code done first] * Capabilities code has now been moved to the OpenSim.Framework.Communications project as some of the caps code will be tightly tied to inventory/asset handling and it was causing a two way reference problem when it was in its own project/dll. This is a Big commit as I was going to keep my inventory work local until I had it in a working state, in case it brakes anything, but its getting harder to keep in sync with svn.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Communications/Local/CommunicationsLocal.cs5
-rw-r--r--OpenSim/Region/Communications/Local/LocalBackEndServices.cs13
-rw-r--r--OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs4
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs19
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs10
5 files changed, 36 insertions, 15 deletions
diff --git a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs
index 3ce0cc5..0c40453 100644
--- a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs
+++ b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs
@@ -28,6 +28,7 @@
28using OpenSim.Framework.Communications; 28using OpenSim.Framework.Communications;
29using OpenSim.Framework.Types; 29using OpenSim.Framework.Types;
30using OpenSim.Framework.Servers; 30using OpenSim.Framework.Servers;
31using OpenSim.Framework.Communications.Caches;
31 32
32namespace OpenSim.Region.Communications.Local 33namespace OpenSim.Region.Communications.Local
33{ 34{
@@ -36,8 +37,8 @@ namespace OpenSim.Region.Communications.Local
36 public LocalBackEndServices SandBoxServices = new LocalBackEndServices(); 37 public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
37 public LocalUserServices UserServices; 38 public LocalUserServices UserServices;
38 39
39 public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer ) 40 public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache )
40 : base(serversInfo, httpServer) 41 : base(serversInfo, httpServer, assetCache)
41 { 42 {
42 UserServices = new LocalUserServices(this, serversInfo); 43 UserServices = new LocalUserServices(this, serversInfo);
43 UserServices.AddPlugin("OpenSim.Framework.Data.DB4o.dll"); 44 UserServices.AddPlugin("OpenSim.Framework.Data.DB4o.dll");
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
index 9322f3b..47968fc 100644
--- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
+++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
@@ -161,12 +161,21 @@ namespace OpenSim.Region.Communications.Local
161 /// <param name="agentID"></param> 161 /// <param name="agentID"></param>
162 /// <param name="position"></param> 162 /// <param name="position"></param>
163 /// <returns></returns> 163 /// <returns></returns>
164 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) 164 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
165 { 165 {
166 if (this.regionHosts.ContainsKey(regionHandle)) 166 if (this.regionHosts.ContainsKey(regionHandle))
167 { 167 {
168 // Console.WriteLine("CommsManager- Informing a region to expect avatar crossing"); 168 // Console.WriteLine("CommsManager- Informing a region to expect avatar crossing");
169 this.regionHosts[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); 169 this.regionHosts[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying);
170 return true;
171 }
172 return false;
173 }
174
175 public bool AcknowledgeAgentCrossed(ulong regionHandle, LLUUID agentID)
176 {
177 if (this.regionHosts.ContainsKey(regionHandle))
178 {
170 return true; 179 return true;
171 } 180 }
172 return false; 181 return false;
diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs
index 9df0901..47d3148 100644
--- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs
+++ b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs
@@ -1,13 +1,15 @@
1using OpenSim.Framework.Communications; 1using OpenSim.Framework.Communications;
2using OpenSim.Framework.Types; 2using OpenSim.Framework.Types;
3using OpenSim.Framework.Servers; 3using OpenSim.Framework.Servers;
4using OpenSim.Framework.Communications.Caches;
5
4 6
5namespace OpenSim.Region.Communications.OGS1 7namespace OpenSim.Region.Communications.OGS1
6{ 8{
7 public class CommunicationsOGS1 : CommunicationsManager 9 public class CommunicationsOGS1 : CommunicationsManager
8 { 10 {
9 11
10 public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer ) :base(serversInfo, httpServer) 12 public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) :base(serversInfo, httpServer, assetCache)
11 { 13 {
12 OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer); 14 OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer);
13 GridServer = gridInterComms; 15 GridServer = gridInterComms;
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index aadf85a..69d0d57 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -382,13 +382,13 @@ namespace OpenSim.Region.Communications.OGS1
382 /// <param name="agentID"></param> 382 /// <param name="agentID"></param>
383 /// <param name="position"></param> 383 /// <param name="position"></param>
384 /// <returns></returns> 384 /// <returns></returns>
385 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) 385 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
386 { 386 {
387 try 387 try
388 { 388 {
389 if (this.listeners.ContainsKey(regionHandle)) 389 if (this.listeners.ContainsKey(regionHandle))
390 { 390 {
391 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); 391 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying);
392 return true; 392 return true;
393 } 393 }
394 RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); 394 RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle);
@@ -400,7 +400,7 @@ namespace OpenSim.Region.Communications.OGS1
400 "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); 400 "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions");
401 if (remObject != null) 401 if (remObject != null)
402 { 402 {
403 retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position); 403 retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying);
404 } 404 }
405 else 405 else
406 { 406 {
@@ -420,6 +420,15 @@ namespace OpenSim.Region.Communications.OGS1
420 return false; 420 return false;
421 } 421 }
422 } 422 }
423
424 public bool AcknowledgeAgentCrossed(ulong regionHandle, LLUUID agentID)
425 {
426 if (this.listeners.ContainsKey(regionHandle))
427 {
428 return true;
429 }
430 return false;
431 }
423 #endregion 432 #endregion
424 433
425 #region Methods triggered by calls from external instances 434 #region Methods triggered by calls from external instances
@@ -453,13 +462,13 @@ namespace OpenSim.Region.Communications.OGS1
453 /// <param name="agentID"></param> 462 /// <param name="agentID"></param>
454 /// <param name="position"></param> 463 /// <param name="position"></param>
455 /// <returns></returns> 464 /// <returns></returns>
456 public bool IncomingArrival(ulong regionHandle, LLUUID agentID, LLVector3 position) 465 public bool IncomingArrival(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
457 { 466 {
458 try 467 try
459 { 468 {
460 if (this.listeners.ContainsKey(regionHandle)) 469 if (this.listeners.ContainsKey(regionHandle))
461 { 470 {
462 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position); 471 this.listeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying);
463 return true; 472 return true;
464 } 473 }
465 } 474 }
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
index 87d62c8..ae08e9c 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs
@@ -5,7 +5,7 @@ using OpenSim.Framework.Types;
5namespace OpenSim.Region.Communications.OGS1 5namespace OpenSim.Region.Communications.OGS1
6{ 6{
7 public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData); 7 public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData);
8 public delegate bool ExpectArrival(ulong regionHandle, LLUUID agentID, LLVector3 position); 8 public delegate bool ExpectArrival(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying);
9 9
10 public sealed class InterRegionSingleton 10 public sealed class InterRegionSingleton
11 { 11 {
@@ -39,11 +39,11 @@ namespace OpenSim.Region.Communications.OGS1
39 return false; 39 return false;
40 } 40 }
41 41
42 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) 42 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
43 { 43 {
44 if (OnArrival != null) 44 if (OnArrival != null)
45 { 45 {
46 return OnArrival(regionHandle, agentID, position); 46 return OnArrival(regionHandle, agentID, position, isFlying);
47 } 47 }
48 return false; 48 return false;
49 } 49 }
@@ -69,11 +69,11 @@ namespace OpenSim.Region.Communications.OGS1
69 } 69 }
70 } 70 }
71 71
72 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position) 72 public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
73 { 73 {
74 try 74 try
75 { 75 {
76 return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position); 76 return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying);
77 } 77 }
78 catch (System.Runtime.Remoting.RemotingException e) 78 catch (System.Runtime.Remoting.RemotingException e)
79 { 79 {