diff options
author | MW | 2007-05-31 15:31:31 +0000 |
---|---|---|
committer | MW | 2007-05-31 15:31:31 +0000 |
commit | 564a97b508fd23601cd41075aa6a1f7de0800b41 (patch) | |
tree | e2cd67317ac84a1468b3a425b011e8df7b7b7d5b | |
parent | More work on OpenGrid.Framework.Communications (diff) | |
download | opensim-SC-564a97b508fd23601cd41075aa6a1f7de0800b41.zip opensim-SC-564a97b508fd23601cd41075aa6a1f7de0800b41.tar.gz opensim-SC-564a97b508fd23601cd41075aa6a1f7de0800b41.tar.bz2 opensim-SC-564a97b508fd23601cd41075aa6a1f7de0800b41.tar.xz |
Implementing a test Communications manager to test some of the interfaces (likely this test version will morph into the sandbox version)
-rw-r--r-- | Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs | 17 | ||||
-rw-r--r-- | Common/OpenSim.Framework/IRegionCommsHost.cs | 2 | ||||
-rw-r--r-- | Common/OpenSim.Framework/RegionCommsHostBase.cs | 4 | ||||
-rw-r--r-- | Common/OpenSim.Servers/LocalUserProfileManager.cs | 4 | ||||
-rw-r--r-- | Common/OpenSim.Servers/LoginServer.cs | 5 | ||||
-rw-r--r-- | OpenSim/OpenSim.World/OpenSim.World.csproj | 4 | ||||
-rw-r--r-- | OpenSim/OpenSim.World/World.cs | 29 | ||||
-rw-r--r-- | OpenSim/OpenSim/OpenSim.csproj | 4 | ||||
-rw-r--r-- | OpenSim/OpenSim/OpenSimMain.cs | 10 |
9 files changed, 60 insertions, 19 deletions
diff --git a/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs b/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs index 57049fc..b4fe696 100644 --- a/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs +++ b/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs | |||
@@ -11,8 +11,8 @@ namespace OpenGrid.Framework.Communications | |||
11 | { | 11 | { |
12 | public class TestLocalCommsManager : RegionServerCommsManager | 12 | public class TestLocalCommsManager : RegionServerCommsManager |
13 | { | 13 | { |
14 | protected Dictionary<uint , RegionInfo> regions = new Dictionary<uint,RegionInfo>(); | 14 | protected Dictionary<ulong, RegionInfo> regions = new Dictionary<ulong,RegionInfo>(); |
15 | protected Dictionary<uint, RegionCommsHostBase> regionHosts = new Dictionary<uint, RegionCommsHostBase>(); | 15 | protected Dictionary<ulong, RegionCommsHostBase> regionHosts = new Dictionary<ulong, RegionCommsHostBase>(); |
16 | 16 | ||
17 | public TestLocalCommsManager() | 17 | public TestLocalCommsManager() |
18 | { | 18 | { |
@@ -28,9 +28,9 @@ namespace OpenGrid.Framework.Communications | |||
28 | { | 28 | { |
29 | if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle)) | 29 | if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle)) |
30 | { | 30 | { |
31 | this.regions.Add((uint)regionInfo.RegionHandle, regionInfo); | 31 | this.regions.Add(regionInfo.RegionHandle, regionInfo); |
32 | RegionCommsHostBase regionHost = new RegionCommsHostBase(); | 32 | RegionCommsHostBase regionHost = new RegionCommsHostBase(); |
33 | this.regionHosts.Add((uint)regionInfo.RegionHandle, regionHost); | 33 | this.regionHosts.Add(regionInfo.RegionHandle, regionHost); |
34 | 34 | ||
35 | return regionHost; | 35 | return regionHost; |
36 | } | 36 | } |
@@ -59,13 +59,14 @@ namespace OpenGrid.Framework.Communications | |||
59 | } | 59 | } |
60 | 60 | ||
61 | /// <summary> | 61 | /// <summary> |
62 | /// | 62 | /// Is a Sandbox mode method, used by the local Login server to inform a region of a connection user/session |
63 | /// </summary> | 63 | /// </summary> |
64 | /// <param name="regionHandle"></param> | 64 | /// <param name="regionHandle"></param> |
65 | /// <param name="loginData"></param> | 65 | /// <param name="loginData"></param> |
66 | /// <returns></returns> | 66 | /// <returns></returns> |
67 | public bool AddNewSession(uint regionHandle, Login loginData) | 67 | public bool AddNewSession(ulong regionHandle, Login loginData) |
68 | { | 68 | { |
69 | Console.WriteLine(" comms manager been told to expect new user"); | ||
69 | AgentCircuitData agent = new AgentCircuitData(); | 70 | AgentCircuitData agent = new AgentCircuitData(); |
70 | agent.AgentID = loginData.Agent; | 71 | agent.AgentID = loginData.Agent; |
71 | agent.firstname = loginData.First; | 72 | agent.firstname = loginData.First; |
@@ -77,9 +78,9 @@ namespace OpenGrid.Framework.Communications | |||
77 | agent.InventoryFolder = loginData.InventoryFolder; | 78 | agent.InventoryFolder = loginData.InventoryFolder; |
78 | agent.startpos = new LLVector3(128, 128, 70); | 79 | agent.startpos = new LLVector3(128, 128, 70); |
79 | 80 | ||
80 | if (this.regionHosts.ContainsKey((uint)regionHandle)) | 81 | if (this.regionHosts.ContainsKey(regionHandle)) |
81 | { | 82 | { |
82 | this.regionHosts[(uint)regionHandle].TriggerExpectUser(agent); | 83 | this.regionHosts[regionHandle].TriggerExpectUser(regionHandle, agent); |
83 | return true; | 84 | return true; |
84 | } | 85 | } |
85 | 86 | ||
diff --git a/Common/OpenSim.Framework/IRegionCommsHost.cs b/Common/OpenSim.Framework/IRegionCommsHost.cs index d115bb7..c56383e 100644 --- a/Common/OpenSim.Framework/IRegionCommsHost.cs +++ b/Common/OpenSim.Framework/IRegionCommsHost.cs | |||
@@ -6,7 +6,7 @@ using OpenSim.Framework.Types; | |||
6 | 6 | ||
7 | namespace OpenSim.Framework | 7 | namespace OpenSim.Framework |
8 | { | 8 | { |
9 | public delegate void ExpectUserDelegate(AgentCircuitData agent); | 9 | public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent); |
10 | public delegate void UpdateNeighbours(List<RegionInfo> neighbours); | 10 | public delegate void UpdateNeighbours(List<RegionInfo> neighbours); |
11 | 11 | ||
12 | public interface IRegionCommsHost | 12 | public interface IRegionCommsHost |
diff --git a/Common/OpenSim.Framework/RegionCommsHostBase.cs b/Common/OpenSim.Framework/RegionCommsHostBase.cs index 782755e..41babe7 100644 --- a/Common/OpenSim.Framework/RegionCommsHostBase.cs +++ b/Common/OpenSim.Framework/RegionCommsHostBase.cs | |||
@@ -18,11 +18,11 @@ namespace OpenSim.Framework | |||
18 | /// </summary> | 18 | /// </summary> |
19 | /// <param name="agent"></param> | 19 | /// <param name="agent"></param> |
20 | /// <returns></returns> | 20 | /// <returns></returns> |
21 | public virtual bool TriggerExpectUser(AgentCircuitData agent) | 21 | public virtual bool TriggerExpectUser(ulong regionHandle, AgentCircuitData agent) |
22 | { | 22 | { |
23 | if(OnExpectUser != null) | 23 | if(OnExpectUser != null) |
24 | { | 24 | { |
25 | OnExpectUser(agent); | 25 | OnExpectUser(regionHandle, agent); |
26 | return true; | 26 | return true; |
27 | } | 27 | } |
28 | 28 | ||
diff --git a/Common/OpenSim.Servers/LocalUserProfileManager.cs b/Common/OpenSim.Servers/LocalUserProfileManager.cs index a8b5f1f..99c640a 100644 --- a/Common/OpenSim.Servers/LocalUserProfileManager.cs +++ b/Common/OpenSim.Servers/LocalUserProfileManager.cs | |||
@@ -116,8 +116,8 @@ namespace OpenSim.UserServer | |||
116 | Console.WriteLine("adding login data to gridserver"); | 116 | Console.WriteLine("adding login data to gridserver"); |
117 | ((LocalGridBase)this.m_gridServer).AddNewSession(_login); | 117 | ((LocalGridBase)this.m_gridServer).AddNewSession(_login); |
118 | }*/ | 118 | }*/ |
119 | 119 | ulong reghand = Helpers.UIntsToLong((regionX * 256), (regionY * 256)); | |
120 | this.AddSession(_login); | 120 | this.AddSession(reghand, _login); |
121 | } | 121 | } |
122 | } | 122 | } |
123 | } | 123 | } |
diff --git a/Common/OpenSim.Servers/LoginServer.cs b/Common/OpenSim.Servers/LoginServer.cs index 6fd174b..d02c41e 100644 --- a/Common/OpenSim.Servers/LoginServer.cs +++ b/Common/OpenSim.Servers/LoginServer.cs | |||
@@ -47,7 +47,7 @@ using OpenSim.Framework.Types; | |||
47 | 47 | ||
48 | namespace OpenSim.UserServer | 48 | namespace OpenSim.UserServer |
49 | { | 49 | { |
50 | public delegate void AddNewSessionHandler(Login loginData); | 50 | public delegate bool AddNewSessionHandler(ulong regionHandle, Login loginData); |
51 | /// <summary> | 51 | /// <summary> |
52 | /// When running in local (default) mode , handles client logins. | 52 | /// When running in local (default) mode , handles client logins. |
53 | /// </summary> | 53 | /// </summary> |
@@ -196,7 +196,8 @@ namespace OpenSim.UserServer | |||
196 | { | 196 | { |
197 | ((LocalGridBase)m_gridServer).AddNewSession(_login); | 197 | ((LocalGridBase)m_gridServer).AddNewSession(_login); |
198 | }*/ | 198 | }*/ |
199 | AddSession(_login); | 199 | ulong reghand = Helpers.UIntsToLong((regionX * 256), (regionY * 256)); |
200 | AddSession(reghand,_login); | ||
200 | 201 | ||
201 | return response; | 202 | return response; |
202 | } | 203 | } |
diff --git a/OpenSim/OpenSim.World/OpenSim.World.csproj b/OpenSim/OpenSim.World/OpenSim.World.csproj index 37293e1..78025d3 100644 --- a/OpenSim/OpenSim.World/OpenSim.World.csproj +++ b/OpenSim/OpenSim.World/OpenSim.World.csproj | |||
@@ -87,6 +87,10 @@ | |||
87 | </Reference> | 87 | </Reference> |
88 | </ItemGroup> | 88 | </ItemGroup> |
89 | <ItemGroup> | 89 | <ItemGroup> |
90 | <ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications\OpenGrid.Framework.Communications.csproj"> | ||
91 | <Project>{C9702041-922C-452A-A1B4-7880AF53149A}</Project> | ||
92 | <Name>OpenGrid.Framework.Communications</Name> | ||
93 | </ProjectReference> | ||
90 | <ProjectReference Include="..\OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj"> | 94 | <ProjectReference Include="..\OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj"> |
91 | <Name>OpenSim.Terrain.BasicTerrain</Name> | 95 | <Name>OpenSim.Terrain.BasicTerrain</Name> |
92 | <Project>{2270B8FE-0000-0000-0000-000000000000}</Project> | 96 | <Project>{2270B8FE-0000-0000-0000-000000000000}</Project> |
diff --git a/OpenSim/OpenSim.World/World.cs b/OpenSim/OpenSim.World/World.cs index c731dbc..69d4646 100644 --- a/OpenSim/OpenSim.World/World.cs +++ b/OpenSim/OpenSim.World/World.cs | |||
@@ -14,6 +14,7 @@ using OpenSim.Framework.Inventory; | |||
14 | using OpenSim.Framework; | 14 | using OpenSim.Framework; |
15 | using OpenSim.RegionServer.world.scripting; | 15 | using OpenSim.RegionServer.world.scripting; |
16 | using OpenSim.Terrain; | 16 | using OpenSim.Terrain; |
17 | using OpenGrid.Framework.Communications; | ||
17 | 18 | ||
18 | namespace OpenSim.world | 19 | namespace OpenSim.world |
19 | { | 20 | { |
@@ -36,6 +37,8 @@ namespace OpenSim.world | |||
36 | private Mutex updateLock; | 37 | private Mutex updateLock; |
37 | public string m_datastore; | 38 | public string m_datastore; |
38 | protected AuthenticateSessionsBase authenticateHandler; | 39 | protected AuthenticateSessionsBase authenticateHandler; |
40 | protected RegionCommsHostBase regionCommsHost; | ||
41 | protected RegionServerCommsManager commsManager; | ||
39 | 42 | ||
40 | #region Properties | 43 | #region Properties |
41 | /// <summary> | 44 | /// <summary> |
@@ -61,17 +64,19 @@ namespace OpenSim.world | |||
61 | /// <param name="clientThreads">Dictionary to contain client threads</param> | 64 | /// <param name="clientThreads">Dictionary to contain client threads</param> |
62 | /// <param name="regionHandle">Region Handle for this region</param> | 65 | /// <param name="regionHandle">Region Handle for this region</param> |
63 | /// <param name="regionName">Region Name for this region</param> | 66 | /// <param name="regionName">Region Name for this region</param> |
64 | public World(Dictionary<uint, IClientAPI> clientThreads, RegionInfo regInfo, AuthenticateSessionsBase authen) | 67 | public World(Dictionary<uint, IClientAPI> clientThreads, RegionInfo regInfo, AuthenticateSessionsBase authen, RegionServerCommsManager commsMan) |
65 | { | 68 | { |
66 | try | 69 | try |
67 | { | 70 | { |
68 | updateLock = new Mutex(false); | 71 | updateLock = new Mutex(false); |
69 | this.authenticateHandler = authen; | 72 | this.authenticateHandler = authen; |
73 | this.commsManager = commsMan; | ||
70 | m_clientThreads = clientThreads; | 74 | m_clientThreads = clientThreads; |
71 | m_regInfo = regInfo; | 75 | m_regInfo = regInfo; |
72 | m_regionHandle = m_regInfo.RegionHandle; | 76 | m_regionHandle = m_regInfo.RegionHandle; |
73 | m_regionName = m_regInfo.RegionName; | 77 | m_regionName = m_regInfo.RegionName; |
74 | this.m_datastore = m_regInfo.DataStore; | 78 | this.m_datastore = m_regInfo.DataStore; |
79 | this.RegisterRegionWithComms(); | ||
75 | 80 | ||
76 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); | 81 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); |
77 | m_scripts = new Dictionary<string, ScriptFactory>(); | 82 | m_scripts = new Dictionary<string, ScriptFactory>(); |
@@ -540,5 +545,27 @@ namespace OpenSim.world | |||
540 | } | 545 | } |
541 | #endregion | 546 | #endregion |
542 | 547 | ||
548 | #region RegionCommsHost | ||
549 | |||
550 | public void RegisterRegionWithComms() | ||
551 | { | ||
552 | this.regionCommsHost = this.commsManager.RegisterRegion(this.m_regInfo); | ||
553 | if (this.regionCommsHost != null) | ||
554 | { | ||
555 | this.regionCommsHost.OnExpectUser += new ExpectUserDelegate(this.NewUserConnection); | ||
556 | } | ||
557 | } | ||
558 | |||
559 | public void NewUserConnection(ulong regionHandle,AgentCircuitData agent) | ||
560 | { | ||
561 | Console.WriteLine("World.cs - add new user connection"); | ||
562 | //should just check that its meant for this region | ||
563 | if (regionHandle == this.m_regInfo.RegionHandle) | ||
564 | { | ||
565 | this.authenticateHandler.AddNewCircuit(agent.circuitcode, agent); | ||
566 | } | ||
567 | } | ||
568 | |||
569 | #endregion | ||
543 | } | 570 | } |
544 | } | 571 | } |
diff --git a/OpenSim/OpenSim/OpenSim.csproj b/OpenSim/OpenSim/OpenSim.csproj index 79abd9e..03ae6ab 100644 --- a/OpenSim/OpenSim/OpenSim.csproj +++ b/OpenSim/OpenSim/OpenSim.csproj | |||
@@ -87,6 +87,10 @@ | |||
87 | </Reference> | 87 | </Reference> |
88 | </ItemGroup> | 88 | </ItemGroup> |
89 | <ItemGroup> | 89 | <ItemGroup> |
90 | <ProjectReference Include="..\..\Common\OpenGrid.Framework.Communications\OpenGrid.Framework.Communications.csproj"> | ||
91 | <Project>{C9702041-922C-452A-A1B4-7880AF53149A}</Project> | ||
92 | <Name>OpenGrid.Framework.Communications</Name> | ||
93 | </ProjectReference> | ||
90 | <ProjectReference Include="..\OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj"> | 94 | <ProjectReference Include="..\OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj"> |
91 | <Name>OpenSim.Terrain.BasicTerrain</Name> | 95 | <Name>OpenSim.Terrain.BasicTerrain</Name> |
92 | <Project>{2270B8FE-0000-0000-0000-000000000000}</Project> | 96 | <Project>{2270B8FE-0000-0000-0000-000000000000}</Project> |
diff --git a/OpenSim/OpenSim/OpenSimMain.cs b/OpenSim/OpenSim/OpenSimMain.cs index 4aa48bd..66aadb0 100644 --- a/OpenSim/OpenSim/OpenSimMain.cs +++ b/OpenSim/OpenSim/OpenSimMain.cs | |||
@@ -51,6 +51,7 @@ using OpenSim.Physics.Manager; | |||
51 | using Nwc.XmlRpc; | 51 | using Nwc.XmlRpc; |
52 | using OpenSim.Servers; | 52 | using OpenSim.Servers; |
53 | using OpenSim.GenericConfig; | 53 | using OpenSim.GenericConfig; |
54 | using OpenGrid.Framework.Communications; | ||
54 | 55 | ||
55 | namespace OpenSim | 56 | namespace OpenSim |
56 | { | 57 | { |
@@ -58,6 +59,7 @@ namespace OpenSim | |||
58 | public class OpenSimMain : RegionServerBase, conscmd_callback | 59 | public class OpenSimMain : RegionServerBase, conscmd_callback |
59 | { | 60 | { |
60 | private CheckSumServer checkServer; | 61 | private CheckSumServer checkServer; |
62 | protected RegionServerCommsManager commsManager; | ||
61 | 63 | ||
62 | public OpenSimMain(bool sandBoxMode, bool startLoginServer, string physicsEngine, bool useConfigFile, bool silent, string configFile) | 64 | public OpenSimMain(bool sandBoxMode, bool startLoginServer, string physicsEngine, bool useConfigFile, bool silent, string configFile) |
63 | { | 65 | { |
@@ -101,10 +103,12 @@ namespace OpenSim | |||
101 | this.SetupLocalGridServers(); | 103 | this.SetupLocalGridServers(); |
102 | this.checkServer = new CheckSumServer(12036); | 104 | this.checkServer = new CheckSumServer(12036); |
103 | this.checkServer.ServerListener(); | 105 | this.checkServer.ServerListener(); |
106 | this.commsManager = new TestLocalCommsManager(); | ||
104 | } | 107 | } |
105 | else | 108 | else |
106 | { | 109 | { |
107 | this.SetupRemoteGridServers(); | 110 | this.SetupRemoteGridServers(); |
111 | this.commsManager = new TestLocalCommsManager(); //should be a remote comms manager class | ||
108 | } | 112 | } |
109 | 113 | ||
110 | startuptime = DateTime.Now; | 114 | startuptime = DateTime.Now; |
@@ -126,8 +130,8 @@ namespace OpenSim | |||
126 | { | 130 | { |
127 | loginServer = new LoginServer(regionData[0].IPListenAddr, regionData[0].IPListenPort, regionData[0].RegionLocX, regionData[0].RegionLocY, false); | 131 | loginServer = new LoginServer(regionData[0].IPListenAddr, regionData[0].IPListenPort, regionData[0].RegionLocX, regionData[0].RegionLocY, false); |
128 | loginServer.Startup(); | 132 | loginServer.Startup(); |
129 | loginServer.SetSessionHandler(((AuthenticateSessionsLocal)this.AuthenticateSessionsHandler[0]).AddNewSession); | 133 | //loginServer.SetSessionHandler(((AuthenticateSessionsLocal)this.AuthenticateSessionsHandler[0]).AddNewSession); |
130 | 134 | loginServer.SetSessionHandler(((TestLocalCommsManager)this.commsManager).AddNewSession); | |
131 | //sandbox mode with loginserver not using accounts | 135 | //sandbox mode with loginserver not using accounts |
132 | httpServer.AddXmlRPCHandler("login_to_simulator", loginServer.XmlRpcLoginMethod); | 136 | httpServer.AddXmlRPCHandler("login_to_simulator", loginServer.XmlRpcLoginMethod); |
133 | } | 137 | } |
@@ -234,7 +238,7 @@ namespace OpenSim | |||
234 | m_console.componentname = "Region " + regionData.RegionName; | 238 | m_console.componentname = "Region " + regionData.RegionName; |
235 | */ | 239 | */ |
236 | 240 | ||
237 | LocalWorld = new World(udpServer.PacketServer.ClientAPIs, regionDat, authenBase); | 241 | LocalWorld = new World(udpServer.PacketServer.ClientAPIs, regionDat, authenBase, commsManager); |
238 | this.m_localWorld.Add(LocalWorld); | 242 | this.m_localWorld.Add(LocalWorld); |
239 | //LocalWorld.InventoryCache = InventoryCache; | 243 | //LocalWorld.InventoryCache = InventoryCache; |
240 | //LocalWorld.AssetCache = AssetCache; | 244 | //LocalWorld.AssetCache = AssetCache; |