private void ReloadLibrary(Logger logger = null) { if (logger == null) { logger = Program.Logger; } HaProtoImpl.LIBRARY_RESET result = null; List <string> paths = new List <string>(), exts = new List <string>(); paths = libraryPaths.ToList(); exts = extensionWhitelist.ToList(); List <string> index = Reindex(paths, exts, logger); if (index == null) { return; } result = new HaProtoImpl.LIBRARY_RESET() { paths = index }; indexerFinished = true; if (result != null) { Utils.ExecutePacketAndBroadcast(HaProtoImpl.Opcode.LIBRARY_RESET, result); } }
private void ReloadLibrary(Action <string> logger = null) { if (logger == null) { logger = log; } HaProtoImpl.LIBRARY_RESET result = null; if (Monitor.TryEnter(libraryLoaderLock)) { try { List <string> paths = new List <string>(), exts = new List <string>(); lock (libraryPaths) { paths = libraryPaths.ToList(); } lock (extensionWhitelist) { exts = extensionWhitelist.ToList(); } List <string> index = Reindex(paths, exts, logger); if (index == null) { return; } lock (dataSource.Lock) { result = new HaProtoImpl.LIBRARY_RESET() { paths = index }; indexerFinished = true; } } finally { Monitor.Exit(libraryLoaderLock); } } else { logger("ReloadLibrary: Someone else already reloading, skipping"); } if (result != null) { ExecutePacketAndBroadcast(HaProtoImpl.Opcode.LIBRARY_RESET, result); } }