View of /trunk/AssetServer.cs
Parent Directory
|
Revision Log
Revision 26 -
(download)
(annotate)
Mon Nov 17 22:19:39 2008 UTC (4 years, 7 months ago) by jhurliman
File size: 5114 byte(s)
Mon Nov 17 22:19:39 2008 UTC (4 years, 7 months ago) by jhurliman
File size: 5114 byte(s)
* svn:externals referencing ExtensionLoader project * Moved all third party libraries to libs/ folder * Updated LICENSES.txt to include all third party libraries
/*
* Copyright (c) 2008 Intel Corporation
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* -- Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* -- Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* -- Neither the name of the Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR ITS
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Xml;
using System.Text;
using System.Reflection;
using ExtensionLoader;
using ExtensionLoader.Config;
using OpenMetaverse;
using OpenMetaverse.Capabilities;
using OpenMetaverse.StructuredData;
namespace AssetServer
{
public class AssetServer
{
public const string CONFIG_FILE = "AssetServer.ini";
public int HttpPort = 9001;
public HttpServer HttpServer;
public IniConfigSource ConfigFile;
public IStorageProvider StorageProvider;
public IAuthenticationProvider AuthenticationProvider;
public IAuthorizationProvider AuthorizationProvider;
public AssetServer()
{
}
public bool Start(int port, bool ssl)
{
HttpPort = port;
List<string> extensionList = null;
try
{
// Load the extension list (and ordering) from our config file
ConfigFile = new IniConfigSource(CONFIG_FILE);
IConfig extensionConfig = ConfigFile.Configs["Extensions"];
extensionList = new List<string>(extensionConfig.GetKeys());
}
catch (Exception)
{
Logger.Log("Failed to load [Extensions] section from " + CONFIG_FILE, Helpers.LogLevel.Error);
return false;
}
try
{
// Load all of the extensions
List<string> references = new List<string>();
references.Add("OpenMetaverseTypes.dll");
references.Add("OpenMetaverse.dll");
references.Add("ExtensionLoader.dll");
references.Add("AssetServer.exe");
List<FieldInfo> assignables = ExtensionLoader<AssetServer>.GetInterfaces(this);
ExtensionLoader<AssetServer>.LoadAllExtensions(Assembly.GetExecutingAssembly(),
AppDomain.CurrentDomain.BaseDirectory, extensionList, references,
"AssetServer.*.dll", "AssetServer.*.cs", this, assignables);
}
catch (ExtensionException ex)
{
Logger.Log("Interface loading failed, shutting down: " + ex.Message, Helpers.LogLevel.Error);
Stop();
return false;
}
InitHttpServer(HttpPort, ssl);
// Start all of the extensions
foreach (IExtension<AssetServer> extension in ExtensionLoader<AssetServer>.Extensions)
{
Logger.Log("Starting extension " + extension.GetType().Name, Helpers.LogLevel.Info);
extension.Start(this);
}
return true;
}
public void Stop()
{
foreach (IExtension<AssetServer> extension in ExtensionLoader<AssetServer>.Extensions)
{
Logger.DebugLog("Stopping extension " + extension.GetType().Name);
extension.Stop();
}
if (HttpServer != null)
HttpServer.Stop();
}
void InitHttpServer(int port, bool ssl)
{
HttpServer = new HttpServer(HttpPort, ssl);
HttpServer.Start();
Logger.Log("Asset server is listening on port " + port, Helpers.LogLevel.Info);
}
}
}
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

