/* * Copyright (c) Contributors, http://www.openmetaverse.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * * 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 OpenSim Project 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 DEVELOPERS ``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 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.Collections.Generic; using libsecondlife; namespace OpenSim.Framework.Data { /// /// Inventory Item - contains all the properties associated with an individual inventory piece. /// public class InventoryItemBase { /// /// A UUID containing the ID for the inventory item itself /// public LLUUID inventoryID; /// /// The UUID of the associated asset on the asset server /// public LLUUID assetID; /// /// This is an enumerated value determining the type of asset (eg Notecard, Sound, Object, etc) /// public int assetType; /// /// The type of inventory item. (Can be slightly different to the asset type /// public int invType; /// /// The folder this item is contained in /// public LLUUID parentFolderID; /// /// The owner of this inventory item /// public LLUUID avatarID; /// /// The creator of this item /// public LLUUID creatorsID; /// /// The name of the inventory item (must be less than 64 characters) /// public string inventoryName; /// /// The description of the inventory item (must be less than 64 characters) /// public string inventoryDescription; /// /// A mask containing the permissions for the next owner (cannot be enforced) /// public uint inventoryNextPermissions; /// /// A mask containing permissions for the current owner (cannot be enforced) /// public uint inventoryCurrentPermissions; /// /// /// public uint inventoryBasePermissions; /// /// /// public uint inventoryEveryOnePermissions; } /// /// A Class for folders which contain users inventory /// public class InventoryFolderBase { /// /// The name of the folder (64 characters or less) /// public string name; /// /// The agent who's inventory this is contained by /// public LLUUID agentID; /// /// The folder this folder is contained in /// public LLUUID parentID; /// /// The UUID for this folder /// public LLUUID folderID; /// /// Tyep of Items normally stored in this folder /// public short type; /// /// /// public ushort version; } /// /// An interface for accessing inventory data from a storage server /// public interface IInventoryData { /// /// Initialises the interface /// void Initialise(); /// /// Closes the interface /// void Close(); /// /// The plugin being loaded /// /// A string containing the plugin name string getName(); /// /// The plugins version /// /// A string containing the plugin version string getVersion(); /// /// Returns a list of inventory items contained within the specified folder /// /// The UUID of the target folder /// A List of InventoryItemBase items List getInventoryInFolder(LLUUID folderID); /// /// Returns a list of the root folders within a users inventory /// /// The user whos inventory is to be searched /// A list of folder objects List getUserRootFolders(LLUUID user); /// /// Returns the users inventory root folder. /// /// The UUID of the user who is having inventory being returned /// Root inventory folder InventoryFolderBase getUserRootFolder(LLUUID user); /// /// Returns a list of inventory folders contained in the folder 'parentID' /// /// The folder to get subfolders for /// A list of inventory folders List getInventoryFolders(LLUUID parentID); /// /// Returns an inventory item by its UUID /// /// The UUID of the item to be returned /// A class containing item information InventoryItemBase getInventoryItem(LLUUID item); /// /// Returns a specified inventory folder by its UUID /// /// The UUID of the folder to be returned /// A class containing folder information InventoryFolderBase getInventoryFolder(LLUUID folder); /// /// Creates a new inventory item based on item /// /// The item to be created void addInventoryItem(InventoryItemBase item); /// /// Updates an inventory item with item (updates based on ID) /// /// The updated item void updateInventoryItem(InventoryItemBase item); /// /// /// /// void deleteInventoryItem(InventoryItemBase item); /// /// Adds a new folder specified by folder /// /// The inventory folder void addInventoryFolder(InventoryFolderBase folder); /// /// Updates a folder based on its ID with folder /// /// The inventory folder void updateInventoryFolder(InventoryFolderBase folder); } }