From 8d304725518424131fa42dce1515137e0bb1eada Mon Sep 17 00:00:00 2001 From: Mike Mazur Date: Mon, 16 Feb 2009 02:25:25 +0000 Subject: Rename NewAssetServer AssetInventoryServer and fully qualify with OpenSim.Grid.AssetInventoryServer. --- OpenSim/Grid/AssetInventoryServer/Interfaces.cs | 157 ++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 OpenSim/Grid/AssetInventoryServer/Interfaces.cs (limited to 'OpenSim/Grid/AssetInventoryServer/Interfaces.cs') diff --git a/OpenSim/Grid/AssetInventoryServer/Interfaces.cs b/OpenSim/Grid/AssetInventoryServer/Interfaces.cs new file mode 100644 index 0000000..fd9ed2c --- /dev/null +++ b/OpenSim/Grid/AssetInventoryServer/Interfaces.cs @@ -0,0 +1,157 @@ +/* + * 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 OpenMetaverse; +using OpenMetaverse.StructuredData; +using OpenSim.Framework; + +namespace OpenSim.Grid.AssetInventoryServer +{ + /// + /// Response from a call to a backend provider + /// + public enum BackendResponse + { + /// The call succeeded + Success, + /// The resource requested was not found + NotFound, + /// A server failure prevented the call from + /// completing + Failure + } + + public class AssetInventoryServerPluginInitialiser : PluginInitialiserBase + { + private AssetInventoryServer server; + + public AssetInventoryServerPluginInitialiser (AssetInventoryServer server) + { + this.server = server; + } + + public override void Initialise (IPlugin plugin) + { + IAssetInventoryServerPlugin p = plugin as IAssetInventoryServerPlugin; + p.Initialise (server); + } + } + + #region Interfaces + + public interface IAssetInventoryServerPlugin : IPlugin + { + void Initialise(AssetInventoryServer server); + } + + public interface IStorageProvider + { + BackendResponse TryFetchMetadata(UUID assetID, out Metadata metadata); + BackendResponse TryFetchData(UUID assetID, out byte[] assetData); + BackendResponse TryFetchDataMetadata(UUID assetID, out Metadata metadata, out byte[] assetData); + BackendResponse TryCreateAsset(Metadata metadata, byte[] assetData); + BackendResponse TryCreateAsset(Metadata metadata, byte[] assetData, out UUID assetID); + int ForEach(Action action, int start, int count); + } + + public interface IAssetStorageProvider : IAssetInventoryServerPlugin + { + BackendResponse TryFetchMetadata(UUID assetID, out Metadata metadata); + BackendResponse TryFetchData(UUID assetID, out byte[] assetData); + BackendResponse TryFetchDataMetadata(UUID assetID, out Metadata metadata, out byte[] assetData); + BackendResponse TryCreateAsset(Metadata metadata, byte[] assetData); + BackendResponse TryCreateAsset(Metadata metadata, byte[] assetData, out UUID assetID); + int ForEach(Action action, int start, int count); + } + + public interface IInventoryProvider + { + BackendResponse TryFetchItem(Uri owner, UUID itemID, out InventoryItem item); + BackendResponse TryFetchFolder(Uri owner, UUID folderID, out InventoryFolder folder); + BackendResponse TryFetchFolderContents(Uri owner, UUID folderID, out InventoryCollection contents); + BackendResponse TryFetchFolderList(Uri owner, out List folders); + BackendResponse TryFetchInventory(Uri owner, out InventoryCollection inventory); + + BackendResponse TryFetchActiveGestures(Uri owner, out List gestures); + + BackendResponse TryCreateItem(Uri owner, InventoryItem item); + BackendResponse TryCreateFolder(Uri owner, InventoryFolder folder); + BackendResponse TryCreateInventory(Uri owner, InventoryFolder rootFolder); + + BackendResponse TryDeleteItem(Uri owner, UUID itemID); + BackendResponse TryDeleteFolder(Uri owner, UUID folderID); + BackendResponse TryPurgeFolder(Uri owner, UUID folderID); + } + + public interface IAuthenticationProvider + { + void AddIdentifier(UUID authToken, Uri identifier); + bool RemoveIdentifier(UUID authToken); + bool TryGetIdentifier(UUID authToken, out Uri identifier); + } + + public interface IAuthorizationProvider + { + bool IsMetadataAuthorized(UUID authToken, UUID assetID); + /// + /// Authorizes access to the data for an asset. Access to asset data + /// also implies access to the metadata for that asset + /// + /// Authentication token to check for access + /// ID of the requested asset + /// True if access is granted, otherwise false + bool IsDataAuthorized(UUID authToken, UUID assetID); + bool IsCreateAuthorized(UUID authToken); + + bool IsInventoryReadAuthorized(UUID authToken, Uri owner); + bool IsInventoryWriteAuthorized(UUID authToken, Uri owner); + } + + public interface IMetricsProvider + { + void LogAssetMetadataFetch(string extension, BackendResponse response, UUID assetID, DateTime time); + void LogAssetDataFetch(string extension, BackendResponse response, UUID assetID, int dataSize, DateTime time); + void LogAssetCreate(string extension, BackendResponse response, UUID assetID, int dataSize, DateTime time); + + void LogInventoryFetch(string extension, BackendResponse response, Uri owner, UUID objID, bool folder, DateTime time); + void LogInventoryFetchFolderContents(string extension, BackendResponse response, Uri owner, UUID folderID, DateTime time); + void LogInventoryFetchFolderList(string extension, BackendResponse response, Uri owner, DateTime time); + void LogInventoryFetchInventory(string extension, BackendResponse response, Uri owner, DateTime time); + void LogInventoryFetchActiveGestures(string extension, BackendResponse response, Uri owner, DateTime time); + void LogInventoryCreate(string extension, BackendResponse response, Uri owner, bool folder, DateTime time); + void LogInventoryCreateInventory(string extension, BackendResponse response, DateTime time); + void LogInventoryDelete(string extension, BackendResponse response, Uri owner, UUID objID, bool folder, DateTime time); + void LogInventoryPurgeFolder(string extension, BackendResponse response, Uri owner, UUID folderID, DateTime time); + } + + #endregion Interfaces +} -- cgit v1.1