public FolderContents ( UUID folder, UUID owner, bool folders, bool items, InventorySortOrder order, int timeoutMS ) : List |
||
folder | UUID | The |
owner | UUID | The |
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;
}