public void startAndStop() { bool positionreceived = false; Mock <Command> cmd = new Mock <Command>(); cmd.Setup(m => m.getPosition()) .Callback(() => { positionreceived = true; }) .Returns(new PositionInfo(0, 0, 45)); string path = System.IO.Path.GetTempFileName(); FileMonitor monitor = new FileMonitor(path); monitor.start(cmd.Object); while (!positionreceived) { Thread.Sleep(100); } Thread.Sleep(100); monitor.stop(); Assert.AreNotEqual("", monitor.dump()); Console.WriteLine(monitor.dump()); }
public void openDumpAndCloseFile() { string path = System.IO.Path.GetTempFileName(); FileMonitor monitor = new FileMonitor(path); Assert.AreEqual("", monitor.dump()); }
/// <summary> /// Saves SessionToken's from SessionCache into cache file. /// </summary> private static void SaveToDisk() { if (Settings.DebugMessages) { ConsoleIO.WriteLineFormatted("§8Saving session cache to disk"); } List <string> sessionCacheLines = new List <string>(); sessionCacheLines.Add("# Generated by MCC v" + Program.Version + " - Edit at own risk!"); sessionCacheLines.Add("# Login=SessionID,PlayerName,UUID,ClientID"); foreach (KeyValuePair <string, SessionToken> entry in sessions) { sessionCacheLines.Add(entry.Key + '=' + entry.Value.ToString()); } try { FileMonitor.WriteAllLinesWithRetries(SessionCacheFilePlaintext, sessionCacheLines); } catch (IOException e) { ConsoleIO.WriteLineFormatted("§8Failed to write session cache to disk: " + e.Message); } }
// Constructor for Game public Game() { board = new Board(); fileMonitor = new FileMonitor(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); gui = new ChessForms.GUI(start, pauseUnpause, reset, saveGame, loadGame); // Load last game bool ok = SaveManager.loadCurrent(ref board); if (ok) { // Set GUI and other stuff gui.putString("Loading last game"); updateOnLoad(); } else { reset(); } gui.updateBoard(board); Application.Run(gui); }
/// <summary> /// Initialization of the Mailer bot /// </summary> public override void Initialize() { LogDebugToConsole("Initializing Mailer with settings:"); LogDebugToConsole(" - Database File: " + Settings.Mailer_DatabaseFile); LogDebugToConsole(" - Ignore List: " + Settings.Mailer_IgnoreListFile); LogDebugToConsole(" - Public Interactions: " + Settings.Mailer_PublicInteractions); LogDebugToConsole(" - Max Mails per Player: " + Settings.Mailer_MaxMailsPerPlayer); LogDebugToConsole(" - Max Database Size: " + Settings.Mailer_MaxDatabaseSize); LogDebugToConsole(" - Mail Retention: " + Settings.Mailer_MailRetentionDays + " days"); if (Settings.Mailer_MaxDatabaseSize <= 0) { LogToConsole("Cannot enable Mailer: Max Database Size must be greater than zero. Please review the settings."); UnloadBot(); return; } if (Settings.Mailer_MaxMailsPerPlayer <= 0) { LogToConsole("Cannot enable Mailer: Max Mails per Player must be greater than zero. Please review the settings."); UnloadBot(); return; } if (Settings.Mailer_MailRetentionDays <= 0) { LogToConsole("Cannot enable Mailer: Mail Retention must be greater than zero. Please review the settings."); UnloadBot(); return; } if (!File.Exists(Settings.Mailer_DatabaseFile)) { LogToConsole("Creating new database file: " + Path.GetFullPath(Settings.Mailer_DatabaseFile)); new MailDatabase().SaveToFile(Settings.Mailer_DatabaseFile); } if (!File.Exists(Settings.Mailer_IgnoreListFile)) { LogToConsole("Creating new ignore list: " + Path.GetFullPath(Settings.Mailer_IgnoreListFile)); new IgnoreList().SaveToFile(Settings.Mailer_IgnoreListFile); } lock (readWriteLock) { LogDebugToConsole("Loading database file: " + Path.GetFullPath(Settings.Mailer_DatabaseFile)); mailDatabase = MailDatabase.FromFile(Settings.Mailer_DatabaseFile); LogDebugToConsole("Loading ignore list: " + Path.GetFullPath(Settings.Mailer_IgnoreListFile)); ignoreList = IgnoreList.FromFile(Settings.Mailer_IgnoreListFile); } //Initialize file monitors. In case the bot needs to unload for some reason in the future, do not forget to .Dispose() them mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_DatabaseFile), Path.GetFileName(Settings.Mailer_DatabaseFile), FileMonitorCallback); ignoreListFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_IgnoreListFile), Path.GetFileName(Settings.Mailer_IgnoreListFile), FileMonitorCallback); RegisterChatBotCommand("mailer", "Subcommands: getmails, addignored, getignored, removeignored", ProcessInternalCommand); }
/// <summary> /// Initialization of the Mailer bot /// </summary> public override void Initialize() { LogDebugToConsole("邮箱机器人设置:"); LogDebugToConsole(" - 数据库文件: " + Settings.Mailer_DatabaseFile); LogDebugToConsole(" - 忽略列表: " + Settings.Mailer_IgnoreListFile); LogDebugToConsole(" - 公开互动者: " + Settings.Mailer_PublicInteractions); LogDebugToConsole(" - 每个玩家最多发送的邮件: " + Settings.Mailer_MaxMailsPerPlayer); LogDebugToConsole(" - 最大数据库大小: " + Settings.Mailer_MaxDatabaseSize); LogDebugToConsole(" - 邮件保留时间: " + Settings.Mailer_MailRetentionDays + " 天"); if (Settings.Mailer_MaxDatabaseSize <= 0) { LogToConsole("无法启用邮件功能: 邮件数据库最大大小必须大于0!"); UnloadBot(); return; } if (Settings.Mailer_MaxMailsPerPlayer <= 0) { LogToConsole("无法启用邮件功能: 每个玩家最大发送的邮件数量必须大于0!"); UnloadBot(); return; } if (Settings.Mailer_MailRetentionDays <= 0) { LogToConsole("无法启用邮件功能: 邮件保存时间必须大于0."); UnloadBot(); return; } if (!File.Exists(Settings.Mailer_DatabaseFile)) { LogToConsole("创建新的数据库文件: " + Path.GetFullPath(Settings.Mailer_DatabaseFile)); new MailDatabase().SaveToFile(Settings.Mailer_DatabaseFile); } if (!File.Exists(Settings.Mailer_IgnoreListFile)) { LogToConsole("创建新的忽略列表文件: " + Path.GetFullPath(Settings.Mailer_IgnoreListFile)); new IgnoreList().SaveToFile(Settings.Mailer_IgnoreListFile); } lock (readWriteLock) { LogDebugToConsole("正在加载数据库文件: " + Path.GetFullPath(Settings.Mailer_DatabaseFile)); mailDatabase = MailDatabase.FromFile(Settings.Mailer_DatabaseFile); LogDebugToConsole("正在加载忽略列表文件: " + Path.GetFullPath(Settings.Mailer_IgnoreListFile)); ignoreList = IgnoreList.FromFile(Settings.Mailer_IgnoreListFile); } //Initialize file monitors. In case the bot needs to unload for some reason in the future, do not forget to .Dispose() them mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_DatabaseFile), Path.GetFileName(Settings.Mailer_DatabaseFile), FileMonitorCallback); ignoreListFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_IgnoreListFile), Path.GetFileName(Settings.Mailer_IgnoreListFile), FileMonitorCallback); RegisterChatBotCommand("mailer", "子命令: getmails, addignored, getignored, removeignored", ProcessInternalCommand); }
/// <summary> /// Initialization of the Mailer bot /// </summary> public override void Initialize() { LogDebugToConsoleTranslated("bot.mailer.init"); LogDebugToConsoleTranslated("bot.mailer.init.db" + Settings.Mailer_DatabaseFile); LogDebugToConsoleTranslated("bot.mailer.init.ignore" + Settings.Mailer_IgnoreListFile); LogDebugToConsoleTranslated("bot.mailer.init.public" + Settings.Mailer_PublicInteractions); LogDebugToConsoleTranslated("bot.mailer.init.max_mails" + Settings.Mailer_MaxMailsPerPlayer); LogDebugToConsoleTranslated("bot.mailer.init.db_size" + Settings.Mailer_MaxDatabaseSize); LogDebugToConsoleTranslated("bot.mailer.init.mail_retention" + Settings.Mailer_MailRetentionDays + " days"); if (Settings.Mailer_MaxDatabaseSize <= 0) { LogToConsoleTranslated("bot.mailer.init_fail.db_size"); UnloadBot(); return; } if (Settings.Mailer_MaxMailsPerPlayer <= 0) { LogToConsoleTranslated("bot.mailer.init_fail.max_mails"); UnloadBot(); return; } if (Settings.Mailer_MailRetentionDays <= 0) { LogToConsoleTranslated("bot.mailer.init_fail.mail_retention"); UnloadBot(); return; } if (!File.Exists(Settings.Mailer_DatabaseFile)) { LogToConsoleTranslated("bot.mailer.create.db", Path.GetFullPath(Settings.Mailer_DatabaseFile)); new MailDatabase().SaveToFile(Settings.Mailer_DatabaseFile); } if (!File.Exists(Settings.Mailer_IgnoreListFile)) { LogToConsoleTranslated("bot.mailer.create.ignore", Path.GetFullPath(Settings.Mailer_IgnoreListFile)); new IgnoreList().SaveToFile(Settings.Mailer_IgnoreListFile); } lock (readWriteLock) { LogDebugToConsoleTranslated("bot.mailer.load.db", Path.GetFullPath(Settings.Mailer_DatabaseFile)); mailDatabase = MailDatabase.FromFile(Settings.Mailer_DatabaseFile); LogDebugToConsoleTranslated("bot.mailer.load.ignore", Path.GetFullPath(Settings.Mailer_IgnoreListFile)); ignoreList = IgnoreList.FromFile(Settings.Mailer_IgnoreListFile); } //Initialize file monitors. In case the bot needs to unload for some reason in the future, do not forget to .Dispose() them mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_DatabaseFile), Path.GetFileName(Settings.Mailer_DatabaseFile), FileMonitorCallback); ignoreListFileMonitor = new FileMonitor(Path.GetDirectoryName(Settings.Mailer_IgnoreListFile), Path.GetFileName(Settings.Mailer_IgnoreListFile), FileMonitorCallback); RegisterChatBotCommand("mailer", Translations.Get("bot.mailer.cmd"), "mailer <getmails|addignored|getignored|removeignored>", ProcessInternalCommand); }
public FileEventListener Create(ISolutionProject project, ActionConfiguration actionConfiguration) { var fileChangeSubscriber = new FileChangeSubscriber(this.fileChangeService); var fileMonitor = new FileMonitor(this.solutionFilesService, this.globMatcher, fileChangeSubscriber, this.outputService); var eventListener = new FileEventListener(fileMonitor, this.onChangeTaskDispatcher, this.actionFactory, fileChangeSubscriber); eventListener.Initialize(project, actionConfiguration); return eventListener; }
void StopWatcher() { if (watcher != null) { watcher.Cancel(); watcher.Changed -= WatcherChanged; watcher.Dispose(); watcher = null; } }
void HandleCurrentItemChanged(object o, EventArgs args) { StopWatcher(); if (o is FileDockItem) { watcher = FileMonitor.File((o as FileDockItem).OwnedFile, FileMonitorFlags.None, null); watcher.Changed += WatcherChanged; } }
public void Setup() { subject = new Subject <FileSystemEventArgs>(); watcher = new Mock <IFileWatcher>(); preview = new Mock <IPreviewCreator>(); learnedClassifier = new Mock <ILearnedClassifier>(); watcher.Setup(item => item.FileChanged).Returns(subject.AsObservable()); watcher.Setup(item => item.Path).Returns(@"..\"); instance = new FileMonitor(watcher.Object, learnedClassifier.Object, preview.Object); }
private void SetupFileMonitor() { var mon = new FileMonitor(); //TODO Temporary solution to run on main thread. Refactor filemon to use TPL in order to achieve this mon.BattleLobbyCreated += (_, e) => RunOnMainThread(() => ProcessLobbyFile(e.Data)); mon.RejoinFileCreated += (_, e) => RunOnMainThread(() => ProcessRejoinFile(e.Data)); mon.ReplayFileCreated += (_, e) => RunOnMainThread(() => ProcessReplayFile(e.Data)); mon.StartMonitoring(); }
public void MonitorDetectsChange() { using (var fs = File.Create(this.file.FullName)) { } var monitor = new FileMonitor(this.file); var signal = new ManualResetEventSlim(); monitor.FileChanged += (o, s) => { signal.Set(); }; Assert.That(signal.IsSet, Is.False); ChangeFile(); signal.Wait(600); Assert.That(signal.IsSet, Is.True); }
/// <summary> /// Save ignore list to file /// </summary> /// <param name="filePath">Path to destination file</param> public void SaveToFile(string filePath) { List <string> lines = new List <string>(); lines.Add("#被忽略的玩家:"); foreach (string player in this) { lines.Add(player); } FileMonitor.WriteAllLinesWithRetries(filePath, lines); }
/// <summary> /// 文件监听 /// </summary> /// <param name="Module"></param> public static void FileMonitors(FileModule Module) { if (!Module.Module) { FileMonitor.MonitorInit(Module); } else { FileMonitor.MonitorRead(Module); } }
public void MonitorDoesNotDetectWhenPaused() { ResetFile(); var monitor = new FileMonitor(this.file); monitor.Pause(); var signal = new ManualResetEventSlim(); monitor.FileChanged += (o, s) => { signal.Set(); }; Assert.That(signal.IsSet, Is.False); ChangeFile(); signal.Wait(600); Assert.That(signal.IsSet, Is.False); }
public DisplayOutput() { InitializeComponent(); Dispatcher.Invoke(() => { _displayFiles = new ObservableCollection <MissingFile>(); }); _monitor = new FileMonitor(DisplayFile, RemoveFile, AddEvent); _view = CollectionViewSource.GetDefaultView(_displayFiles); _view.Filter = FilterOutput; Files.ItemsSource = _view; }
public void MonitorWorksAfterStopAndStart() { ResetFile(); var monitor = new FileMonitor(this.file); monitor.Pause(); monitor.Unpause(); var signal = new ManualResetEventSlim(); monitor.FileChanged += (o, s) => { signal.Set(); }; Assert.That(signal.IsSet, Is.False); ChangeFile(); signal.Wait(600); Assert.That(signal.IsSet, Is.True); }
public BookmarksItemProvider() { items = new List <AbstractDockItem> (); computer = new NonRemovableItem("computer://", Catalog.GetString("Computer"), "computer"); home = FileDockItem.NewFromUri(string.Format("file://{0}", Environment.GetFolderPath(Environment.SpecialFolder.Personal))); UpdateItems(); watcher = FileMonitor.File(BookmarksFile, FileMonitorFlags.None, null); watcher.Changed += WatcherChanged; }
/// <summary> /// Constructor. If the file is persistent then register a Watcher /// <para/>- Initialize file system watcher /// </summary> /// <param name="fullName"></param> /// <param name="isChanged">Default=true</param> /// <param name="sqlTabPagesCntrl"></param> public SqlFile(SqlTabPagesCntrl sqlTabPagesCntrl, string fullName, bool isChanged = true) { _sqlTabPagesCntrl = sqlTabPagesCntrl; InitTabPageCaption(fullName, isChanged); ReadTime = DateTime.Now; // create FileMonitor _fileMonitor = new FileMonitor(_fullName); _fileMonitor.Change += OnChanged; if (IsPersistant) { _fileMonitor.Start(); } }
private SystemManager() { try { SystemBus = Bus.System.GetObject <IBus> ("org.freedesktop.DBus", new ObjectPath("/org/freedesktop/DBus")); SystemBus.NameOwnerChanged += delegate(string name, string old_owner, string new_owner) { if (name != UPowerName && name != DeviceKitPowerName && name != SystemdName && name != ConsoleKitName) { return; } Log <SystemManager> .Debug("DBus services changed, reconnecting now"); if (upower != null) { upower = null; } if (devicekit != null) { devicekit = null; } if (systemd != null) { systemd = null; } if (consolekit != null) { consolekit = null; } Initialize(); HandlePowerBusChanged(); HandleCapabilitiesChanged(); }; Initialize(); // Set up file monitor to watch for reboot_required file GLib.File reboot_required_file = FileFactory.NewForPath("/var/run/reboot-required"); reboot_required_monitor = reboot_required_file.Monitor(FileMonitorFlags.None, null); reboot_required_monitor.RateLimit = 10000; reboot_required_monitor.Changed += HandleRebootRequired; } catch (Exception e) { Log <SessionManagerItem> .Error(e.Message); } }
protected override void OnStart(string[] args) { try { _eventLog1.WriteEntry("Startings service"); // Update the service state to Start Pending. var serviceStatus = new ServiceStatus { dwCurrentState = ServiceState.SERVICE_START_PENDING, dwWaitHint = 100000 }; SetServiceStatus(ServiceHandle, ref serviceStatus); _configMonitor = new FileMonitor(string.Concat(System.Reflection.Assembly.GetEntryAssembly()?.Location, ".config")) { FileChanged = ConfigChanged }; _timer.Elapsed += OnElapsedTime; _timer.Interval = 120000; //number in milisecinds _timer.Enabled = true; _timer.Start(); _teamSpeakClient = ConnectToTeamspeak().Result; if (_teamSpeakClient == null) { serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED; SetServiceStatus(ServiceHandle, ref serviceStatus); Stop(); return; } //Debugger.Launch(); _teamSpeakClient.Subscribe <ClientEnterView>(NewClientEntered); _channelList = GetChannelList().Result; // Update the service state to Running. _serverStatusMonitor = new FileMonitor(ConfigurationManager.AppSettings["ServerStatusPath"]) { FileChanged = ServerStatusChanged }; ServerStatusChanged(null, new FileSystemEventArgs(WatcherChangeTypes.Changed, Path.GetDirectoryName(ConfigurationManager.AppSettings["ServerStatusPath"]), Path.GetFileName(ConfigurationManager.AppSettings["ServerStatusPath"]))); serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING; SetServiceStatus(ServiceHandle, ref serviceStatus); _eventLog1.WriteEntry("Started service"); } catch (Exception e) { _eventLog1?.WriteEntry($"Failed to start: {e.Message}", EventLogEntryType.Error); } }
/// <summary> /// Read ignore list from file /// </summary> /// <param name="filePath">Path to the ignore list</param> /// <returns>Ignore list</returns> public static IgnoreList FromFile(string filePath) { IgnoreList ignoreList = new IgnoreList(); foreach (string line in FileMonitor.ReadAllLinesWithRetries(filePath)) { if (!line.StartsWith("#")) { string entry = line.ToLower(); if (!ignoreList.Contains(entry)) { ignoreList.Add(entry); } } } return(ignoreList); }
/// <summary> /// Save mail database to file /// </summary> /// <param name="filePath">Path to destination file</param> public void SaveToFile(string filePath) { Dictionary <string, Dictionary <string, string> > iniFileDict = new Dictionary <string, Dictionary <string, string> >(); int mailCount = 0; foreach (Mail mail in this) { mailCount++; Dictionary <string, string> iniSection = new Dictionary <string, string>(); iniSection["sender"] = mail.Sender; iniSection["recipient"] = mail.Recipient; iniSection["content"] = mail.Content; iniSection["timestamp"] = mail.DateSent.ToString(); iniSection["anonymous"] = mail.Anonymous.ToString(); iniFileDict["mail" + mailCount] = iniSection; } FileMonitor.WriteAllLinesWithRetries(filePath, INIFile.Generate(iniFileDict, "邮箱数据库")); }
public void Initialize() { helpers = new List <Helper> (); // set up the file monitors to watch our script directories foreach (File dir in HelperDirs) { FileMonitor mon = dir.Monitor(0, null); monitors.Add(mon); mon.RateLimit = 5000; mon.Changed += HandleMonitorChanged; } GLib.Timeout.Add(2000, delegate { UpdateHelpers(); return(false); }); }
public void Setup() { path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Input2"); if (Directory.Exists(path)) { Directory.Delete(path, true); } Directory.CreateDirectory(path); var watcher = new FileWatcher(path); learnedClassifier = new Mock <ILearnedClassifier>(); monitor = new FileMonitor(watcher, learnedClassifier.Object, new PdfPreviewCreator()); learnedClassifier.Setup(item => item.Classify(It.IsAny <FileInfo>())).Returns(Task.FromResult("Out")); var outputPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Out"); outputPath.EnsureDirectoryExistence(); }
internal void Initialize() { ValidateConfig(); _monitor = new FileMonitor(this.Settings.SourceFolder, filter: this.Settings.Filter, watchedChangeTypes: WatcherChangeTypes.Created | WatcherChangeTypes.Changed); _monitor.IncludeSubdirectories = true; _monitorObserver = _monitor.FileChangedDataSource .ObserveOn(TaskPoolScheduler.Default) .Subscribe( fileEvent => { if (fileEvent.ChangeType == WatcherChangeTypes.Created) { foreach (var folder in this.Settings.DestinationFolders) { var newFile = new FileTransferData { MachineName = Environment.MachineName, MonitoredFolderPath = _monitor.Path, DestinationFolderPath = folder, FileName = fileEvent.Name, TotalBytes = new FileInfo(fileEvent.FullPath).Length }; _fileTransferSubject.OnNext(newFile); } } _newFileEvent.Set(); }, exception => { Log.Warn().Exception(exception).Write(); var errorData = new FileTransferData { MachineName = Environment.MachineName, MonitoredFolderPath = _monitor.Path, Exception = exception }; _fileTransferSubject.OnNext(errorData); }); }
public void EventAboutNewFilesFired() { var fileMonitor = new FileMonitor(_tempDir, TimeSpan.FromMilliseconds(1), DateTime.MinValue); var eventReceived = new ManualResetEventSlim(false); NewFilesAppearedEventArgs eventArgs = null; fileMonitor.NewFilesAppeared += (sender, args) => { eventArgs = args; eventReceived.Set(); }; var fileName = Path.Combine(_tempDir, "Test.xml"); fileMonitor.Start(); using (File.Create(fileName)){} eventReceived.Wait(1000); CollectionAssert.AreEqual(new[]{fileName}, eventArgs.Files); }
public void Test1() { _contents = "Abc"; var p = "MonitoredFileTest"; File.WriteAllText(p, _contents); var fm = new FileMonitor(p, TimeSpan.FromMilliseconds(500), () => { _contents = File.ReadAllText(p); }); Thread.Sleep(1000); File.WriteAllText(p, "def"); Assert.Equal("Abc", _contents); Thread.Sleep(1000); Assert.Equal("def", _contents); }
public SettingsWindow() { if (Settings.UpgradeRequired) { Settings.Upgrade(); Settings.UpgradeRequired = false; Settings.Save(); } InitializeComponent(); var v = Assembly.GetExecutingAssembly().GetName().Version; Title = $"HotsStats v{v.Major}.{v.Minor}"; if (Settings.SettingsWindowTop <= 0) { WindowStartupLocation = WindowStartupLocation.CenterScreen; } var mon = new FileMonitor(); mon.BattleLobbyCreated += (o, e) => Dispatcher.BeginInvoke(new Action(() => { ProcessLobbyFile(e.Data); })); mon.RejoinFileCreated += (o, e) => Dispatcher.BeginInvoke(new Action(() => { ProcessRejoinFile(e.Data); })); mon.ReplayFileCreated += (o, e) => Dispatcher.BeginInvoke(new Action(() => { ProcessReplayFile(e.Data); })); mon.StartMonitoring(); hotKey = new HotKey(Key.Tab, KeyModifier.Shift | KeyModifier.NoRepeat); hotKey.Pressed += (o, e) => { if (currentWindow != null) { currentWindow.Visibility = currentWindow.IsVisible ? Visibility.Collapsed : Visibility.Visible; } }; Closing += (o, e) => { Settings.Save(); Application.Current.Shutdown(); }; }
static void Main(string[] args) { try { Console.WriteLine("MakeLove Automatic LOVE Build System"); Console.WriteLine("App Version {0}", typeof(Program).Assembly.GetName().Version.ToString()); Console.WriteLine("Core Version {0}", typeof(FileMonitor).Assembly.GetName().Version.ToString()); Console.WriteLine("Written by InstilledBee"); var monitor = new FileMonitor(ConfigHelper.SourcePath); monitor.OnFileChange += Monitor_OnFileChange; monitor.Start(); } catch (Exception ex) { Console.WriteLine("Unable to start application: {0}", ex.Message); } finally { Console.WriteLine("Press any key to quit."); Console.ReadKey(); } }
public void FileMonitorConstructorTest() { bool changed = false, renamed = false; string fn = @"c:\file.txt"; string nfn = @"c:\newfile.txt"; File.Create(fn).Close(); FileMonitor target = new FileMonitor(fn); target.Changed += delegate(string path, FileSystemEventArgs a) { changed = true; }; target.Renamed += delegate(string path, RenamedEventArgs a) { renamed = true; }; File.WriteAllText(fn, "test"); Thread.Sleep(300); Assert.IsTrue(changed); File.Move(fn, nfn); Thread.Sleep(300); Assert.IsTrue(renamed); File.Delete(nfn); }
// When the file at the given path changes, // we'll call the supplied action. public static void Listen(string virtualPath, Action<string> action) { var notifier = new FileMonitor(action); notifier.ListenForChanges(virtualPath); }
public void Setup() { _fakeTimer = Substitute.For <ITimerWrapper>(); _fakeWatcher = Substitute.For <IFileSystemWatcherWrapper>(); _uut = new FileMonitor(_fakeWatcher, _fakeTimer); }
public MainWindow( ConfigModel configApp, ICollection <Card> allCards, MainWindowVM viewModel, ProcessMonitor processMonitor, LogFileZipper zipper, ServerApiCaller api, StartupShortcutManager startupManager, LogSplitter logSplitter, MtgaResourcesLocator resourcesLocator, FileMonitor fileMonitor, DraftCardsPicker draftHelper, ReaderMtgaOutputLog readerMtgaOutputLog, InGameTracker2 inMatchTracker, ExternalProviderTokenManager tokenManager, PasswordHasher passwordHasher, CacheSingleton <Dictionary <string, DraftRatings> > draftRatings, DraftHelperRunner draftHelperRunner) { // Set the config model reference ConfigModel = configApp; Reader = readerMtgaOutputLog; processMonitor.OnProcessMonitorStatusChanged += OnProcessMonitorStatusChanged; Zipper = zipper; Api = api; StartupManager = startupManager; LogSplitter = logSplitter; ResourcesLocator = resourcesLocator; FileMonitor = fileMonitor; fileMonitor.OnFileSizeChangedNewText += OnFileSizeChangedNewText; DraftHelper = draftHelper; //this.logProcessor = logProcessor; InGameTracker = inMatchTracker; TokenManager = tokenManager; PasswordHasher = passwordHasher; DraftRatings = draftRatings; DraftHelperRunner = draftHelperRunner; ResourcesLocator.LocateLogFilePath(ConfigModel); ResourcesLocator.LocateGameClientFilePath(ConfigModel); fileMonitor.SetFilePath(ConfigModel.LogFilePath); // Set the view model MainWindowVM = viewModel; // Set the data context to the view model DataContext = MainWindowVM; InitializeComponent(); WelcomeControl.Init(tokenManager); PlayingControl.Init(MainWindowVM); StatusBarTop.Init(this, MainWindowVM); ReadyControl.Init(ConfigModel.GameFilePath); DraftingControl.Init(allCards, MainWindowVM.DraftingVM); DraftingControl.SetPopupRatingsSource(ConfigModel.ShowLimitedRatings, ConfigModel.ShowLimitedRatingsSource); processMonitor.Start(new System.Threading.CancellationToken()); FileMonitor.Start(new System.Threading.CancellationToken()); var timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(200) }; timer.Tick += (sender, e) => { MainWindowVM.SetCardsDraftFromBuffered(); MainWindowVM.SetCardsInMatchTrackingFromBuffered(); }; timer.Start(); var timerTokenRefresh = new DispatcherTimer { Interval = TimeSpan.FromMinutes(9) }; timerTokenRefresh.Tick += (sender, e) => { RefreshAccessToken(); }; timerTokenRefresh.Start(); }
public void DisposeDoesNotThrow() { var monitor = new FileMonitor(this.file.FullName); monitor.Dispose(); }
public void CanConstructMonitor() { var monitor = new FileMonitor(this.file, false); Assert.IsNotNull(monitor); }
/// <summary> /// Called when one for the file monitors detects a change. /// </summary> /// <param name="sender"></param> void monitor_FileChanged(FileMonitor sender) { lock(_sync) { _hasChanged = true; _lastChange = DateTime.Now.Ticks; } }
/// <summary> /// Read mail database from file /// </summary> /// <param name="filePath">Path to the database</param> /// <returns>Mail database</returns> public static MailDatabase FromFile(string filePath) { MailDatabase database = new MailDatabase(); Dictionary <string, Dictionary <string, string> > iniFileDict = INIFile.ParseFile(FileMonitor.ReadAllLinesWithRetries(filePath)); foreach (KeyValuePair <string, Dictionary <string, string> > iniSection in iniFileDict) { //iniSection.Key is "mailXX" but we don't need it here string sender = iniSection.Value["sender"]; string recipient = iniSection.Value["recipient"]; string content = iniSection.Value["content"]; DateTime timestamp = DateTime.Parse(iniSection.Value["timestamp"]); bool anonymous = INIFile.Str2Bool(iniSection.Value["anonymous"]); database.Add(new Mail(sender, recipient, content, anonymous, timestamp)); } return(database); }
private static void CreateFiles(FileMonitor monitor) { if (FileMonitor.filesNeedCreation) { lock (FileMonitor.FilesNeedCreationLockObj) { if (FileMonitor.filesNeedCreation) { FileMonitor.filesNeedCreation = false; SystemManager.BackgroundTasksService.EnqueueTask(() => { Thread.Sleep(1000); string file; lock (FileMonitor.FileMonitorStartLockObj) { while (FileMonitor.FilesToCreate.TryDequeue(out file)) { monitor.FileChanged(file, FileChangeType.Created); } } Thread.Sleep(1000); FileMonitor.filesNeedCreation = true; if (!FileMonitor.FilesToCreate.IsEmpty) { CreateFiles(monitor); } }); } } } }