public override void GetData() { logger.Trace("GetData()...."); base.GetData(); RetrievalCriteria rc1 = new RetrievalCriteria("ValidCompletionTime", CriteraType.GreaterThan, SelectedDate.Date); RetrievalCriteria rc2 = new RetrievalCriteria("ValidCompletionTime", CriteraType.LessThan, SelectedDate.Date.AddDays(1)); RetrievalCriteria rc3 = new RetrievalCriteria("Cancelled", CriteraType.Equals, false); List <RetrievalCriteria> rcList = new List <RetrievalCriteria>(); rcList.Add(rc1); rcList.Add(rc2); rcList.Add(rc3); var col = DesktopApplication.Librarian.GetItems(typeof(ScanTask), rcList); if (ScanTasks.Any()) { logger.Trace("ScanTasks already found during GetData(), Clear()"); ScanTasks.Clear(); } foreach (IDataStoreItem i in col) { logger.Trace("Created new DiaryEventWrapper.."); DiaryEventWrapper dew = new DiaryEventWrapper(i as ScanTask, this); dew.RoomChanged += Dew_RoomChanged; dew.Selected += Dew_Selected; ScanTasks.Add(dew); } RaisePropertyChanged("Diaries"); logger.Trace("GetData()....Complete"); }
private static void Handler() { var binaryReader = new BinaryReader(UserInputConnector); Out_writer = new BinaryWriter(UserOutputConnector); #if DEBUG Console.WriteLine("[API] Init success"); #endif byte code = 255; while (true) { KernelConnectors.Api_In_Sync.WaitOne(); { try { code = binaryReader.ReadByte(); } catch { #if DEBUG Console.WriteLine("[API] Чтение завершилось ошибкой"); #endif if (!UserInputConnector.IsConnected) { #if DEBUG Console.WriteLine("[API] Ожидание переподключения пользователя"); #endif try { UserInputConnector.WaitForConnection(); } catch (Exception ex) { #if DEBUG Console.WriteLine($"[API] {ex.Message}"); #endif break; } if (!UserOutputConnector.IsConnected) { #if DEBUG Console.WriteLine("[API] Переподключение к пользователю"); #endif UserOutputConnector.Connect(); } KernelConnectors.Api_In_Sync.ReleaseMutex(); continue; } } #if DEBUG Console.WriteLine($"[API] Запрос, код {code}"); #endif switch (code) { //Запрос на case 0: { break; } //Запрос на перемещение файла в карантин case 1: { Task.Run(() => { var id = binaryReader.ReadInt32(); ToQuarantine(id); }); break; } //Запрос на восстановление файла из карантина case 2: { Task.Run(() => { var id = binaryReader.ReadInt32(); Restore(id); }); break; } //Запрос на удаление файла case 3: { Task.Run(() => { var id = binaryReader.ReadInt32(); Delete(id); }); break; } //Запрос информации о вирусе case 4: { Task.Run(() => { var id = binaryReader.ReadInt32(); getVirusInfo(id); }); break; } //Запрос информации о всех вирусах case 5: { Task.Run(() => { getAllVirusesInfo(); }); break; } //Просканировать файл case 6: { string file = binaryReader.ReadString(); #if DEBUG Console.WriteLine("[API] Добавление задачи " + file); #endif Task.Run(() => { if (ScanTasks.Add(file) is null) { #if DEBUG Console.WriteLine("[API] Ошибка добавления задачи, проверка завершена"); #endif API_ScanCompleted(0, false, 0, file); } } ); break; } //Очистить очередь сканирования case 7: { KernelConnectors.ScannerService_Command_Sync.WaitOne(); { ScanTasks.ClearQueue(); } KernelConnectors.ScannerService_Command_Sync.ReleaseMutex(); break; } //Включение/выключение автоматической проверки съемных носителей case 8: { var flag = binaryReader.ReadBoolean(); if (flag) { KernelConnectors.PartitionMon_CommandWriter.Write("2*"); } else { KernelConnectors.PartitionMon_CommandWriter.Write("3*"); } KernelConnectors.PartitionMon_CommandWriter.Flush(); break; } //Очистить информацию о подключенных устройствах case 9: { KernelConnectors.PartitionMon_CommandWriter.Write("4*"); KernelConnectors.PartitionMon_CommandWriter.Flush(); break; } //Добавить простое правило фильтрации case 10: { string rule = binaryReader.ReadString(); KernelConnectors.Filter_CommandWriter.Write((byte)3); KernelConnectors.Filter_CommandWriter.Write(rule); KernelConnectors.Filter_CommandWriter.Flush(); break; } //Удалить простое правило фильтрации case 11: { string rule = binaryReader.ReadString(); KernelConnectors.Filter_CommandWriter.Write((byte)4); KernelConnectors.Filter_CommandWriter.Write(rule); KernelConnectors.Filter_CommandWriter.Flush(); break; } //Удалить все простые правила фильтрации case 12: { KernelConnectors.Filter_CommandWriter.Write((byte)5); KernelConnectors.Filter_CommandWriter.Flush(); break; } //Отключить всё case 13: { #if DEBUG Console.WriteLine("[API] Выключение ядра"); #endif ScanTasks.Stop(); { #if DEBUG Console.WriteLine("[API] Выключение фильтра "); #endif KernelConnectors.Filter_CommandWriter.Write((byte)6); #if DEBUG Console.WriteLine("[API] Выключение монитора разделов "); #endif KernelConnectors.PartitionMon_CommandWriter.Write("7*"); #if DEBUG Console.WriteLine("[API] Выключение сканнера "); #endif KernelConnectors.ScannerService_CommandWriter.Write((byte)1); #if DEBUG Console.WriteLine("[API] Выключение вирусной БД"); #endif KernelConnectors.VirusesDb_CommandWriter.Write("/shutdown"); } #if DEBUG Console.WriteLine("[API] Закрытие подключений"); #endif KernelConnectors.Stop(); Task.Run(() => { Thread.Sleep(1000); #if DEBUG Console.WriteLine("[API] Отключение обработчика API"); #endif RequestHandler.Abort(); #if DEBUG Console.WriteLine("[API] Закрытие процесса ядра"); #endif Process.GetCurrentProcess().Kill(); }); break; } case 14: { Defender(binaryReader.ReadBoolean()); break; } default: { #if DEBUG Console.WriteLine("[API] Unknown request"); #endif break; } } } KernelConnectors.Api_In_Sync.ReleaseMutex(); } }