public DescendentsRequest(UUID folder, FolderContentsCallback callback) { Folder = folder; Callback = callback; ReceivedResponse = false; Descendents = 0; FolderContents = new List<FolderData>(); ItemContents = new List<ItemData>(); PartialCallback = null; }
/// <summary> /// Request the contents of an inventory folder, <paramref name="callback"/> is fired when all of the contents are retrieved. /// <paramref name="partialCallback"/> is fired as the contents trickle in from the server. /// </summary> /// <param name="folder">The folder to search</param> /// <param name="owner">The folder owners <seealso cref="UUID"/></param> /// <param name="folders">true to return <seealso cref="InventoryManager.InventoryFolder"/>s contained in folder</param> /// <param name="items">true to return <seealso cref="InventoryManager.InventoryItem"/>s containd in folder</param> /// <param name="order">the sort order to return items in</param> /// <param name="callback">The callback to fire when all the contents are received.</param> /// <param name="partialCallback">The callback to fire as the contents are received.</param> /// <seealso cref="InventoryManager.FolderContents"/> public void RequestFolderContents(UUID folder, UUID owner, bool folders, bool items, InventorySortOrder order, FolderContentsCallback callback, PartialContentsCallback partialCallback) { DescendentsRequest request = new DescendentsRequest(folder, callback); request.PartialCallback = partialCallback; lock (_DescendentsRequests) _DescendentsRequests.Add(request); // Send the packet: FetchInventoryDescendentsPacket fetch = new FetchInventoryDescendentsPacket(); fetch.AgentData.AgentID = _Agents.AgentID; fetch.AgentData.SessionID = _Agents.SessionID; fetch.InventoryData.FetchFolders = folders; fetch.InventoryData.FetchItems = items; fetch.InventoryData.FolderID = folder; fetch.InventoryData.OwnerID = owner; fetch.InventoryData.SortOrder = (int)order; _Network.SendPacket(fetch); }
/// <summary> /// /// </summary> /// <param name="folder"></param> /// <param name="owner"></param> /// <param name="folders"></param> /// <param name="items"></param> /// <param name="order"></param> /// <param name="callback"></param> public void RequestFolderContents(UUID folder, UUID owner, bool folders, bool items, InventorySortOrder order, FolderContentsCallback callback) { RequestFolderContents(folder, owner, folders, items, order, callback, null); }
/// <summary> /// Get contents of a folder /// </summary> /// <param name="folder">The <seealso cref="UUID"/> of the folder to search</param> /// <param name="owner">The <seealso cref="UUID"/> of the folders owner</param> /// <param name="folders">true to retrieve folders</param> /// <param name="items">true to retrieve items</param> /// <param name="order">sort order to return results in</param> /// <param name="timeout">a TimeSpan representing the amount of time to wait for results</param> /// <param name="folderContents">A list of FolderData representing the folders contained in the parent folder.</param> /// <param name="itemContents">A list of ItemData representing the items contained in the parent folder.</param> /// <returns><code>true</code> if successful, <code>false</code> if timed out</returns> /// <seealso cref="InventoryManager.RequestFolderContents"/> public bool FolderContents(UUID folder, UUID owner, bool folders, bool items, InventorySortOrder order, TimeSpan timeout, out List<ItemData> itemContents, out List<FolderData> folderContents) { AutoResetEvent lockEvent = new AutoResetEvent(false); List<FolderData> _folders = null; List<ItemData> _items = null; FolderContentsCallback callback = new FolderContentsCallback( delegate(UUID folderID, List<ItemData> __items, List<FolderData> __folders) { if (folderID == folder) { _folders = __folders; _items = __items; lockEvent.Set(); } }); RequestFolderContents(folder, owner, folders, items, order, callback); bool success = lockEvent.WaitOne(timeout, false); itemContents = _items; folderContents = _folders; return success; }
public abstract void RequestFolderContents(UUID userId, UUID folderId, FolderContentsCallback callback);