OpenMetaverse.InventoryManager.FolderContents C# (CSharp) Method

FolderContents() public method

Get contents of a folder
InventoryFolder.DescendentCount will only be accurate if both folders and items are requested
public FolderContents ( UUID folder, UUID owner, bool folders, bool items, InventorySortOrder order, int timeoutMS ) : List
folder UUID The of the folder to search
owner UUID The of the folders owner
folders bool true to retrieve folders
items bool true to retrieve items
order InventorySortOrder sort order to return results in
timeoutMS int a integer representing the number of milliseconds to wait for results
return List
        public List<InventoryBase> FolderContents(UUID folder, UUID owner, bool folders, bool items,
            InventorySortOrder order, int timeoutMS)
        {
            List<InventoryBase> objects = null;
            AutoResetEvent fetchEvent = new AutoResetEvent(false);

            FolderUpdatedCallback callback =
                delegate(UUID folderID)
                {
                    if (folderID == folder
                        && _Store[folder] is InventoryFolder)
                    {
                        // InventoryDescendentsHandler only stores DescendendCount if both folders and items are fetched.
                        if (_Store.GetContents(folder).Count >= ((InventoryFolder)_Store[folder]).DescendentCount)
                        {

                            fetchEvent.Set();
                        }
                    }
                    else
                    {
                        fetchEvent.Set();
                    }
                };

            OnFolderUpdated += callback;

            RequestFolderContents(folder, owner, folders, items, order);
            if (fetchEvent.WaitOne(timeoutMS, false))
                objects = _Store.GetContents(folder);

            OnFolderUpdated -= callback;

            return objects;
        }