From 65c5efe43b68700bad94076d4cd421160203c5de Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Fri, 16 May 2008 01:22:11 +0000 Subject: Formatting cleanup. --- .../Framework/Communications/Cache/AssetCache.cs | 22 +-- .../Communications/Cache/AssetServerBase.cs | 8 +- .../Communications/Cache/CachedUserInfo.cs | 220 ++++++++++----------- .../Communications/Cache/GridAssetClient.cs | 8 +- .../Communications/Cache/InventoryFolderImpl.cs | 46 ++--- .../Communications/Cache/LibraryRootFolder.cs | 72 +++---- .../Cache/UserProfileCacheService.cs | 78 ++++---- 7 files changed, 227 insertions(+), 227 deletions(-) (limited to 'OpenSim/Framework/Communications/Cache') diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs index 1414260..0669ce9 100644 --- a/OpenSim/Framework/Communications/Cache/AssetCache.cs +++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs @@ -40,12 +40,12 @@ namespace OpenSim.Framework.Communications.Cache /// /// Manages local cache of assets and their sending to viewers. - /// + /// /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and /// AssetNotFound(), which means they do share the same asset and texture caches. - /// + /// /// TODO Assets in this cache are effectively immortal (they are never disposed off through old age). /// This is not a huge problem at the moment since other memory use usually dwarfs that used by assets /// but it's something to bear in mind. @@ -281,8 +281,8 @@ namespace OpenSim.Framework.Communications.Cache /// /// Synchronously retreive an asset. If the asset isn't in the cache, a request will be made to the persistent store to - /// load it into the cache. - /// + /// load it into the cache. + /// /// XXX We'll keep polling the cache until we get the asset or we exceed /// the allowed number of polls. This isn't a very good way of doing things since a single thread /// is processing inbound packets, so if the asset server is slow, we could block this for up to @@ -431,11 +431,11 @@ namespace OpenSim.Framework.Communications.Cache //making a copy of the list is not ideal //but the old method of locking around this whole block of code was causing a multi-thread lock //between this and the TextureDownloadModule - //while the localAsset thread running this and trying to send a texture to the callback in the + //while the localAsset thread running this and trying to send a texture to the callback in the //texturedownloadmodule , and hitting a lock in there. While the texturedownload thread (which was holding - // the lock in the texturedownload module) was trying to + // the lock in the texturedownload module) was trying to //request a new asset and hitting a lock in here on the RequestLists. - + List theseRequests = new List(reqList.Requests); reqList.Requests.Clear(); @@ -460,7 +460,7 @@ namespace OpenSim.Framework.Communications.Cache { // m_log.WarnFormat("[ASSET CACHE]: AssetNotFound for {0}", assetID); - // Notify requesters for this asset + // Notify requesters for this asset AssetRequestsList reqList = null; lock (RequestLists) { @@ -552,7 +552,7 @@ namespace OpenSim.Framework.Communications.Cache } return; } - //it is in our cache + //it is in our cache AssetInfo asset = Assets[requestID]; // add to the AssetRequests list @@ -679,14 +679,14 @@ namespace OpenSim.Framework.Communications.Cache public byte AssetRequestSource = 2; public byte[] Params = null; //public bool AssetInCache; - //public int TimeRequested; + //public int TimeRequested; public int DiscardLevel = -1; public AssetRequest() { } } - + public class AssetInfo : AssetBase { public AssetInfo() diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs index 1a7f872..b16512c 100644 --- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs +++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs @@ -36,7 +36,7 @@ namespace OpenSim.Framework.Communications.Cache { public abstract class AssetServerBase : IAssetServer { - private static readonly ILog m_log + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected IAssetReceiver m_receiver; @@ -47,12 +47,12 @@ namespace OpenSim.Framework.Communications.Cache // Temporarily hardcoded - should be a plugin protected IAssetLoader assetLoader = new AssetLoaderFileSystem(); - + protected abstract void StoreAsset(AssetBase asset); protected abstract void CommitAssets(); /// - /// This method must be implemented by a subclass to retrieve the asset named in the + /// This method must be implemented by a subclass to retrieve the asset named in the /// AssetRequest. If the asset is not found, null should be returned. /// /// @@ -60,7 +60,7 @@ namespace OpenSim.Framework.Communications.Cache protected abstract AssetBase GetAsset(AssetRequest req); /// - /// Process an asset request. This method will call GetAsset(AssetRequest req) + /// Process an asset request. This method will call GetAsset(AssetRequest req) /// on the subclass. /// /// diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 218fd5a..f40f078 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -36,55 +36,55 @@ using log4net; namespace OpenSim.Framework.Communications.Cache { internal delegate void AddItemDelegate(InventoryItemBase itemInfo); - internal delegate void UpdateItemDelegate(InventoryItemBase itemInfo); + internal delegate void UpdateItemDelegate(InventoryItemBase itemInfo); internal delegate void DeleteItemDelegate(LLUUID itemID); - + internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); - internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); + internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); internal delegate void PurgeFolderDelegate(LLUUID folderID); internal delegate void UpdateFolderDelegate(string name, LLUUID folderID, ushort type, LLUUID parentID); - + internal delegate void SendInventoryDescendentsDelegate( IClientAPI client, LLUUID folderID, bool fetchFolders, bool fetchItems); - + /// /// Stores user profile and inventory data received from backend services for a particular user. /// public class CachedUserInfo { - private static readonly ILog m_log + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + /// /// The comms manager holds references to services (user, grid, inventory, etc.) - /// + /// private readonly CommunicationsManager m_commsManager; - + public UserProfileData UserProfile { get { return m_userProfile; } } - private readonly UserProfileData m_userProfile; + private readonly UserProfileData m_userProfile; /// /// Has we received the user's inventory from the inventory service? /// private bool m_hasInventory; - + /// /// Inventory requests waiting for receipt of this user's inventory from the inventory service. /// - private readonly IList m_pendingRequests = new List(); - + private readonly IList m_pendingRequests = new List(); + /// /// Has this user info object yet received its inventory information from the invetnroy service? /// public bool HasInventory { get { return m_hasInventory; } } - + private InventoryFolderImpl m_rootFolder; - public InventoryFolderImpl RootFolder { get { return m_rootFolder; } } - + public InventoryFolderImpl RootFolder { get { return m_rootFolder; } } + /// /// FIXME: This could be contained within a local variable - it doesn't need to be a field /// - private IDictionary> pendingCategorizationFolders + private IDictionary> pendingCategorizationFolders = new Dictionary>(); /// @@ -97,7 +97,7 @@ namespace OpenSim.Framework.Communications.Cache m_commsManager = commsManager; m_userProfile = userProfile; } - + /// /// This allows a request to be added to be processed once we receive a user's inventory /// from the inventory service. If we already have the inventory, the request @@ -118,7 +118,7 @@ namespace OpenSim.Framework.Communications.Cache } } } - + /// /// Store a folder pending arrival of its parent /// @@ -126,7 +126,7 @@ namespace OpenSim.Framework.Communications.Cache private void AddPendingFolder(InventoryFolderImpl folder) { LLUUID parentFolderId = folder.ParentID; - + if (pendingCategorizationFolders.ContainsKey(parentFolderId)) { pendingCategorizationFolders[parentFolderId].Add(folder); @@ -135,11 +135,11 @@ namespace OpenSim.Framework.Communications.Cache { IList folders = new List(); folders.Add(folder); - + pendingCategorizationFolders[parentFolderId] = folders; } } - + /// /// Add any pending folders which were received before the given folder /// @@ -155,18 +155,18 @@ namespace OpenSim.Framework.Communications.Cache // m_log.DebugFormat( // "[INVENTORY CACHE]: Resolving pending received folder {0} {1} into {2} {3}", // folder.name, folder.folderID, parent.name, parent.folderID); - + lock (newFolder.SubFolders) { if (!newFolder.SubFolders.ContainsKey(folder.ID)) { newFolder.SubFolders.Add(folder.ID, folder); - } + } } } } } - + /// /// Callback invoked when the inventory is received from an async request to the inventory service /// @@ -177,12 +177,12 @@ namespace OpenSim.Framework.Communications.Cache // FIXME: Exceptions thrown upwards never appear on the console. Could fix further up if these // are simply being swallowed try - { + { foreach (InventoryFolderImpl folder in folders) { FolderReceive(folder); } - + foreach (InventoryItemBase item in items) { ItemReceive(item); @@ -191,15 +191,15 @@ namespace OpenSim.Framework.Communications.Cache catch (Exception e) { m_log.ErrorFormat("[INVENTORY CACHE]: Error processing inventory received from inventory service, {0}", e); - } - + } + // Deal with pending requests lock (m_pendingRequests) { // We're going to change inventory status within the lock to avoid a race condition // where requests are processed after the AddRequest() method has been called. m_hasInventory = true; - + foreach (IInventoryRequest request in m_pendingRequests) { request.Execute(); @@ -215,7 +215,7 @@ namespace OpenSim.Framework.Communications.Cache private void FolderReceive(InventoryFolderImpl newFolder) { // m_log.DebugFormat( -// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}", +// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}", // folderInfo.Name, folderInfo.ID, userID); if (RootFolder == null) @@ -232,7 +232,7 @@ namespace OpenSim.Framework.Communications.Cache else { InventoryFolderImpl parentFolder = RootFolder.FindFolder(newFolder.ParentID); - + if (parentFolder != null) { lock (parentFolder.SubFolders) @@ -252,44 +252,44 @@ namespace OpenSim.Framework.Communications.Cache else { AddPendingFolder(newFolder); - } + } } - + ResolvePendingFolders(newFolder); } /// /// Callback invoked when an item is received from an async request to the inventory service. - /// + /// /// We're assuming here that items are always received after all the folders /// received. /// - /// + /// private void ItemReceive(InventoryItemBase itemInfo) { // m_log.DebugFormat( -// "[INVENTORY CACHE]: Received item {0} {1} for user {2}", +// "[INVENTORY CACHE]: Received item {0} {1} for user {2}", // itemInfo.Name, itemInfo.ID, userID); InventoryFolderImpl folder = RootFolder.FindFolder(itemInfo.Folder); - + if (null == folder) { m_log.WarnFormat( - "Received item {0} {1} but its folder {2} does not exist", + "Received item {0} {1} but its folder {2} does not exist", itemInfo.Name, itemInfo.ID, itemInfo.Folder); - + return; } - + lock (folder.Items) { folder.Items[itemInfo.ID] = itemInfo; } } - + /// - /// Create a folder in this agent's inventory. - /// + /// Create a folder in this agent's inventory. + /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. /// @@ -299,20 +299,20 @@ namespace OpenSim.Framework.Communications.Cache { // m_log.DebugFormat( // "[AGENT INVENTORY]: Creating inventory folder {0} {1} for {2} {3}", folderID, folderName, remoteClient.Name, remoteClient.AgentId); - + if (HasInventory) { InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID); - + if (null == parentFolder) { m_log.WarnFormat( "[AGENT INVENTORY]: Tried to create folder {0} {1} but the parent {2} does not exist", folderName, folderID, parentID); - + return false; } - + InventoryFolderImpl createdFolder = parentFolder.CreateChildFolder(folderID, folderName, folderType); if (createdFolder != null) @@ -324,17 +324,17 @@ namespace OpenSim.Framework.Communications.Cache createdBaseFolder.ParentID = createdFolder.ParentID; createdBaseFolder.Type = createdFolder.Type; createdBaseFolder.Version = createdFolder.Version; - + m_commsManager.InventoryService.AddFolder(createdBaseFolder); - + return true; } else { m_log.WarnFormat( - "[AGENT INVENTORY]: Tried to create folder {0} {1} but the folder already exists", + "[AGENT INVENTORY]: Tried to create folder {0} {1} but the folder already exists", folderName, folderID); - + return false; } } @@ -344,22 +344,22 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(CreateFolderDelegate), this, "CreateFolder"), new object[] { folderName, folderID, folderType, parentID })); - + return true; - } + } } - + /// /// Handle a client request to update the inventory folder - /// + /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. - /// + /// /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, /// and needs to be changed. /// - /// + /// /// /// /// @@ -367,7 +367,7 @@ namespace OpenSim.Framework.Communications.Cache public bool UpdateFolder(string name, LLUUID folderID, ushort type, LLUUID parentID) { // m_log.DebugFormat( -// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId); +// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId); if (HasInventory) { @@ -378,7 +378,7 @@ namespace OpenSim.Framework.Communications.Cache baseFolder.ParentID = parentID; baseFolder.Type = (short) type; baseFolder.Version = RootFolder.Version; - + m_commsManager.InventoryService.AddFolder(baseFolder); } else @@ -387,18 +387,18 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(UpdateFolderDelegate), this, "UpdateFolder"), new object[] { name, folderID, type, parentID })); - } - + } + return true; - } - + } + /// /// Handle an inventory folder move request from the client. - /// + /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. /// - /// + /// /// /// public bool MoveFolder(LLUUID folderID, LLUUID parentID) @@ -413,9 +413,9 @@ namespace OpenSim.Framework.Communications.Cache baseFolder.Owner = m_userProfile.ID; baseFolder.ID = folderID; baseFolder.ParentID = parentID; - + m_commsManager.InventoryService.MoveFolder(baseFolder); - + return true; } else @@ -424,30 +424,30 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(MoveFolderDelegate), this, "MoveFolder"), new object[] { folderID, parentID })); - + return true; - } - } - + } + } + /// /// This method will delete all the items and folders in the given folder. - /// + /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. /// - /// + /// /// public bool PurgeFolder(LLUUID folderID) { -// m_log.InfoFormat("[AGENT INVENTORY]: Purging folder {0} for {1} uuid {2}", +// m_log.InfoFormat("[AGENT INVENTORY]: Purging folder {0} for {1} uuid {2}", // folderID, remoteClient.Name, remoteClient.AgentId); - + if (HasInventory) { InventoryFolderImpl purgedFolder = RootFolder.FindFolder(folderID); - + if (purgedFolder != null) - { + { // XXX Nasty - have to create a new object to hold details we already have InventoryFolderBase purgedBaseFolder = new InventoryFolderBase(); purgedBaseFolder.Owner = purgedFolder.Owner; @@ -455,12 +455,12 @@ namespace OpenSim.Framework.Communications.Cache purgedBaseFolder.Name = purgedFolder.Name; purgedBaseFolder.ParentID = purgedFolder.ParentID; purgedBaseFolder.Type = purgedFolder.Type; - purgedBaseFolder.Version = purgedFolder.Version; - - m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder); - + purgedBaseFolder.Version = purgedFolder.Version; + + m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder); + purgedFolder.Purge(); - + return true; } } @@ -470,12 +470,12 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(PurgeFolderDelegate), this, "PurgeFolder"), new object[] { folderID })); - + return true; - } - + } + return false; - } + } /// /// Add an item to the user's inventory @@ -494,7 +494,7 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(AddItemDelegate), this, "AddItem"), new object[] { item })); - } + } } /// @@ -514,18 +514,18 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(UpdateItemDelegate), this, "UpdateItem"), new object[] { item })); - } + } } /// /// Delete an item from the user's inventory - /// + /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. /// /// /// - /// true on a successful delete or a if the request is queued. + /// true on a successful delete or a if the request is queued. /// Returns false on an immediate failure /// public bool DeleteItem(LLUUID itemID) @@ -535,14 +535,14 @@ namespace OpenSim.Framework.Communications.Cache // XXX For historical reasons (grid comms), we need to retrieve the whole item in order to delete, even though // really only the item id is required. InventoryItemBase item = RootFolder.FindItem(itemID); - + if (null == item) { m_log.WarnFormat("[AGENT INVENTORY]: Tried to delete item {0} which does not exist", itemID); - + return false; } - + if (RootFolder.DeleteItem(item.ID)) { return m_commsManager.InventoryService.DeleteItem(item); @@ -554,13 +554,13 @@ namespace OpenSim.Framework.Communications.Cache new InventoryRequest( Delegate.CreateDelegate(typeof(DeleteItemDelegate), this, "DeleteItem"), new object[] { itemID })); - + return true; - } - + } + return false; } - + /// /// Send details of the inventory items and/or folders in a given folder to the client. /// @@ -574,13 +574,13 @@ namespace OpenSim.Framework.Communications.Cache if (HasInventory) { InventoryFolderImpl folder; - + if ((folder = RootFolder.FindFolder(folderID)) != null) { // m_log.DebugFormat( -// "[AGENT INVENTORY]: Found folder {0} for client {1}", +// "[AGENT INVENTORY]: Found folder {0} for client {1}", // folderID, remoteClient.AgentId); - + client.SendInventoryFolderDetails( client.AgentId, folderID, folder.RequestListOfItems(), folder.RequestListOfFolders(), fetchFolders, fetchItems); @@ -592,7 +592,7 @@ namespace OpenSim.Framework.Communications.Cache m_log.WarnFormat( "[AGENT INVENTORY]: Could not find folder {0} requested by user {1} {2}", folderID, client.Name, client.AgentId); - + return false; } } @@ -604,13 +604,13 @@ namespace OpenSim.Framework.Communications.Cache new object[] { client, folderID, fetchFolders, fetchItems })); return true; - } + } } } - + /// /// Should be implemented by callers which require a callback when the user's inventory is received - /// + /// public interface IInventoryRequest { /// @@ -618,7 +618,7 @@ namespace OpenSim.Framework.Communications.Cache /// void Execute(); } - + /// /// Generic inventory request /// @@ -626,16 +626,16 @@ namespace OpenSim.Framework.Communications.Cache { private Delegate m_delegate; private Object[] m_args; - + internal InventoryRequest(Delegate delegat, Object[] args) { - m_delegate = delegat; + m_delegate = delegat; m_args = args; } - + public void Execute() { m_delegate.DynamicInvoke(m_args); } - } + } } diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs index d5b7fea..4b4ef17 100644 --- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs +++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs @@ -95,9 +95,9 @@ namespace OpenSim.Framework.Communications.Cache // XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); // xs.Serialize(s, asset); // RestClient rc = new RestClient(_assetServerUrl); - - string assetUrl = _assetServerUrl + "/assets/"; - + + string assetUrl = _assetServerUrl + "/assets/"; + //rc.AddResourcePath("assets"); // rc.RequestMethod = "POST"; @@ -105,7 +105,7 @@ namespace OpenSim.Framework.Communications.Cache //m_log.InfoFormat("[ASSET]: Stored {0}", rc); m_log.InfoFormat("[GRID ASSET CLIENT]: Sending store request for asset {0}", asset.FullID); - + RestObjectPoster.BeginPostObject(assetUrl, asset); } catch (Exception e) diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs index c8cec69..0fbc427 100644 --- a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs +++ b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs @@ -36,7 +36,7 @@ namespace OpenSim.Framework.Communications.Cache public class InventoryFolderImpl : InventoryFolderBase { //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + // Fields public Dictionary Items = new Dictionary(); public Dictionary SubFolders = new Dictionary(); @@ -82,14 +82,14 @@ namespace OpenSim.Framework.Communications.Cache subFold.ParentID = this.ID; subFold.Owner = Owner; SubFolders.Add(subFold.ID, subFold); - + return subFold; } } - + return null; } - + /// /// Delete all the folders and items in this folder. /// @@ -97,9 +97,9 @@ namespace OpenSim.Framework.Communications.Cache { foreach (InventoryFolderImpl folder in SubFolders.Values) { - folder.Purge(); + folder.Purge(); } - + SubFolders.Clear(); Items.Clear(); } @@ -118,20 +118,20 @@ namespace OpenSim.Framework.Communications.Cache return Items[itemID]; } } - + lock (SubFolders) { foreach (InventoryFolderImpl folder in SubFolders.Values) { InventoryItemBase item = folder.FindItem(itemID); - + if (item != null) { return item; } } } - + return null; } @@ -143,7 +143,7 @@ namespace OpenSim.Framework.Communications.Cache public bool DeleteItem(LLUUID itemID) { bool found = false; - + lock (Items) { if (Items.ContainsKey(itemID)) @@ -152,20 +152,20 @@ namespace OpenSim.Framework.Communications.Cache return true; } } - + lock (SubFolders) { foreach (InventoryFolderImpl folder in SubFolders.Values) { found = folder.DeleteItem(itemID); - + if (found == true) { break; } } } - + return found; } @@ -175,25 +175,25 @@ namespace OpenSim.Framework.Communications.Cache /// /// The requested folder if it exists, null if it does not. public InventoryFolderImpl FindFolder(LLUUID folderID) - { + { if (folderID == ID) { return this; } - + lock (SubFolders) { foreach (InventoryFolderImpl folder in SubFolders.Values) { InventoryFolderImpl returnFolder = folder.FindFolder(folderID); - + if (returnFolder != null) { return returnFolder; } } } - + return null; } @@ -203,7 +203,7 @@ namespace OpenSim.Framework.Communications.Cache public List RequestListOfItems() { List itemList = new List(); - + lock (Items) { foreach (InventoryItemBase item in Items.Values) @@ -211,9 +211,9 @@ namespace OpenSim.Framework.Communications.Cache itemList.Add(item); } } - + //m_log.DebugFormat("[INVENTORY FOLDER IMPL]: Found {0} items", itemList.Count); - + return itemList; } @@ -221,9 +221,9 @@ namespace OpenSim.Framework.Communications.Cache /// Return the list of immediate child folders in this folder. /// public List RequestListOfFolders() - { + { List folderList = new List(); - + lock (SubFolders) { foreach (InventoryFolderBase folder in SubFolders.Values) @@ -231,7 +231,7 @@ namespace OpenSim.Framework.Communications.Cache folderList.Add(folder); } } - + return folderList; } } diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs index b3852c0..ca7eb13 100644 --- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs +++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs @@ -45,34 +45,34 @@ namespace OpenSim.Framework.Communications.Cache private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private LLUUID libOwner = new LLUUID("11111111-1111-0000-0000-000100bba000"); - + /// /// Holds the root library folder and all its descendents. This is really only used during inventory /// setup so that we don't have to repeatedly search the tree of library folders. /// - protected Dictionary libraryFolders + protected Dictionary libraryFolders = new Dictionary(); public LibraryRootFolder() { m_log.Info("[LIBRARY INVENTORY]: Loading library inventory"); - + Owner = libOwner; ID = new LLUUID("00000112-000f-0000-0000-000100bba000"); Name = "OpenSim Library"; ParentID = LLUUID.Zero; Type = (short) 8; Version = (ushort) 1; - + libraryFolders.Add(ID, this); - + LoadLibraries(Path.Combine(Util.inventoryDir(), "Libraries.xml")); // CreateLibraryItems(); } /// - /// Hardcoded item creation. Please don't add any more items here - future items should be created + /// Hardcoded item creation. Please don't add any more items here - future items should be created /// in the xml in the bin/inventory folder. /// /// @@ -132,7 +132,7 @@ namespace OpenSim.Framework.Communications.Cache item.NextPermissions = 0x7FFFFFFF; return item; } - + /// /// Use the asset set information at path to load assets /// @@ -142,49 +142,49 @@ namespace OpenSim.Framework.Communications.Cache { m_log.InfoFormat( "[LIBRARY INVENTORY]: Loading libraries control file {0}", librariesControlPath); - + LoadFromFile(librariesControlPath, "Libraries control", ReadLibraryFromConfig); } - + /// /// Read a library set from config /// /// protected void ReadLibraryFromConfig(IConfig config) { - string foldersPath + string foldersPath = Path.Combine( Util.inventoryDir(), config.GetString("foldersFile", String.Empty)); - + LoadFromFile(foldersPath, "Library folders", ReadFolderFromConfig); - - string itemsPath + + string itemsPath = Path.Combine( Util.inventoryDir(), config.GetString("itemsFile", String.Empty)); - + LoadFromFile(itemsPath, "Library items", ReadItemFromConfig); } - + /// /// Read a library inventory folder from a loaded configuration /// /// private void ReadFolderFromConfig(IConfig config) - { + { InventoryFolderImpl folderInfo = new InventoryFolderImpl(); - + folderInfo.ID = new LLUUID(config.GetString("folderID", ID.ToString())); - folderInfo.Name = config.GetString("name", "unknown"); + folderInfo.Name = config.GetString("name", "unknown"); folderInfo.ParentID = new LLUUID(config.GetString("parentFolderID", ID.ToString())); folderInfo.Type = (short)config.GetInt("type", 8); - - folderInfo.Owner = libOwner; - folderInfo.Version = 1; - + + folderInfo.Owner = libOwner; + folderInfo.Version = 1; + if (libraryFolders.ContainsKey(folderInfo.ParentID)) - { + { InventoryFolderImpl parentFolder = libraryFolders[folderInfo.ParentID]; - + libraryFolders.Add(folderInfo.ID, folderInfo); parentFolder.SubFolders.Add(folderInfo.ID, folderInfo); @@ -201,7 +201,7 @@ namespace OpenSim.Framework.Communications.Cache /// /// Read a library inventory item metadata from a loaded configuration /// - /// + /// private void ReadItemFromConfig(IConfig config) { InventoryItemBase item = new InventoryItemBase(); @@ -218,11 +218,11 @@ namespace OpenSim.Framework.Communications.Cache item.NextPermissions = (uint)config.GetLong("nextPermissions", 0x7FFFFFFF); item.EveryOnePermissions = (uint)config.GetLong("everyonePermissions", 0x7FFFFFFF); item.BasePermissions = (uint)config.GetLong("basePermissions", 0x7FFFFFFF); - + if (libraryFolders.ContainsKey(item.Folder)) { InventoryFolderImpl parentFolder = libraryFolders[item.Folder]; - + parentFolder.Items.Add(item.ID, item); } else @@ -230,11 +230,11 @@ namespace OpenSim.Framework.Communications.Cache m_log.WarnFormat( "[LIBRARY INVENTORY]: Couldn't add item {0} ({1}) since parent folder with ID {2} does not exist!", item.Name, item.ID, item.Folder); - } + } } - - private delegate void ConfigAction(IConfig config); - + + private delegate void ConfigAction(IConfig config); + /// /// Load the given configuration at a path and perform an action on each Config contained within it /// @@ -242,7 +242,7 @@ namespace OpenSim.Framework.Communications.Cache /// /// private static void LoadFromFile(string path, string fileDescription, ConfigAction action) - { + { if (File.Exists(path)) { try @@ -250,21 +250,21 @@ namespace OpenSim.Framework.Communications.Cache XmlConfigSource source = new XmlConfigSource(path); for (int i = 0; i < source.Configs.Count; i++) - { + { action(source.Configs[i]); } } catch (XmlException e) { m_log.ErrorFormat("[LIBRARY INVENTORY]: Error loading {0} : {1}", path, e); - } + } } else { m_log.ErrorFormat("[LIBRARY INVENTORY]: {0} file {1} does not exist!", fileDescription, path); - } + } } - + /// /// Looks like a simple getter, but is written like this for some consistency with the other Request /// methods in the superclass diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs index 7f911dc..fe61406 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs @@ -33,7 +33,7 @@ using libsecondlife; using log4net; namespace OpenSim.Framework.Communications.Cache -{ +{ /// /// Holds user profile information and retrieves it from backend services. /// @@ -45,7 +45,7 @@ namespace OpenSim.Framework.Communications.Cache /// The comms manager holds references to services (user, grid, inventory, etc.) /// private readonly CommunicationsManager m_commsManager; - + /// /// Each user has a cached profile. /// @@ -84,8 +84,8 @@ namespace OpenSim.Framework.Communications.Cache } } } - } - + } + /// /// Remove this user's profile cache. /// @@ -103,9 +103,9 @@ namespace OpenSim.Framework.Communications.Cache else { m_log.ErrorFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userID); - } + } } - + return false; } @@ -118,14 +118,14 @@ namespace OpenSim.Framework.Communications.Cache { CachedUserInfo userInfo = GetUserDetails(userID); if (userInfo != null) - { + { m_commsManager.InventoryService.RequestInventoryForUser(userID, userInfo.InventoryReceive); } else { m_log.ErrorFormat("[USER CACHE]: RequestInventoryForUser() - user profile for user {0} not found", userID); } - } + } /// /// Get the details of the given user. A caller should try this method first if it isn't sure that @@ -151,7 +151,7 @@ namespace OpenSim.Framework.Communications.Cache /// public void HandleCreateInventoryFolder(IClientAPI remoteClient, LLUUID folderID, ushort folderType, string folderName, LLUUID parentID) - { + { CachedUserInfo userProfile; if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile)) @@ -159,21 +159,21 @@ namespace OpenSim.Framework.Communications.Cache if (!userProfile.CreateFolder(folderName, folderID, folderType, parentID)) { m_log.ErrorFormat( - "[AGENT INVENTORY]: Failed to create folder for user {0} {1}", + "[AGENT INVENTORY]: Failed to create folder for user {0} {1}", remoteClient.Name, remoteClient.AgentId); } } else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); } } /// /// Handle a client request to update the inventory folder - /// + /// /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, /// and needs to be changed. @@ -188,7 +188,7 @@ namespace OpenSim.Framework.Communications.Cache { // m_log.DebugFormat( // "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId); - + CachedUserInfo userProfile; if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile)) @@ -196,16 +196,16 @@ namespace OpenSim.Framework.Communications.Cache if (!userProfile.UpdateFolder(name, folderID, type, parentID)) { m_log.ErrorFormat( - "[AGENT INVENTORY]: Failed to update folder for user {0} {1}", + "[AGENT INVENTORY]: Failed to update folder for user {0} {1}", remoteClient.Name, remoteClient.AgentId); } } else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); - } + } } /// @@ -223,16 +223,16 @@ namespace OpenSim.Framework.Communications.Cache if (!userProfile.MoveFolder(folderID, parentID)) { m_log.ErrorFormat( - "[AGENT INVENTORY]: Failed to move folder for user {0} {1}", + "[AGENT INVENTORY]: Failed to move folder for user {0} {1}", remoteClient.Name, remoteClient.AgentId); } } else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); - } + } } /// @@ -267,14 +267,14 @@ namespace OpenSim.Framework.Communications.Cache else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); - } + } } /// /// Handle the caps inventory descendents fetch. - /// + /// /// Since the folder structure is sent to the client on login, I believe we only need to handle items. /// /// @@ -288,20 +288,20 @@ namespace OpenSim.Framework.Communications.Cache bool fetchFolders, bool fetchItems, int sortOrder) { // m_log.DebugFormat( -// "[INVENTORY CACHE]: Fetching folders ({0}), items ({1}) from {2} for agent {3}", +// "[INVENTORY CACHE]: Fetching folders ({0}), items ({1}) from {2} for agent {3}", // fetchFolders, fetchItems, folderID, agentID); - + // FIXME MAYBE: We're not handling sortOrder! InventoryFolderImpl fold; if ((fold = libraryRoot.FindFolder(folderID)) != null) { return fold.RequestListOfItems(); - } + } CachedUserInfo userProfile; if (m_userProfiles.TryGetValue(agentID, out userProfile)) - { + { // XXX: When a client crosses into a scene, their entire inventory is fetched // asynchronously. If the client makes a request before the inventory is received, we need // to give the inventory a chance to come in. @@ -315,18 +315,18 @@ namespace OpenSim.Framework.Communications.Cache while (attempts++ < 30) { m_log.DebugFormat( - "[INVENTORY CACHE]: Poll number {0} for inventory items in folder {1} for user {2}", + "[INVENTORY CACHE]: Poll number {0} for inventory items in folder {1} for user {2}", attempts, folderID, agentID); - + Thread.Sleep(2000); - + if (userProfile.HasInventory) { break; } } - } - + } + if (userProfile.HasInventory) { if ((fold = userProfile.RootFolder.FindFolder(folderID)) != null) @@ -338,9 +338,9 @@ namespace OpenSim.Framework.Communications.Cache m_log.WarnFormat( "[AGENT INVENTORY]: Could not find folder {0} requested by user {1}", folderID, agentID); - + return null; - } + } } else { @@ -352,7 +352,7 @@ namespace OpenSim.Framework.Communications.Cache else { m_log.ErrorFormat("[AGENT INVENTORY]: Could not find user profile for {0}", agentID); - + return null; } } @@ -371,16 +371,16 @@ namespace OpenSim.Framework.Communications.Cache if (!userProfile.PurgeFolder(folderID)) { m_log.ErrorFormat( - "[AGENT INVENTORY]: Failed to purge folder for user {0} {1}", + "[AGENT INVENTORY]: Failed to purge folder for user {0} {1}", remoteClient.Name, remoteClient.AgentId); } } else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); - } + } } public void HandleFetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID) @@ -407,9 +407,9 @@ namespace OpenSim.Framework.Communications.Cache else { m_log.ErrorFormat( - "[AGENT INVENTORY]: Could not find user profile for {0} {1}", + "[AGENT INVENTORY]: Could not find user profile for {0} {1}", remoteClient.Name, remoteClient.AgentId); - } + } } } } -- cgit v1.1