From 5a6552120395611e66a88821ce848a06c9ea4720 Mon Sep 17 00:00:00 2001
From: lbsa71
Date: Fri, 5 Oct 2007 10:14:42 +0000
Subject: == The "right name and place" commit == * Moved InventoryData to
Framework.Types/InventoryItemBase.cs * Moved UserData to
Framework.Interfaces/IUserData.cs * Moved UserProfileData to
Framework/Types/UserProfileData.cs * Deleted ass-backwards Framework
dependency on Framework.Data (now it's the other way round) * Changed some
namespaces to reflect file structure
---
OpenSim/Framework/General/Interfaces/IClientAPI.cs | 1 -
OpenSim/Framework/General/Interfaces/IUserData.cs | 135 +++++++++++++
.../Framework/General/Interfaces/IUserService.cs | 2 +-
.../Framework/General/Types/InventoryItemBase.cs | 222 +++++++++++++++++++++
OpenSim/Framework/General/Types/UserProfileData.cs | 191 ++++++++++++++++++
5 files changed, 549 insertions(+), 2 deletions(-)
create mode 100644 OpenSim/Framework/General/Interfaces/IUserData.cs
create mode 100644 OpenSim/Framework/General/Types/InventoryItemBase.cs
create mode 100644 OpenSim/Framework/General/Types/UserProfileData.cs
(limited to 'OpenSim/Framework/General')
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
index 344a55c..bedea9e 100644
--- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs
+++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
@@ -31,7 +31,6 @@ using System.Net;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
namespace OpenSim.Framework.Interfaces
{
diff --git a/OpenSim/Framework/General/Interfaces/IUserData.cs b/OpenSim/Framework/General/Interfaces/IUserData.cs
new file mode 100644
index 0000000..bb3abe0
--- /dev/null
+++ b/OpenSim/Framework/General/Interfaces/IUserData.cs
@@ -0,0 +1,135 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.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 libsecondlife;
+using OpenSim.Framework.Types;
+
+namespace OpenSim.Framework.Data
+{
+ ///
+ /// An interface for connecting to user storage servers.
+ ///
+ public interface IUserData
+ {
+ ///
+ /// Returns a user profile from a database via their UUID
+ ///
+ /// The accounts UUID
+ /// The user data profile
+ UserProfileData GetUserByUUID(LLUUID user);
+
+ ///
+ /// Returns a users profile by searching their username
+ ///
+ /// The users username
+ /// The user data profile
+ UserProfileData GetUserByName(string name);
+
+ ///
+ /// Returns a users profile by searching their username parts
+ ///
+ /// Account firstname
+ /// Account lastname
+ /// The user data profile
+ UserProfileData GetUserByName(string fname, string lname);
+
+ ///
+ /// Returns the current agent for a user searching by it's UUID
+ ///
+ /// The users UUID
+ /// The current agent session
+ UserAgentData GetAgentByUUID(LLUUID user);
+
+ ///
+ /// Returns the current session agent for a user searching by username
+ ///
+ /// The users account name
+ /// The current agent session
+ UserAgentData GetAgentByName(string name);
+
+ ///
+ /// Returns the current session agent for a user searching by username parts
+ ///
+ /// The users first account name
+ /// The users account surname
+ /// The current agent session
+ UserAgentData GetAgentByName(string fname, string lname);
+
+ ///
+ /// Adds a new User profile to the database
+ ///
+ /// UserProfile to add
+ void AddNewUserProfile(UserProfileData user);
+
+ ///
+ /// Updates an existing user profile
+ ///
+ /// UserProfile to update
+ bool UpdateUserProfile(UserProfileData user);
+
+ ///
+ /// Adds a new agent to the database
+ ///
+ /// The agent to add
+ void AddNewUserAgent(UserAgentData agent);
+
+ ///
+ /// Attempts to move currency units between accounts (NOT RELIABLE / TRUSTWORTHY. DONT TRY RUN YOUR OWN CURRENCY EXCHANGE WITH REAL VALUES)
+ ///
+ /// The account to transfer from
+ /// The account to transfer to
+ /// The amount to transfer
+ /// Successful?
+ bool MoneyTransferRequest(LLUUID from, LLUUID to, uint amount);
+
+ ///
+ /// Attempts to move inventory between accounts, if inventory is copyable it will be copied into the target account.
+ ///
+ /// User to transfer from
+ /// User to transfer to
+ /// Specified inventory item
+ /// Successful?
+ bool InventoryTransferRequest(LLUUID from, LLUUID to, LLUUID inventory);
+
+ ///
+ /// Returns the plugin version
+ ///
+ /// Plugin version in MAJOR.MINOR.REVISION.BUILD format
+ string GetVersion();
+
+ ///
+ /// Returns the plugin name
+ ///
+ /// Plugin name, eg MySQL User Provider
+ string getName();
+
+ ///
+ /// Initialises the plugin (artificial constructor)
+ ///
+ void Initialise();
+ }
+}
diff --git a/OpenSim/Framework/General/Interfaces/IUserService.cs b/OpenSim/Framework/General/Interfaces/IUserService.cs
index 974e025..461d4cb 100644
--- a/OpenSim/Framework/General/Interfaces/IUserService.cs
+++ b/OpenSim/Framework/General/Interfaces/IUserService.cs
@@ -26,7 +26,7 @@
*
*/
using libsecondlife;
-using OpenSim.Framework.Data;
+using OpenSim.Framework.Types;
namespace OpenSim.Framework.Interfaces
{
diff --git a/OpenSim/Framework/General/Types/InventoryItemBase.cs b/OpenSim/Framework/General/Types/InventoryItemBase.cs
new file mode 100644
index 0000000..e3dbe71
--- /dev/null
+++ b/OpenSim/Framework/General/Types/InventoryItemBase.cs
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.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.Types
+{
+ ///
+ /// 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);
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/General/Types/UserProfileData.cs b/OpenSim/Framework/General/Types/UserProfileData.cs
new file mode 100644
index 0000000..20d8224
--- /dev/null
+++ b/OpenSim/Framework/General/Types/UserProfileData.cs
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.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;
+using libsecondlife;
+
+namespace OpenSim.Framework.Types
+{
+ ///
+ /// Information about a particular user known to the userserver
+ ///
+ public class UserProfileData
+ {
+ ///
+ /// The ID value for this user
+ ///
+ public LLUUID UUID;
+
+ ///
+ /// The first component of a users account name
+ ///
+ public string username;
+ ///
+ /// The second component of a users account name
+ ///
+ public string surname;
+
+ ///
+ /// A salted hash containing the users password, in the format md5(md5(password) + ":" + salt)
+ ///
+ /// This is double MD5'd because the client sends an unsalted MD5 to the loginserver
+ public string passwordHash;
+ ///
+ /// The salt used for the users hash, should be 32 bytes or longer
+ ///
+ public string passwordSalt;
+
+ ///
+ /// The regionhandle of the users preffered home region. If multiple sims occupy the same spot, the grid may decide which region the user logs into
+ ///
+ public ulong homeRegion
+ {
+ get { return Helpers.UIntsToLong((homeRegionX * 256), (homeRegionY * 256)); }
+ set {
+ homeRegionX = (uint)(value >> 40);
+ homeRegionY = (((uint)(value)) >> 8);
+ }
+ }
+ public uint homeRegionX;
+ public uint homeRegionY;
+ ///
+ /// The coordinates inside the region of the home location
+ ///
+ public LLVector3 homeLocation;
+ ///
+ /// Where the user will be looking when they rez.
+ ///
+ public LLVector3 homeLookAt;
+
+ ///
+ /// A UNIX Timestamp (seconds since epoch) for the users creation
+ ///
+ public int created;
+ ///
+ /// A UNIX Timestamp for the users last login date / time
+ ///
+ public int lastLogin;
+
+ public LLUUID rootInventoryFolderID;
+
+ ///
+ /// A URI to the users inventory server, used for foreigners and large grids
+ ///
+ public string userInventoryURI = String.Empty;
+ ///
+ /// A URI to the users asset server, used for foreigners and large grids.
+ ///
+ public string userAssetURI = String.Empty;
+
+ ///
+ /// A uint mask containing the "I can do" fields of the users profile
+ ///
+ public uint profileCanDoMask;
+ ///
+ /// A uint mask containing the "I want to do" part of the users profile
+ ///
+ public uint profileWantDoMask; // Profile window "I want to" mask
+
+ ///
+ /// The about text listed in a users profile.
+ ///
+ public string profileAboutText = String.Empty;
+ ///
+ /// The first life about text listed in a users profile
+ ///
+ public string profileFirstText = String.Empty;
+
+ ///
+ /// The profile image for an avatar stored on the asset server
+ ///
+ public LLUUID profileImage;
+ ///
+ /// The profile image for the users first life tab
+ ///
+ public LLUUID profileFirstImage;
+ ///
+ /// The users last registered agent (filled in on the user server)
+ ///
+ public UserAgentData currentAgent;
+ }
+
+ ///
+ /// Information about a users session
+ ///
+ public class UserAgentData
+ {
+ ///
+ /// The UUID of the users avatar (not the agent!)
+ ///
+ public LLUUID UUID;
+ ///
+ /// The IP address of the user
+ ///
+ public string agentIP = String.Empty;
+ ///
+ /// The port of the user
+ ///
+ public uint agentPort;
+ ///
+ /// Is the user online?
+ ///
+ public bool agentOnline;
+ ///
+ /// The session ID for the user (also the agent ID)
+ ///
+ public LLUUID sessionID;
+ ///
+ /// The "secure" session ID for the user
+ ///
+ /// Not very secure. Dont rely on it for anything more than Linden Lab does.
+ public LLUUID secureSessionID;
+ ///
+ /// The region the user logged into initially
+ ///
+ public LLUUID regionID;
+ ///
+ /// A unix timestamp from when the user logged in
+ ///
+ public int loginTime;
+ ///
+ /// When this agent expired and logged out, 0 if still online
+ ///
+ public int logoutTime;
+ ///
+ /// Current region the user is logged into
+ ///
+ public LLUUID currentRegion;
+ ///
+ /// Region handle of the current region the user is in
+ ///
+ public ulong currentHandle;
+ ///
+ /// The position of the user within the region
+ ///
+ public LLVector3 currentPos;
+ }
+}
\ No newline at end of file
--
cgit v1.1