OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
ServerConnector.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;
29 using Nini.Config;
30 using OpenSim.Server.Base;
31 using OpenSim.Services.Interfaces;
32 using OpenSim.Framework.Servers.HttpServer;
33 
34 namespace OpenSim.Server.Handlers.Base
35 {
36  public interface IServiceConnector
37  {
38  }
39 
41  {
42  public virtual string ConfigURL
43  {
44  get { return String.Empty; }
45  }
46 
47  public virtual string ConfigName
48  {
49  get;
50  protected set;
51  }
52 
53  public virtual string ConfigFile
54  {
55  get;
56  protected set;
57  }
58 
59  public virtual IConfigSource Config
60  {
61  get;
62  protected set;
63  }
64 
66  {
67  }
68 
69  public ServiceConnector(IConfigSource config, IHttpServer server, string configName)
70  {
71  }
72 
73  // We call this from our plugin module to get our configuration
74  public IConfig GetConfig()
75  {
76  IConfig config = null;
77  config = ServerUtils.GetConfig(ConfigFile, ConfigName);
78 
79  // Our file is not here? We can get one to bootstrap our plugin module
80  if ( config == null )
81  {
82  IConfigSource remotesource = GetConfigSource();
83 
84  if (remotesource != null)
85  {
86  IniConfigSource initialconfig = new IniConfigSource();
87  initialconfig.Merge (remotesource);
88  initialconfig.Save(ConfigFile);
89  }
90 
91  config = remotesource.Configs[ConfigName];
92  }
93 
94  return config;
95  }
96 
97  // We get our remote initial configuration for bootstrapping in case
98  // we have no configuration in our main file or in an existing
99  // modular config file. This is the last resort to bootstrap the
100  // configuration, likely a new plugin loading for the first time.
101  private IConfigSource GetConfigSource()
102  {
103  IConfigSource source = null;
104 
105  source = ServerUtils.LoadInitialConfig(ConfigURL);
106 
107  if (source == null)
108  System.Console.WriteLine(String.Format ("Config Url: {0} Not found!", ConfigURL));
109 
110  return source;
111  }
112  }
113 }
ServiceConnector(IConfigSource config, IHttpServer server, string configName)
Interface to OpenSimulator's built in HTTP server. Use this to register handlers (http, llsd, xmlrpc, etc.) for given URLs.
Definition: IHttpServer.cs:36
Interactive OpenSim region server
Definition: OpenSim.cs:55