예제 #1
0
파일: ITask.cs 프로젝트: vnvizitiu/DotOPDS

        
예제 #2
0
        public void Run(ITaskArgs args_)
        {
            var args = (ServeTaskArgs)args_;

            server = new WebServer(new IPEndPoint(IPAddress.Any, args.Port));

            logger.Info("Web server started at http://localhost:{0}/", args.Port);

            Program.Exit.WaitOne();
        }
예제 #3
0
        public void Run(ITaskArgs args_)
        {
            var args = (ImportTaskArgs)args_;

            var id = Settings.Instance.Libraries.FirstOrDefault(lib =>
                                                                args.Library.Equals(lib.Value.Path, StringComparison.InvariantCultureIgnoreCase)).Key;

            if (id == Guid.Empty)
            {
                libId = Guid.NewGuid();
            }
            else
            {
                libId = id;
            }

            var startedAt = DateTime.UtcNow;

            args.Plugin.Run(args.Library, args.Args, OnImportBook, OnImportFinished);

            importer.Open(Settings.Instance.DatabaseIndex);

            for (var i = 0; i < Environment.ProcessorCount; i++)
            {
                Task.Factory.StartNew(ImportWorker);
            }

            while (EntriesProcessed < EntriesTotal || !finished)
            {
                Thread.Sleep(100);
            }

            running = false;

            EntriesDeleted = importer.CleanupLibrary(libId.ToString(), startedAt);

            Settings.Instance.Libraries[libId] = new SettingsLibrary {
                Path = args.Library
            };
            Settings.Save();

            Finished = true;
        }