/// <summary> /// 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. /// </summary> /// <param name="itemID"></param> /// <returns> /// true on a successful delete or a if the request is queued. /// Returns false on an immediate failure /// </returns> public bool DeleteItem(UUID itemID) { if (m_hasReceivedInventory) { // 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_InventoryService.DeleteItem(item)); } } else { AddRequest( new InventoryRequest( Delegate.CreateDelegate(typeof(DeleteItemDelegate), this, "DeleteItem"), new object[] { itemID })); return(true); } return(false); }
// Load additional items that other regions have put into the database // The item will be added tot he local cache. Returns true if the item // was found and can be sent to the client // public bool QueryItem(InventoryItemBase item) { if (m_hasReceivedInventory) { InventoryItemBase invItem = RootFolder.FindItem(item.ID); if (invItem != null) { // Item is in local cache, just update client // return(true); } InventoryItemBase itemInfo = null; itemInfo = m_InventoryService.QueryItem(item); if (itemInfo != null) { InventoryFolderImpl folder = RootFolder.FindFolder(itemInfo.Folder); ItemReceive(itemInfo, folder); return(true); } return(false); } else { AddRequest( new InventoryRequest( Delegate.CreateDelegate(typeof(QueryItemDelegate), this, "QueryItem"), new object[] { item.ID })); return(true); } }