Beispiel #1
0
        private void Write(string pathFile, IReadQueue <ByteBlock> queue, Action <BinaryWriter, ByteBlock> writing)
        {
            try
            {
                using (BinaryWriter binaryWriter = new BinaryWriter(File.Create(pathFile)))
                {
                    while (queue.Count > 0 || !queue.IsEnqueueStoped)
                    {
                        if (_zipController.IsCancelled)
                        {
                            throw new AbortedOperationException($"Write file {pathFile}");
                        }

                        var block = queue.Dequeue();
                        if (block == null)
                        {
                            continue;
                        }

                        writing(binaryWriter, block);
                    }
                }
            }
            catch (Exception ex)
            {
                LoggerProvider.Logger().Error($"Error. Writing the file: {ex.Message}");
            }
        }
 public QueueProcessorNode(
     IReadQueue <TRequestType> requestQueue,
     IGenericFactory <IMessageProcessingLogic <TRequestType> > logicFactory)
 {
     this.requestQueue = requestQueue;
     this.logicFactory = logicFactory;
     this.requestQueue.QueueMessageHandlerEvent += this.HandleMessageEvent;
 }
Beispiel #3
0
        public void WriteDecompressedFile(string destinationFile, IReadQueue <ByteBlock> queue)
        {
            void writing(BinaryWriter binaryWriter, ByteBlock block)
            {
                binaryWriter.Write(block.Bytes, 0, block.Bytes.Length);
            }

            Write(destinationFile, queue, writing);
        }
Beispiel #4
0
        public void WriteCompressedFile(string destinationFile, IReadQueue <ByteBlock> queue)
        {
            void writing(BinaryWriter binaryWriter, ByteBlock block)
            {
                BitConverter.GetBytes(block.Bytes.Length).CopyTo(block.Bytes, 4);
                binaryWriter.Write(block.Bytes, 0, block.Bytes.Length);
            }

            Write(destinationFile, queue, writing);
        }
Beispiel #5
0
 public WritableQueueProcessorNode(
     ILogger logger,
     IReadQueue <TRequestType> requestQueue,
     IGenericFactory <IMessageProcessingLogic <TRequestType> > logicFactory,
     IWriteQueueFactory <TRequestType> writeQueueFactory)
     : base(requestQueue, logicFactory)
 {
     this.writeQueueFactory = writeQueueFactory;
     this.WriteQueue        = this.writeQueueFactory.Create();
 }
        public NamedPipesWriteQueue()
        {
            _clientStream = new NamedPipeClientStream(Constants.ThisMachineServerName, Constants.PipeName, PipeDirection.Out);
            _timer = new Timer(WriteToQueue);
            _initTime = DateTime.Now;

            var inProcQueue = new InProcQueue();
            _readQueue = inProcQueue;
            _writeQueue = inProcQueue;

            Trace("Starting up.");

            ResetTimer();
        }
        public NamedPipesWriteQueue()
        {
            _clientStream = new NamedPipeClientStream(Constants.ThisMachineServerName, Constants.PipeName, PipeDirection.Out);
            _timer        = new Timer(WriteToQueue);
            _initTime     = DateTime.Now;

            var inProcQueue = new InProcQueue();

            _readQueue  = inProcQueue;
            _writeQueue = inProcQueue;

            Trace("Starting up.");

            ResetTimer();
        }
Beispiel #8
0
        public void DispatchMessages(IReadQueue readQueue)
        {
            if (readQueue == null)
            {
                throw new ArgumentNullException("readQueue");
            }

            object message;

            while (readQueue.TryDequeue(out message))
            {
                var messageType    = message.GetType();
                var dispatchMethod = DispatchMessageOfTypeMethod.MakeGenericMethod(messageType);
                dispatchMethod.Invoke(this, new[] { message });
                _applicationEventDispatcher.DispatchApplicationEvents();
            }

            _applicationEventDispatcher.DispatchApplicationEvents();
        }
        void WriteToQueue(object state)
        {
            try
            {
                if (!_clientStream.IsConnected)
                {
                    _clientStream.Connect((int)_connectionRetryInterval.TotalMilliseconds);
                }

                object message;
                while (_readQueue.TryDequeue(out message))
                {
                    var ms = new MemoryStream();
                    _formatter.Serialize(ms, message);
                    var bytes = ms.ToArray();
                    _clientStream.Write(bytes, 0, bytes.Length);
                    _clientStream.Flush();
                }

                ResetTimer();
            }
            catch (TimeoutException timeoutException)
            {
                Trace("Could not connect to profiler: {0}", timeoutException.Message);
                if (DateTime.Now - _initTime < _giveUpInterval)
                {
                    ResetTimer();
                }
                else
                {
                    Trace("Connection attempt threshold exceeded; detaching event queue and giving up.");
                    var nullQueue = new NullQueue();
                    _readQueue  = nullQueue;
                    _writeQueue = nullQueue;
                    Dispose();
                }
            }
            catch (Exception exception)
            {
                Trace("Error communicating with profiler, giving up: {0}", exception.Message);
            }
        }
        void WriteToQueue(object state)
        {
            try
            {
                if (!_clientStream.IsConnected)
                    _clientStream.Connect((int)_connectionRetryInterval.TotalMilliseconds);

                object message;
                while (_readQueue.TryDequeue(out message))
                {
                    var ms = new MemoryStream();
                    _formatter.Serialize(ms, message);
                    var bytes = ms.ToArray();
                    _clientStream.Write(bytes, 0, bytes.Length);
                    _clientStream.Flush();
                }

                ResetTimer();
            }
            catch (TimeoutException timeoutException)
            {
                Trace("Could not connect to profiler: {0}", timeoutException.Message);
                if (DateTime.Now - _initTime < _giveUpInterval)
                {
                    ResetTimer();
                }
                else
                {
                    Trace("Connection attempt threshold exceeded; detaching event queue and giving up.");
                    var nullQueue = new NullQueue();
                    _readQueue = nullQueue;
                    _writeQueue = nullQueue;
                    Dispose();
                }
            }
            catch (Exception exception)
            {
                Trace("Error communicating with profiler, giving up: {0}", exception.Message);
            }
        }