Пример #1
0
        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());
        }
Пример #2
0
        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);
            }
        }
Пример #4
0
        // 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);
        }
Пример #5
0
        /// <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);
        }
Пример #7
0
        /// <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;
        }
Пример #9
0
 void StopWatcher()
 {
     if (watcher != null)
     {
         watcher.Cancel();
         watcher.Changed -= WatcherChanged;
         watcher.Dispose();
         watcher = null;
     }
 }
Пример #10
0
        void HandleCurrentItemChanged(object o, EventArgs args)
        {
            StopWatcher();

            if (o is FileDockItem)
            {
                watcher          = FileMonitor.File((o as FileDockItem).OwnedFile, FileMonitorFlags.None, null);
                watcher.Changed += WatcherChanged;
            }
        }
Пример #11
0
 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);
 }
Пример #12
0
        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();
        }
Пример #13
0
 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);
            }
Пример #15
0
 /// <summary>
 /// 文件监听
 /// </summary>
 /// <param name="Module"></param>
 public static void FileMonitors(FileModule Module)
 {
     if (!Module.Module)
     {
         FileMonitor.MonitorInit(Module);
     }
     else
     {
         FileMonitor.MonitorRead(Module);
     }
 }
Пример #16
0
 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;
        }
Пример #18
0
 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);
 }
Пример #19
0
        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;
        }
Пример #20
0
        /// <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();
            }
        }
Пример #21
0
        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);
            }
        }
Пример #22
0
        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, "邮箱数据库"));
            }
Пример #25
0
        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);
            });
        }
Пример #26
0
        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();
        }
Пример #27
0
        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);
            });
        }
Пример #28
0
        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);
        }
Пример #29
0
        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);
        }
Пример #30
0
        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();
            };
        }
Пример #31
0
        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();
            }
        }
Пример #32
0
        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);
        }
Пример #33
0
 // 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);
 }
Пример #34
0
 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();
        }
Пример #36
0
 public void DisposeDoesNotThrow()
 {
     var monitor = new FileMonitor(this.file.FullName);
     monitor.Dispose();
 }
Пример #37
0
 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);
            }
Пример #40
0
        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);
                            }
                        });
                    }
                }
            }
        }