2007-04-02 01:40:58 +00:00
/ *
* Copyright ( c ) OpenSim project , http : //sim.opensecondlife.org/
*
* 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 < organization > nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission .
*
2007-06-01 23:34:37 +00:00
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ` ` AS IS ' ' AND ANY
2007-04-02 01:40:58 +00:00
* 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 < copyright holder > 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 ;
2007-04-02 02:11:51 +00:00
using OpenSim.Framework.Console ;
2007-04-02 01:40:58 +00:00
using OpenSim.Framework.Interfaces ;
using Db4objects.Db4o ;
2007-04-02 02:11:51 +00:00
namespace OpenGrid.Config.GridConfigDb4o
2007-04-02 01:40:58 +00:00
{
2007-06-01 23:34:37 +00:00
/// <summary>
/// A grid configuration interface for returning the DB4o Config Provider
/// </summary>
2007-04-02 02:11:51 +00:00
public class Db40ConfigPlugin : IGridConfig
2007-04-02 01:40:58 +00:00
{
2007-06-01 23:34:37 +00:00
/// <summary>
/// Loads and returns a configuration objeect
/// </summary>
/// <returns>A grid configuration object</returns>
2007-04-02 02:11:51 +00:00
public GridConfig GetConfigObject ( )
2007-04-02 01:40:58 +00:00
{
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Loading Db40Config dll" ) ;
2007-04-02 02:11:51 +00:00
return ( new DbGridConfig ( ) ) ;
2007-04-02 01:40:58 +00:00
}
}
2007-06-01 23:34:37 +00:00
/// <summary>
/// A DB4o based Gridserver configuration object
/// </summary>
2007-04-02 02:11:51 +00:00
public class DbGridConfig : GridConfig
2007-04-02 01:40:58 +00:00
{
2007-06-01 23:34:37 +00:00
/// <summary>
/// The DB4o Database
/// </summary>
2007-04-02 01:40:58 +00:00
private IObjectContainer db ;
2007-06-01 23:34:37 +00:00
/// <summary>
/// User configuration for the Grid Config interfaces
/// </summary>
2007-04-02 01:40:58 +00:00
public void LoadDefaults ( ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . HIGH , "Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings" ) ;
2007-04-02 01:40:58 +00:00
2007-06-01 23:34:37 +00:00
// About the grid options
2007-04-11 20:07:58 +00:00
this . GridOwner = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid owner" , "OGS development team" ) ;
2007-04-02 02:11:51 +00:00
2007-06-01 23:34:37 +00:00
// Asset Options
2007-04-21 05:09:06 +00:00
this . DefaultAssetServer = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Default asset server" , "http://127.0.0.1:8003/" ) ;
2007-06-01 23:34:37 +00:00
this . AssetSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to asset server" , "null" ) ;
this . AssetRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from asset server" , "null" ) ;
2007-04-02 02:11:51 +00:00
2007-06-01 23:34:37 +00:00
// User Server Options
this . DefaultUserServer = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Default user server" , "http://127.0.0.1:8002/" ) ;
this . UserSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to user server" , "null" ) ;
this . UserRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from user server" , "null" ) ;
2007-04-02 02:11:51 +00:00
2007-06-01 23:34:37 +00:00
// Region Server Options
this . SimSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to sims" , "null" ) ;
this . SimRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from sims" , "null" ) ;
2007-04-02 01:40:58 +00:00
}
2007-06-01 23:34:37 +00:00
/// <summary>
/// Initialises a new configuration object
/// </summary>
2007-04-02 02:11:51 +00:00
public override void InitConfig ( ) {
2007-04-02 01:40:58 +00:00
try {
2007-06-01 23:34:37 +00:00
// Perform Db4o initialisation
2007-04-02 02:11:51 +00:00
db = Db4oFactory . OpenFile ( "opengrid.yap" ) ;
2007-06-01 23:34:37 +00:00
// Locate the grid configuration object
2007-04-02 02:11:51 +00:00
IObjectSet result = db . Get ( typeof ( DbGridConfig ) ) ;
2007-06-01 23:34:37 +00:00
// Found?
2007-04-02 01:40:58 +00:00
if ( result . Count = = 1 ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Config.cs:InitConfig() - Found a GridConfig object in the local database, loading" ) ;
2007-04-02 02:11:51 +00:00
foreach ( DbGridConfig cfg in result ) {
2007-06-01 23:34:37 +00:00
// Import each setting into this class
// Grid Settings
2007-04-02 02:11:51 +00:00
this . GridOwner = cfg . GridOwner ;
2007-06-01 23:34:37 +00:00
// Asset Settings
2007-04-02 02:11:51 +00:00
this . DefaultAssetServer = cfg . DefaultAssetServer ;
this . AssetSendKey = cfg . AssetSendKey ;
this . AssetRecvKey = cfg . AssetRecvKey ;
2007-06-01 23:34:37 +00:00
// User Settings
2007-04-02 02:11:51 +00:00
this . DefaultUserServer = cfg . DefaultUserServer ;
this . UserSendKey = cfg . UserSendKey ;
this . UserRecvKey = cfg . UserRecvKey ;
2007-06-01 23:34:37 +00:00
// Region Settings
2007-04-02 02:11:51 +00:00
this . SimSendKey = cfg . SimSendKey ;
this . SimRecvKey = cfg . SimRecvKey ;
2007-04-02 01:40:58 +00:00
}
2007-06-01 23:34:37 +00:00
// Create a new configuration object from this class
2007-04-02 01:40:58 +00:00
} else {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults" ) ;
2007-06-01 23:34:37 +00:00
// Load default settings into this class
2007-04-02 01:40:58 +00:00
LoadDefaults ( ) ;
2007-06-01 23:34:37 +00:00
// Saves to the database file...
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Writing out default settings to local database" ) ;
2007-04-02 01:40:58 +00:00
db . Set ( this ) ;
2007-06-01 23:34:37 +00:00
// Closes file locks
2007-04-02 02:36:00 +00:00
db . Close ( ) ;
2007-04-02 01:40:58 +00:00
}
} catch ( Exception e ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , "Config.cs:InitConfig() - Exception occured" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , e . ToString ( ) ) ;
2007-04-02 01:40:58 +00:00
}
2007-06-01 23:34:37 +00:00
// Grid Settings
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Grid settings loaded:" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Grid owner: " + this . GridOwner ) ;
2007-06-01 23:34:37 +00:00
// Asset Settings
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Default asset server: " + this . DefaultAssetServer ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to send to asset server: " + this . AssetSendKey ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to expect from asset server: " + this . AssetRecvKey ) ;
2007-06-01 23:34:37 +00:00
// User Settings
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Default user server: " + this . DefaultUserServer ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to send to user server: " + this . UserSendKey ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to expect from user server: " + this . UserRecvKey ) ;
2007-06-01 23:34:37 +00:00
// Region Settings
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to send to sims: " + this . SimSendKey ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to expect from sims: " + this . SimRecvKey ) ;
2007-04-02 01:40:58 +00:00
}
2007-06-01 23:34:37 +00:00
/// <summary>
/// Closes down the database and releases filesystem locks
/// </summary>
2007-04-02 01:40:58 +00:00
public void Shutdown ( ) {
db . Close ( ) ;
}
}
}