public MergePagesService(string inputFolderPath, IDocumentFactory documentFactory)
        {
            MergePagesQueueManager.PrepareQueues();

            logger = HostLogger.Get <MergePagesService>();

            this.documentFactory = documentFactory;
            directoryService     = new DirectoryService();
            directoryService.SetInputDirectory(inputFolderPath);

            newFileEvent  = new AutoResetEvent(false);
            stopWorkEvent = new ManualResetEvent(false);

            directoryWatcher = new FileSystemWatcher {
                Path = inputFolderPath, NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite
            };
            directoryWatcher.Created += (sender, fileSystemEventArgs) => newFileEvent.Set();

            tokenSource           = new CancellationTokenSource();
            mergeTask             = new Task(() => WorkProcedure(tokenSource.Token));
            monitoreTask          = new Task(() => messageService.MonitoreClient(tokenSource.Token, stopWorkEvent));
            sendQueueSettingsTask = new Task(() => messageService.SendSettings(tokenSource.Token));

            messageService = new MessageService();
        }
        public MergePagesClient(string outputPath)
        {
            MergePagesQueueManager.PrepareQueues();
            logger = HostLogger.Get <MergePagesClient>();

            directoryService = new DirectoryService();
            directoryService.SetOutputDirectory(outputPath);

            watcher = new FileSystemWatcher(outputPath)
            {
                Filter = "*.xml"
            };
            watcher.Changed += QueueSettingsChanged;

            stopWaitEvent = new ManualResetEvent(false);
            tokenSource   = new CancellationTokenSource();

            processFilesTask = new Task(() => WorkProcedure(tokenSource.Token));
            monitoringTask   = new Task(() => MonitorServer(tokenSource.Token));
        }