64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
using OpenSim.Framework;
|
|
using OpenSim.Framework.Communications;
|
|
using OpenSim.Framework.Servers;
|
|
using OpenSim.Region.Capabilities;
|
|
using OpenSim.Region.Environment.Scenes;
|
|
using OpenSim.Region.Interfaces;
|
|
|
|
using System.Reflection;
|
|
|
|
namespace OpenSim.Region.Environment
|
|
{
|
|
public class StorageManager
|
|
{
|
|
private IRegionDataStore m_dataStore;
|
|
|
|
public IRegionDataStore DataStore
|
|
{
|
|
get
|
|
{
|
|
return m_dataStore;
|
|
}
|
|
}
|
|
|
|
public StorageManager(IRegionDataStore storage)
|
|
{
|
|
m_dataStore = storage;
|
|
}
|
|
|
|
public StorageManager(string dllName, string dataStoreFile, string dataStoreDB)
|
|
{
|
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("DATASTORE", "Attempting to load " + dllName);
|
|
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
|
|
|
foreach (Type pluginType in pluginAssembly.GetTypes())
|
|
{
|
|
if (pluginType.IsPublic)
|
|
{
|
|
Type typeInterface = pluginType.GetInterface("IRegionDataStore", true);
|
|
|
|
if (typeInterface != null)
|
|
{
|
|
IRegionDataStore plug = (IRegionDataStore)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
|
plug.Initialise(dataStoreFile, dataStoreDB);
|
|
|
|
m_dataStore = plug;
|
|
|
|
OpenSim.Framework.Console.MainLog.Instance.Verbose("DATASTORE", "Added IRegionDataStore Interface");
|
|
}
|
|
|
|
typeInterface = null;
|
|
}
|
|
}
|
|
|
|
pluginAssembly = null;
|
|
|
|
//TODO: Add checking and warning to make sure it initialised.
|
|
}
|
|
}
|
|
}
|