예제 #1
0
        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);
            }
        }
예제 #2
0
 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);
     }
 }