void Inventory_FolderUpdated(object sender, FolderUpdatedEventArgs e) { if (COF == null) { return; } if (e.FolderID == COF.UUID && e.Success) { COF = (InventoryFolder)Client.Inventory.Store[COF.UUID]; lock (FolderSync) { lock (Content) Content.Clear(); List <UUID> items = new List <UUID>(); List <UUID> owners = new List <UUID>(); foreach (var link in ContentLinks()) { //if (Client.Inventory.Store.Contains(link.AssetUUID)) //{ // continue; //} items.Add(link.AssetUUID); owners.Add(Client.Self.AgentID); } if (items.Count > 0) { Client.Inventory.RequestFetchInventory(items, owners); } } } }
public void Inventory_FolderUpdated(object sender, FolderUpdatedEventArgs e) { List <InventoryBase> contents = Client.Inventory.Store.GetContents(e.FolderID); Hashtable roothash = new Hashtable(); roothash.Add("MessageType", "FolderUpdated"); roothash.Add("FolderID", e.FolderID); List <Hashtable> response = new List <Hashtable>(); lock (LoadedInventory) { foreach (InventoryBase o in contents) { if (LoadedInventory.Contains(o.UUID)) { continue; } LoadedInventory.Add(o.UUID); Hashtable hash = new Hashtable(); if (o is InventoryFolder) { InventoryFolder folder = (InventoryFolder)o; hash.Add("Type", "InventoryFolder"); hash.Add("Name", folder.Name); hash.Add("PreferredType", folder.PreferredType); hash.Add("OwnerID", folder.OwnerID); hash.Add("UUID", folder.UUID); response.Add(hash); } else if (o is InventoryItem) { InventoryItem item = (InventoryItem)o; hash.Add("Type", "InventoryItem"); hash.Add("Name", item.Name); hash.Add("UUID", item.UUID); hash.Add("AssetType", item.AssetType); hash.Add("AssetUUID", item.AssetUUID); hash.Add("CreatorID", item.CreatorID); hash.Add("OwnerID", item.OwnerID); hash.Add("CreationDate", item.CreationDate); hash.Add("Description", item.Description); hash.Add("Flags", item.Flags); hash.Add("InventoryType", item.InventoryType); hash.Add("Permissions", item.Permissions); response.Add(hash); } } } roothash.Add("Contents", response); enqueue(roothash); }
void Inventory_FolderUpdated(object sender, FolderUpdatedEventArgs e) { if (e.Success) { //Console.WriteLine("Folder " + e.FolderID + " updated"); bool fetch = false; lock (m_processed) { if (!m_processed.Contains(e.FolderID)) { m_processed.Add(e.FolderID); fetch = true; } } if (fetch) { List <InventoryFolder> m_foldersToFetch = new List <InventoryFolder>(); foreach (InventoryBase item in Bot.Client.Inventory.Store.GetContents(e.FolderID)) { if (item is InventoryFolder) { InventoryFolder f = new InventoryFolder(item.UUID); f.OwnerID = item.OwnerID; m_foldersToFetch.Add(f); } } if (m_foldersToFetch.Count > 0) { m_Requests += 1; Bot.Client.Inventory.RequestFolderContentsCap(m_foldersToFetch, Bot.Client.Network.CurrentSim.Caps.CapabilityURI("FetchInventoryDescendents2"), true, true, InventorySortOrder.ByDate); } } if (Bot.Client.Inventory.Store.Items.Count >= 15739) { m_StopWatch.Stop(); Console.WriteLine("Stop! Total items: " + Bot.Client.Inventory.Store.Items.Count + "; Total requests: " + m_Requests + "; Time: " + m_StopWatch.Elapsed); } } }
private void Inventory_OnFolderUpdated(object sender, FolderUpdatedEventArgs e) { UpdateFolder(e.FolderID); }
private void Inventory_OnFolderUpdated(object sender, FolderUpdatedEventArgs e) { UpdateFolder(e.FolderID); }
/// <summary> /// 指定ファイル・フォルダを対象にしてデータベース更新 /// </summary> /// <param name="args"></param> /// <returns></returns> private async Task CheckFolderUpdateAsync(FolderUpdatedEventArgs args) { using (await asyncLock.LockAsync()) { this.IsCreatingSubject.OnNext(true); await Task.Run(async() => { this.Creator.IgnoredFolders = null; this.Creator.Completely = this.RefreshLibraryCompletely; this.Creator.Level = this.FileCheckLevel;// PropertiesLevel.Basic; if (args.AddedFiles.Length + args.RemovedFiles.Length >= 128) { var folderPathDictionary = args.Folders.Distinct().ToDictionary(x => x, x => new FolderInformation(x) { IsTopDirectoryOnly = false, RefreshEnable = true, }); var parentFolders = args.AddedFiles .Concat(args.RemovedFiles) .AsParallel() .Select(x => System.IO.Path.GetDirectoryName(x)) .Distinct() .ToArray(); var existing = folderPathDictionary .Select(x => PathUtility.WithPostSeparator(x.Key)) .ToArray(); foreach (var item in parentFolders) { var path = PathUtility.WithPostSeparator(item); if (!existing.Any(x => path.StartsWith(x))) { folderPathDictionary.Add(item, new FolderInformation(item) { RefreshEnable = true, IsTopDirectoryOnly = true, }); } } this.Creator.Folders = folderPathDictionary.Select(x => x.Value).ToArray(); await this.Creator.RefreshLibraryAsync(LibraryLoadAction.FolderChanged); } else { this.Creator.Folders = args.Folders .Select(x => new FolderInformation(x) { IsTopDirectoryOnly = false, RefreshEnable = true, }) .ToArray(); await this.Creator.RefreshLibraryAsync (LibraryLoadAction.FolderChanged, args.AddedFiles, args.RemovedFiles); } }); this.IsCreatingSubject.OnNext(false); } }
private void FashionBotModuleMain_OnFolderUpdated(object sender, FolderUpdatedEventArgs e) { EnumerateClothing(); }