aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Application/OpenSimBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Application/OpenSimBase.cs')
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs125
1 files changed, 24 insertions, 101 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 9108e5d..a7ebff3 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -36,17 +36,15 @@ using log4net;
36using Nini.Config; 36using Nini.Config;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Communications;
40using OpenSim.Framework.Console; 39using OpenSim.Framework.Console;
41using OpenSim.Framework.Servers; 40using OpenSim.Framework.Servers;
42using OpenSim.Framework.Servers.HttpServer; 41using OpenSim.Framework.Servers.HttpServer;
43using OpenSim.Framework.Monitoring; 42using OpenSim.Framework.Monitoring;
44using OpenSim.Region.ClientStack;
45using OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts; 43using OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts;
46using OpenSim.Region.Framework; 44using OpenSim.Region.Framework;
47using OpenSim.Region.Framework.Interfaces; 45using OpenSim.Region.Framework.Interfaces;
48using OpenSim.Region.Framework.Scenes; 46using OpenSim.Region.Framework.Scenes;
49using OpenSim.Region.Physics.Manager; 47using OpenSim.Region.PhysicsModules.SharedBase;
50using OpenSim.Server.Base; 48using OpenSim.Server.Base;
51using OpenSim.Services.Base; 49using OpenSim.Services.Base;
52using OpenSim.Services.Interfaces; 50using OpenSim.Services.Interfaces;
@@ -121,19 +119,12 @@ namespace OpenSim
121 /// </value> 119 /// </value>
122 public OpenSimConfigSource ConfigSource { get; private set; } 120 public OpenSimConfigSource ConfigSource { get; private set; }
123 121
124 public List<IClientNetworkServer> ClientServers
125 {
126 get { return m_clientServers; }
127 }
128
129 protected EnvConfigSource m_EnvConfigSource = new EnvConfigSource(); 122 protected EnvConfigSource m_EnvConfigSource = new EnvConfigSource();
130 123
131 public EnvConfigSource envConfigSource 124 public EnvConfigSource envConfigSource
132 { 125 {
133 get { return m_EnvConfigSource; } 126 get { return m_EnvConfigSource; }
134 } 127 }
135
136 protected List<IClientNetworkServer> m_clientServers = new List<IClientNetworkServer>();
137 128
138 public uint HttpServerPort 129 public uint HttpServerPort
139 { 130 {
@@ -371,9 +362,9 @@ namespace OpenSim
371 /// <param name="regionInfo"></param> 362 /// <param name="regionInfo"></param>
372 /// <param name="portadd_flag"></param> 363 /// <param name="portadd_flag"></param>
373 /// <returns></returns> 364 /// <returns></returns>
374 public List<IClientNetworkServer> CreateRegion(RegionInfo regionInfo, bool portadd_flag, out IScene scene) 365 public void CreateRegion(RegionInfo regionInfo, bool portadd_flag, out IScene scene)
375 { 366 {
376 return CreateRegion(regionInfo, portadd_flag, false, out scene); 367 CreateRegion(regionInfo, portadd_flag, false, out scene);
377 } 368 }
378 369
379 /// <summary> 370 /// <summary>
@@ -381,9 +372,9 @@ namespace OpenSim
381 /// </summary> 372 /// </summary>
382 /// <param name="regionInfo"></param> 373 /// <param name="regionInfo"></param>
383 /// <returns></returns> 374 /// <returns></returns>
384 public List<IClientNetworkServer> CreateRegion(RegionInfo regionInfo, out IScene scene) 375 public void CreateRegion(RegionInfo regionInfo, out IScene scene)
385 { 376 {
386 return CreateRegion(regionInfo, false, true, out scene); 377 CreateRegion(regionInfo, false, true, out scene);
387 } 378 }
388 379
389 /// <summary> 380 /// <summary>
@@ -393,7 +384,7 @@ namespace OpenSim
393 /// <param name="portadd_flag"></param> 384 /// <param name="portadd_flag"></param>
394 /// <param name="do_post_init"></param> 385 /// <param name="do_post_init"></param>
395 /// <returns></returns> 386 /// <returns></returns>
396 public List<IClientNetworkServer> CreateRegion(RegionInfo regionInfo, bool portadd_flag, bool do_post_init, out IScene mscene) 387 public void CreateRegion(RegionInfo regionInfo, bool portadd_flag, bool do_post_init, out IScene mscene)
397 { 388 {
398 int port = regionInfo.InternalEndPoint.Port; 389 int port = regionInfo.InternalEndPoint.Port;
399 390
@@ -418,8 +409,7 @@ namespace OpenSim
418 Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName); 409 Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName);
419 } 410 }
420 411
421 List<IClientNetworkServer> clientServers; 412 Scene scene = SetupScene(regionInfo, proxyOffset, Config);
422 Scene scene = SetupScene(regionInfo, proxyOffset, Config, out clientServers);
423 413
424 m_log.Info("[MODULES]: Loading Region's modules (old style)"); 414 m_log.Info("[MODULES]: Loading Region's modules (old style)");
425 415
@@ -511,14 +501,14 @@ namespace OpenSim
511 501
512 SceneManager.Add(scene); 502 SceneManager.Add(scene);
513 503
514 if (m_autoCreateClientStack) 504 //if (m_autoCreateClientStack)
515 { 505 //{
516 foreach (IClientNetworkServer clientserver in clientServers) 506 // foreach (IClientNetworkServer clientserver in clientServers)
517 { 507 // {
518 m_clientServers.Add(clientserver); 508 // m_clientServers.Add(clientserver);
519 clientserver.Start(); 509 // clientserver.Start();
520 } 510 // }
521 } 511 //}
522 512
523 if (scene.SnmpService != null) 513 if (scene.SnmpService != null)
524 { 514 {
@@ -534,7 +524,7 @@ namespace OpenSim
534 scene.SnmpService.LinkUp(scene); 524 scene.SnmpService.LinkUp(scene);
535 } 525 }
536 526
537 return clientServers; 527 //return clientServers;
538 } 528 }
539 529
540 /// <summary> 530 /// <summary>
@@ -673,7 +663,7 @@ namespace OpenSim
673 663
674 scene.DeleteAllSceneObjects(); 664 scene.DeleteAllSceneObjects();
675 SceneManager.CloseScene(scene); 665 SceneManager.CloseScene(scene);
676 ShutdownClientServer(scene.RegionInfo); 666 //ShutdownClientServer(scene.RegionInfo);
677 667
678 if (!cleanup) 668 if (!cleanup)
679 return; 669 return;
@@ -734,7 +724,7 @@ namespace OpenSim
734 } 724 }
735 725
736 SceneManager.CloseScene(scene); 726 SceneManager.CloseScene(scene);
737 ShutdownClientServer(scene.RegionInfo); 727 //ShutdownClientServer(scene.RegionInfo);
738 } 728 }
739 729
740 /// <summary> 730 /// <summary>
@@ -755,9 +745,9 @@ namespace OpenSim
755 /// <param name="regionInfo"></param> 745 /// <param name="regionInfo"></param>
756 /// <param name="clientServer"> </param> 746 /// <param name="clientServer"> </param>
757 /// <returns></returns> 747 /// <returns></returns>
758 protected Scene SetupScene(RegionInfo regionInfo, out List<IClientNetworkServer> clientServer) 748 protected Scene SetupScene(RegionInfo regionInfo)
759 { 749 {
760 return SetupScene(regionInfo, 0, null, out clientServer); 750 return SetupScene(regionInfo, 0, null);
761 } 751 }
762 752
763 /// <summary> 753 /// <summary>
@@ -768,55 +758,18 @@ namespace OpenSim
768 /// <param name="configSource"></param> 758 /// <param name="configSource"></param>
769 /// <param name="clientServer"> </param> 759 /// <param name="clientServer"> </param>
770 /// <returns></returns> 760 /// <returns></returns>
771 protected Scene SetupScene( 761 protected Scene SetupScene(RegionInfo regionInfo, int proxyOffset, IConfigSource configSource)
772 RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out List<IClientNetworkServer> clientServer)
773 { 762 {
774 List<IClientNetworkServer> clientNetworkServers = null; 763 //List<IClientNetworkServer> clientNetworkServers = null;
775 764
776 AgentCircuitManager circuitManager = new AgentCircuitManager(); 765 AgentCircuitManager circuitManager = new AgentCircuitManager();
777 IPAddress listenIP = regionInfo.InternalEndPoint.Address;
778 //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
779 // listenIP = IPAddress.Parse("0.0.0.0");
780
781 uint port = (uint) regionInfo.InternalEndPoint.Port;
782
783 if (m_autoCreateClientStack)
784 {
785 clientNetworkServers = m_clientStackManager.CreateServers(
786 listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource,
787 circuitManager);
788 }
789 else
790 {
791 clientServer = null;
792 }
793
794 regionInfo.InternalEndPoint.Port = (int) port;
795
796 Scene scene = CreateScene(regionInfo, m_simulationDataService, m_estateDataService, circuitManager); 766 Scene scene = CreateScene(regionInfo, m_simulationDataService, m_estateDataService, circuitManager);
797 767
798 if (m_autoCreateClientStack)
799 {
800 foreach (IClientNetworkServer clientnetserver in clientNetworkServers)
801 {
802 clientnetserver.AddScene(scene);
803 }
804 }
805 clientServer = clientNetworkServers;
806 scene.LoadWorldMap(); 768 scene.LoadWorldMap();
807 769
808 scene.PhysicsScene.RequestAssetMethod = scene.PhysicsRequestAsset;
809 scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
810 scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight);
811
812 return scene; 770 return scene;
813 } 771 }
814 772
815 protected override ClientStackManager CreateClientStackManager()
816 {
817 return new ClientStackManager(m_configSettings.ClientstackDll);
818 }
819
820 protected override Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, 773 protected override Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService,
821 IEstateDataService estateDataService, AgentCircuitManager circuitManager) 774 IEstateDataService estateDataService, AgentCircuitManager circuitManager)
822 { 775 {
@@ -825,42 +778,18 @@ namespace OpenSim
825 SceneCommunicationService sceneGridService = new SceneCommunicationService(); 778 SceneCommunicationService sceneGridService = new SceneCommunicationService();
826 779
827 return new Scene( 780 return new Scene(
828 regionInfo, circuitManager, physicsScene, sceneGridService, 781 regionInfo, circuitManager,
829 simDataService, estateDataService, 782 simDataService, estateDataService,
830 Config, m_version); 783 Config, m_version);
831 } 784 }
832 785
833 protected void ShutdownClientServer(RegionInfo whichRegion)
834 {
835 // Close and remove the clientserver for a region
836 bool foundClientServer = false;
837 int clientServerElement = 0;
838 Location location = new Location(whichRegion.RegionHandle);
839
840 for (int i = 0; i < m_clientServers.Count; i++)
841 {
842 if (m_clientServers[i].HandlesRegion(location))
843 {
844 clientServerElement = i;
845 foundClientServer = true;
846 break;
847 }
848 }
849
850 if (foundClientServer)
851 {
852 m_clientServers[clientServerElement].Stop();
853 m_clientServers.RemoveAt(clientServerElement);
854 }
855 }
856
857 protected virtual void HandleRestartRegion(RegionInfo whichRegion) 786 protected virtual void HandleRestartRegion(RegionInfo whichRegion)
858 { 787 {
859 m_log.InfoFormat( 788 m_log.InfoFormat(
860 "[OPENSIM]: Got restart signal from SceneManager for region {0} ({1},{2})", 789 "[OPENSIM]: Got restart signal from SceneManager for region {0} ({1},{2})",
861 whichRegion.RegionName, whichRegion.RegionLocX, whichRegion.RegionLocY); 790 whichRegion.RegionName, whichRegion.RegionLocX, whichRegion.RegionLocY);
862 791
863 ShutdownClientServer(whichRegion); 792 //ShutdownClientServer(whichRegion);
864 IScene scene; 793 IScene scene;
865 CreateRegion(whichRegion, true, out scene); 794 CreateRegion(whichRegion, true, out scene);
866 scene.Start(); 795 scene.Start();
@@ -868,12 +797,6 @@ namespace OpenSim
868 797
869 # region Setup methods 798 # region Setup methods
870 799
871 protected override PhysicsScene GetPhysicsScene(string osSceneIdentifier, Vector3 regionExtent)
872 {
873 return GetPhysicsScene(
874 m_configSettings.PhysicsEngine, m_configSettings.MeshEngineName, Config, osSceneIdentifier, regionExtent);
875 }
876
877 /// <summary> 800 /// <summary>
878 /// Handler to supply the current status of this sim 801 /// Handler to supply the current status of this sim
879 /// </summary> 802 /// </summary>