From 33186527235091f95a7251ea66a713fdaee1c689 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 21 Aug 2009 11:00:45 -0700 Subject: Added a more sane InventoryServerMoveItemsHandler. Changed SynchronousRestObjectRequester so that it also understands PUTs. --- .../Inventory/InventoryServiceConnector.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index b573a06..7c35bde 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs @@ -397,13 +397,28 @@ namespace OpenSim.Services.Connectors private void MoveItemsAsync(string userID, List items, UUID sessionID) { + if (items == null) + { + m_log.WarnFormat("[INVENTORY CONNECTOR]: request to move items got a null list."); + return; + } + try { - SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - "POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString()); + //SynchronousRestSessionObjectPoster, bool>.BeginPostObject( + // "POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString()); + + //// Success + //return; + string uri = m_ServerURI + "/inventory/" + userID; + if (SynchronousRestObjectRequester. + MakeRequest, bool>("PUT", uri, items)) + m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster succeeded {1}", items.Count, uri); + else + m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster failed {1}", items.Count, uri); ; - // Success return; + } catch (Exception e) { -- cgit v1.1 From b03eeeb9f6331ed36c61f55aef847ce3b2db7ba4 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 22 Aug 2009 10:24:26 -0700 Subject: * Fixes mantis http://opensimulator.org/mantis/view.php?id=4044. Turns out folders were never being removed from trash when they were singled out for purging in trash. They were being removed when Trash was purged as a whole. That behavior is now fixed for the new InventoryService set. * Removed left-overs from AssetInventoryServer. --- .../Inventory/HGInventoryServiceConnector.cs | 13 ++++++++++++ .../Inventory/ISessionAuthInventoryService.cs | 5 +++++ .../Inventory/InventoryServiceConnector.cs | 23 ++++++++++++++++++++-- .../QuickAndDirtyInventoryServiceConnector.cs | 6 ++++++ OpenSim/Services/Interfaces/IInventoryService.cs | 8 ++++++++ .../Services/InventoryService/InventoryService.cs | 16 +++++++++++++-- 6 files changed, 67 insertions(+), 4 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs index 45e921a..1004fb9 100644 --- a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs @@ -201,6 +201,19 @@ namespace OpenSim.Services.Connectors.Inventory return false; } + public bool DeleteFolders(string id, List folders, UUID sessionID) + { + string url = string.Empty; + string userID = string.Empty; + + if (StringToUrlAndUserID(id, out url, out userID)) + { + ISessionAuthInventoryService connector = GetConnector(url); + return connector.DeleteFolders(userID, folders, sessionID); + } + return false; + } + public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID) { string url = string.Empty; diff --git a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs index c89c9b7..da8c7e2 100644 --- a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs +++ b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs @@ -89,6 +89,11 @@ namespace OpenSim.Services.Connectors bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id); /// + /// Delete a list of inventory folders (from trash) + /// + bool DeleteFolders(string userID, List folders, UUID session_id); + + /// /// Purge an inventory folder of all its items and subfolders. /// /// diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index 7c35bde..423ca75 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs @@ -308,6 +308,25 @@ namespace OpenSim.Services.Connectors return false; } + public bool DeleteFolders(string userID, List folderIDs, UUID sessionID) + { + try + { + List guids = new List(); + foreach (UUID u in folderIDs) + guids.Add(u.Guid); + return SynchronousRestSessionObjectPoster, bool>.BeginPostObject( + "POST", m_ServerURI + "/DeleteFolders/", guids, sessionID.ToString(), userID); + } + catch (Exception e) + { + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory folders operation failed, {0} {1}", + e.Source, e.Message); + } + + return false; + } + public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID) { try @@ -481,12 +500,12 @@ namespace OpenSim.Services.Connectors return null; } - public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase item, UUID sessionID) + public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID) { try { return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/QueryFolder/", item, sessionID.ToString(), item.Owner.ToString()); + "POST", m_ServerURI + "/QueryFolder/", folder, sessionID.ToString(), userID); } catch (Exception e) { diff --git a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs index cd283ff..a7aa138 100644 --- a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs @@ -136,6 +136,12 @@ namespace OpenSim.Services.Connectors return false; } + public bool DeleteFolders(UUID ownerID, List folderIDs) + { + return false; + } + + public bool PurgeFolder(InventoryFolderBase folder) { return false; diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs index ebdb09a..c775090 100644 --- a/OpenSim/Services/Interfaces/IInventoryService.cs +++ b/OpenSim/Services/Interfaces/IInventoryService.cs @@ -122,6 +122,14 @@ namespace OpenSim.Services.Interfaces bool MoveFolder(InventoryFolderBase folder); /// + /// Delete an item from the user's inventory + /// + /// + /// true if the item was successfully deleted + //bool DeleteItem(InventoryItemBase item); + bool DeleteFolders(UUID userID, List folderIDs); + + /// /// Purge an inventory folder of all its items and subfolders. /// /// diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 45bbd37..0cf4af1 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs @@ -425,15 +425,27 @@ namespace OpenSim.Services.InventoryService return null; } - public virtual InventoryFolderBase GetFolder(InventoryFolderBase item) + public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder) { - InventoryFolderBase result = m_Database.getInventoryFolder(item.ID); + m_log.DebugFormat("[INVENTORY SERVICE]: GetFolder {0}", folder.ID); + InventoryFolderBase result = m_Database.getInventoryFolder(folder.ID); if (result != null) return result; return null; } + public virtual bool DeleteFolders(UUID ownerID, List folderIDs) + { + foreach (UUID id in folderIDs) + { + InventoryFolderBase folder = new InventoryFolderBase(id, ownerID); + PurgeFolder(folder); + m_Database.deleteInventoryFolder(id); + } + return true; + } + /// /// Purge a folder of all items items and subfolders. /// -- cgit v1.1 From 71f2d8391b154fe98718f8ddec96cbd1de573945 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 22 Aug 2009 10:30:27 -0700 Subject: Moved a debug message. --- OpenSim/Services/InventoryService/InventoryService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 0cf4af1..19b1fd8 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs @@ -427,11 +427,11 @@ namespace OpenSim.Services.InventoryService public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder) { - m_log.DebugFormat("[INVENTORY SERVICE]: GetFolder {0}", folder.ID); InventoryFolderBase result = m_Database.getInventoryFolder(folder.ID); if (result != null) return result; + m_log.DebugFormat("[INVENTORY SERVICE]: GetFolder failed to find folder {0}", folder.ID); return null; } -- cgit v1.1 From cfd9cf7b18331a9d2117294f6ba23dd03a9423a1 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 25 Aug 2009 06:17:36 -0700 Subject: Closed the web request and stream in SynchronousRestSessionObjectPoster -- maybe this is the cause of some timeouts seen in some monos? --- OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index 423ca75..a2261ba 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs @@ -229,6 +229,11 @@ namespace OpenSim.Services.Connectors return SynchronousRestSessionObjectPoster.BeginPostObject( "POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString()); } + catch (TimeoutException e) + { + m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation to {0} timed out {0} {1}.", m_ServerURI, + e.Source, e.Message); + } catch (Exception e) { // Maybe we're talking to an old inventory server. Try this other thing. -- cgit v1.1