Add OpenSim & Simple inventory storage plugins and Null metrics plugin.
parent
3f3dfd7ac1
commit
74a2bd237a
|
@ -50,7 +50,7 @@ namespace OpenSim.Grid.AssetInventoryServer
|
||||||
public IniConfigSource ConfigFile;
|
public IniConfigSource ConfigFile;
|
||||||
|
|
||||||
public IAssetStorageProvider StorageProvider;
|
public IAssetStorageProvider StorageProvider;
|
||||||
public IInventoryProvider InventoryProvider;
|
public IInventoryStorageProvider InventoryProvider;
|
||||||
public IAuthenticationProvider AuthenticationProvider;
|
public IAuthenticationProvider AuthenticationProvider;
|
||||||
public IAuthorizationProvider AuthorizationProvider;
|
public IAuthorizationProvider AuthorizationProvider;
|
||||||
public IMetricsProvider MetricsProvider;
|
public IMetricsProvider MetricsProvider;
|
||||||
|
@ -107,7 +107,8 @@ namespace OpenSim.Grid.AssetInventoryServer
|
||||||
}
|
}
|
||||||
|
|
||||||
StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/StorageProvider", "OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll") as IAssetStorageProvider;
|
StorageProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/StorageProvider", "OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll") as IAssetStorageProvider;
|
||||||
MetricsProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/MetricsProvider", "") as IMetricsProvider;
|
InventoryProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/InventoryProvider", "OpenSim.Grid.AssetInventoryServer.Plugins.Simple.dll") as IInventoryStorageProvider;
|
||||||
|
MetricsProvider = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/MetricsProvider", String.Empty) as IMetricsProvider;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -120,7 +121,7 @@ namespace OpenSim.Grid.AssetInventoryServer
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
frontend = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/Frontend", "");
|
frontend = LoadAssetInventoryServerPlugin("/OpenSim/AssetInventoryServer/Frontend", String.Empty);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ namespace OpenSim.Grid.AssetInventoryServer
|
||||||
int ForEach(Action<Metadata> action, int start, int count);
|
int ForEach(Action<Metadata> action, int start, int count);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IInventoryProvider
|
public interface IInventoryStorageProvider : IAssetInventoryServerPlugin
|
||||||
{
|
{
|
||||||
BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item);
|
BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item);
|
||||||
BackendResponse TryFetchFolder(Uri owner, UUID folderID, out InventoryFolder folder);
|
BackendResponse TryFetchFolder(Uri owner, UUID folderID, out InventoryFolder folder);
|
||||||
|
|
|
@ -32,11 +32,11 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Grid.AssetInventoryServer.Plugins
|
namespace OpenSim.Grid.AssetInventoryServer.Plugins
|
||||||
{
|
{
|
||||||
public class NullMetrics : IMetricsProvider
|
public class NullMetricsPlugin : IMetricsProvider
|
||||||
{
|
{
|
||||||
AssetInventoryServer server;
|
AssetInventoryServer server;
|
||||||
|
|
||||||
public NullMetrics()
|
public NullMetricsPlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,43 +36,25 @@ using ExtensionLoader;
|
||||||
using ExtensionLoader.Config;
|
using ExtensionLoader.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.StructuredData;
|
using OpenMetaverse.StructuredData;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Grid.AssetInventoryServer.Extensions;
|
||||||
|
using OpenSim.Data;
|
||||||
|
|
||||||
namespace OpenSim.Grid.AssetInventoryServer.Extensions
|
namespace OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim
|
||||||
{
|
{
|
||||||
public class OpenSimMySQLInventory : IExtension<AssetInventoryServer>, IInventoryProvider
|
public class OpenSimInventoryStoragePlugin : IInventoryStorageProvider
|
||||||
{
|
{
|
||||||
const string EXTENSION_NAME = "OpenSimMySQLInventory"; // Used in metrics reporting
|
const string EXTENSION_NAME = "OpenSimInventoryStorage"; // Used in metrics reporting
|
||||||
|
|
||||||
AssetInventoryServer server;
|
private AssetInventoryServer server;
|
||||||
|
private IInventoryDataPlugin m_inventoryProvider;
|
||||||
|
|
||||||
public OpenSimMySQLInventory()
|
public OpenSimInventoryStoragePlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Required Interfaces
|
#region Required Interfaces
|
||||||
|
|
||||||
public void Start(AssetInventoryServer server)
|
|
||||||
{
|
|
||||||
this.server = server;
|
|
||||||
|
|
||||||
using (MySqlConnection dbConnection = new MySqlConnection(DBConnString.GetConnectionString(server.ConfigFile)))
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
dbConnection.Open();
|
|
||||||
Logger.Log.Info("Connected to MySQL inventory backend: " + dbConnection.ServerVersion);
|
|
||||||
}
|
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
|
||||||
Logger.Log.Error("Connection to MySQL inventory backend failed: " + ex.Message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item)
|
public BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item)
|
||||||
{
|
{
|
||||||
item = null;
|
item = null;
|
||||||
|
@ -800,5 +782,54 @@ namespace OpenSim.Grid.AssetInventoryServer.Extensions
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Required Interfaces
|
#endregion Required Interfaces
|
||||||
|
|
||||||
|
#region IPlugin implementation
|
||||||
|
|
||||||
|
public void Initialise(AssetInventoryServer server)
|
||||||
|
{
|
||||||
|
this.server = server;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_inventoryProvider = DataPluginFactory.LoadInventoryDataPlugin("OpenSim.Data.MySQL.dll", server.ConfigFile.Configs["MySQL"].GetString("database_connect", null));
|
||||||
|
if (m_inventoryProvider == null)
|
||||||
|
{
|
||||||
|
Logger.Log.Error("[INVENTORY]: Failed to load a database plugin, server halting.");
|
||||||
|
Environment.Exit(-1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Logger.Log.InfoFormat("[INVENTORY]: Loaded storage backend: {0}", Version);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logger.Log.WarnFormat("[INVENTORY]: Failure loading data plugin: {0}", e.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Stop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise()
|
||||||
|
{
|
||||||
|
Logger.Log.InfoFormat("[INVENTORY]: {0} cannot be default-initialized!", Name);
|
||||||
|
throw new PluginNotInitialisedException(Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Version
|
||||||
|
{
|
||||||
|
get { return m_inventoryProvider.Version; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return "AssetInventoryServer OpenSim inventory storage provider"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion IPlugin implementation
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,6 +15,9 @@
|
||||||
<Extension path="/OpenSim/AssetInventoryServer/StorageProvider">
|
<Extension path="/OpenSim/AssetInventoryServer/StorageProvider">
|
||||||
<Plugin id="OpenSimAssetStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetStoragePlugin" />
|
<Plugin id="OpenSimAssetStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetStoragePlugin" />
|
||||||
</Extension>
|
</Extension>
|
||||||
|
<Extension path="/OpenSim/AssetInventoryServer/InventoryProvider">
|
||||||
|
<Plugin id="OpenSimInventoryStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimInventoryStoragePlugin" />
|
||||||
|
</Extension>
|
||||||
<Extension path="/OpenSim/AssetInventoryServer/Frontend">
|
<Extension path="/OpenSim/AssetInventoryServer/Frontend">
|
||||||
<Plugin id="OpenSimAssetFrontend" provider="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetFrontendPlugin" />
|
<Plugin id="OpenSimAssetFrontend" provider="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim.OpenSimAssetFrontendPlugin" />
|
||||||
</Extension>
|
</Extension>
|
||||||
|
|
|
@ -8,6 +8,6 @@
|
||||||
</Dependencies>
|
</Dependencies>
|
||||||
|
|
||||||
<Extension path="/OpenSim/AssetInventoryServer/MetricsProvider">
|
<Extension path="/OpenSim/AssetInventoryServer/MetricsProvider">
|
||||||
<Plugin id="OpenSimMetrics" provider="OpenSim.Grid.AssetInventoryServer.Plugins.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.NullMetrics" />
|
<Plugin id="AssetInventoryMetrics" provider="OpenSim.Grid.AssetInventoryServer.Plugins.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.NullMetricsPlugin" />
|
||||||
</Extension>
|
</Extension>
|
||||||
</Addin>
|
</Addin>
|
||||||
|
|
|
@ -10,4 +10,7 @@
|
||||||
<Extension path="/OpenSim/AssetInventoryServer/StorageProvider">
|
<Extension path="/OpenSim/AssetInventoryServer/StorageProvider">
|
||||||
<Plugin id="SimpleAssetStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.SimpleAssetStoragePlugin" />
|
<Plugin id="SimpleAssetStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.SimpleAssetStoragePlugin" />
|
||||||
</Extension>
|
</Extension>
|
||||||
|
<Extension path="/OpenSim/AssetInventoryServer/InventoryProvider">
|
||||||
|
<Plugin id="SimpleInventoryStorage" provider="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.dll" type="OpenSim.Grid.AssetInventoryServer.Plugins.Simple.SimpleInventoryStoragePlugin" />
|
||||||
|
</Extension>
|
||||||
</Addin>
|
</Addin>
|
||||||
|
|
|
@ -35,12 +35,13 @@ using System.Text;
|
||||||
using ExtensionLoader;
|
using ExtensionLoader;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.StructuredData;
|
using OpenMetaverse.StructuredData;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Grid.AssetInventoryServer.Extensions
|
namespace OpenSim.Grid.AssetInventoryServer.Plugins.Simple
|
||||||
{
|
{
|
||||||
public class SimpleInventory : IExtension<AssetInventoryServer>, IInventoryProvider
|
public class SimpleInventoryStoragePlugin : IInventoryStorageProvider
|
||||||
{
|
{
|
||||||
const string EXTENSION_NAME = "SimpleInventory"; // Used for metrics reporting
|
const string EXTENSION_NAME = "SimpleInventoryStorage"; // Used for metrics reporting
|
||||||
const string DEFAULT_INVENTORY_DIR = "SimpleInventory";
|
const string DEFAULT_INVENTORY_DIR = "SimpleInventory";
|
||||||
|
|
||||||
AssetInventoryServer server;
|
AssetInventoryServer server;
|
||||||
|
@ -49,26 +50,12 @@ namespace OpenSim.Grid.AssetInventoryServer.Extensions
|
||||||
Utils.InventoryItemSerializer itemSerializer = new Utils.InventoryItemSerializer();
|
Utils.InventoryItemSerializer itemSerializer = new Utils.InventoryItemSerializer();
|
||||||
Utils.InventoryFolderSerializer folderSerializer = new Utils.InventoryFolderSerializer();
|
Utils.InventoryFolderSerializer folderSerializer = new Utils.InventoryFolderSerializer();
|
||||||
|
|
||||||
public SimpleInventory()
|
public SimpleInventoryStoragePlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Required Interfaces
|
#region Required Interfaces
|
||||||
|
|
||||||
public void Start(AssetInventoryServer server)
|
|
||||||
{
|
|
||||||
this.server = server;
|
|
||||||
|
|
||||||
LoadFiles(DEFAULT_INVENTORY_DIR);
|
|
||||||
|
|
||||||
Logger.Log.InfoFormat("Initialized the inventory index with data for {0} avatars",
|
|
||||||
inventories.Count);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item)
|
public BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item)
|
||||||
{
|
{
|
||||||
item = null;
|
item = null;
|
||||||
|
@ -598,5 +585,43 @@ namespace OpenSim.Grid.AssetInventoryServer.Extensions
|
||||||
Logger.Log.ErrorFormat("Failed loading inventory from {0}: {1}", folder, ex.Message);
|
Logger.Log.ErrorFormat("Failed loading inventory from {0}: {1}", folder, ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IPlugin implementation
|
||||||
|
|
||||||
|
public void Initialise(AssetInventoryServer server)
|
||||||
|
{
|
||||||
|
this.server = server;
|
||||||
|
|
||||||
|
LoadFiles(DEFAULT_INVENTORY_DIR);
|
||||||
|
|
||||||
|
Logger.Log.InfoFormat("Initialized the inventory index with data for {0} avatars",
|
||||||
|
inventories.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>Initialises asset interface</para>
|
||||||
|
/// </summary>
|
||||||
|
public void Initialise()
|
||||||
|
{
|
||||||
|
Logger.Log.InfoFormat("[ASSET]: {0} cannot be default-initialized!", Name);
|
||||||
|
throw new PluginNotInitialisedException(Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Version
|
||||||
|
{
|
||||||
|
// TODO: this should be something meaningful and not hardcoded?
|
||||||
|
get { return "0.1"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return "AssetInventoryServer Simple inventory storage provider"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion IPlugin implementation
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider" />
|
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAssetStorageProvider" />
|
||||||
</ExtensionPoint>
|
</ExtensionPoint>
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/InventoryProvider">
|
<ExtensionPoint path="/OpenSim/AssetInventoryServer/InventoryProvider">
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IInventoryProvider" />
|
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IInventoryStorageProvider" />
|
||||||
</ExtensionPoint>
|
</ExtensionPoint>
|
||||||
<ExtensionPoint path="/OpenSim/AssetInventoryServer/AuthenticationProvider">
|
<ExtensionPoint path="/OpenSim/AssetInventoryServer/AuthenticationProvider">
|
||||||
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAuthenticationProvider" />
|
<ExtensionNode name="Plugin" type="OpenSim.Framework.PluginExtensionNode" objectType="OpenSim.Grid.AssetInventoryServer.IAuthenticationProvider" />
|
||||||
|
|
|
@ -824,6 +824,7 @@
|
||||||
<Reference name="OpenSim.Framework" />
|
<Reference name="OpenSim.Framework" />
|
||||||
<Reference name="OpenSim.Data" />
|
<Reference name="OpenSim.Data" />
|
||||||
<Reference name="OpenSim.Grid.AssetInventoryServer" />
|
<Reference name="OpenSim.Grid.AssetInventoryServer" />
|
||||||
|
<Reference name="OpenMetaverse"/>
|
||||||
<Reference name="OpenMetaverseTypes"/>
|
<Reference name="OpenMetaverseTypes"/>
|
||||||
<Reference name="OpenMetaverse.StructuredData2" />
|
<Reference name="OpenMetaverse.StructuredData2" />
|
||||||
<Reference name="HttpServer2"/>
|
<Reference name="HttpServer2"/>
|
||||||
|
|
Loading…
Reference in New Issue