OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
RegionApplicationBase.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 using System.Collections.Generic;
29 using System.Net;
30 using System.Reflection;
31 using log4net;
32 using Nini.Config;
33 using OpenMetaverse;
34 using OpenSim.Framework;
35 using OpenSim.Framework.Servers;
36 using OpenSim.Framework.Servers.HttpServer;
37 using OpenSim.Region.Framework;
38 using OpenSim.Region.Framework.Interfaces;
39 using OpenSim.Region.Framework.Scenes;
40 using OpenSim.Region.PhysicsModules.SharedBase;
41 using OpenSim.Services.Interfaces;
42 
43 namespace OpenSim
44 {
45  public abstract class RegionApplicationBase : BaseOpenSimServer
46  {
47  private static readonly ILog m_log
48  = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49 
50  protected Dictionary<EndPoint, uint> m_clientCircuits = new Dictionary<EndPoint, uint>();
52  protected uint m_httpServerPort;
55 
56  public SceneManager SceneManager { get; protected set; }
60 
61  protected abstract void Initialize();
62 
63  protected abstract Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, IEstateDataService estateDataService, AgentCircuitManager circuitManager);
64 
65  protected override void StartupSpecific()
66  {
67  SceneManager = SceneManager.Instance;
68 
69  Initialize();
70 
72  = new BaseHttpServer(
75 
77  {
78  m_log.Error("[REGION SERVER]: HTTP Server config failed. HTTP Server and HTTPS server must be on different ports");
79  }
80 
81  m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0}", m_httpServerPort);
82  m_httpServer.Start();
83 
84  MainServer.AddHttpServer(m_httpServer);
85  MainServer.Instance = m_httpServer;
86 
87  // "OOB" Server
89  {
91  {
92  BaseHttpServer server = new BaseHttpServer(
95 
96  m_log.InfoFormat("[REGION SERVER]: Starting HTTPS server on port {0}", server.Port);
97  MainServer.AddHttpServer(server);
98  server.Start();
99  }
100  else
101  {
102  BaseHttpServer server = new BaseHttpServer(
104 
105  m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0} for external HTTPS", server.Port);
106  MainServer.AddHttpServer(server);
107  server.Start();
108  }
109  }
110 
111  base.StartupSpecific();
112  }
113 
114  }
115 }
abstract Scene CreateScene(RegionInfo regionInfo, ISimulationDataService simDataService, IEstateDataService estateDataService, AgentCircuitManager circuitManager)
Dictionary< EndPoint, uint > m_clientCircuits
Common base for the main OpenSimServers (user, grid, inventory, region, etc)
Manager for adding, closing and restarting scenes.
Definition: SceneManager.cs:44
override void StartupSpecific()
Must be overriden by child classes for their own server specific startup behaviour.
ISimulationDataService SimulationDataService
ISimulationDataService m_simulationDataService