Ejemplo n.º 1
0
        public override void Send(SendOrPostCallback d, object state)
        {
            var task = state as ResultExecutionTask;

            _queue.Enqueue(task);

            task.ExecutionCompleteWaitHandle.WaitOne();

            d(state);
        }
Ejemplo n.º 2
0
 public void Execute(IRunnable task)
 {
     if (this._taskQueue.Count > MaxTaskCount)
     {
         throw new Exception($"即时任务队列超过{MaxTaskCount}条");
     }
     _taskQueue.Enqueue(task);
 }
Ejemplo n.º 3
0
        public Task PostAsync(IEnumerable <Span> spans, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (_blockingQueue.IsActived && !cancellationToken.IsCancellationRequested)
            {
                _blockingQueue.Enqueue(spans);
            }

            return(TaskUtils.FailCompletedTask);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Store event in file for transmission
 /// </summary>
 /// <param name="data"></param>
 private void Store(IInsightData data)
 {
     try
     {
         queue.Enqueue(data);
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message);
     }
 }
Ejemplo n.º 5
0
        public IronConsoleResult Execute(string expression, string extension, bool wait)
        {
            var task = new IronConsoleTask(Runtime, expression, extension);

            _queue.Enqueue(task);
            if (wait)
            {
                task.WaitFor(5000);
            }

            return(task.IronConsoleResult);
        }
Ejemplo n.º 6
0
        public Task PostAsync(IEnumerable <Span> spans, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (spans == null)
            {
                throw new ArgumentNullException(nameof(spans));
            }
            if (_blockingQueue.IsActived && !cancellationToken.IsCancellationRequested)
            {
                _blockingQueue.Enqueue(spans);
                return(TaskUtils.CompletedTask);
            }

            return(TaskUtils.FailCompletedTask);
        }
 public static void PublishToQueue(IBlockingQueue<object> queue, int volume, int[] produced)
 {
     while (produced[0] < volume)
     {
         try
         {
             queue.Enqueue(new object());
             Interlocked.Increment(ref produced[0]);
         }
         catch (Exception ex)
         {
             Assert.Fail(ex.Message);
         }
     }
 }
Ejemplo n.º 8
0
        private void ReadWorker(object state)
        {
            try
            {
                var pipelineInfo = (PipelineInfo)state;

                for (var index = 0; index < pipelineInfo.BlockCount; index++)
                {
                    _transformQueue.Enqueue(ReadBlock(index, pipelineInfo));
                }

                _transformQueue.CompleteAdding();
            }
            catch (Exception ex)
            {
                ProcessError(ex);
            }
        }
Ejemplo n.º 9
0
        protected override async Task ExecuteCoreAsync(CancellationToken stoppingToken)
        {
            var random = new Random();

            while (!stoppingToken.IsCancellationRequested)
            {
                // ランダムな時間待機する(ランダムに要求が発生する想定)
                var sec = random.Next(1, 5);
                WriteLine($"{nameof(ProducerService)}: Wait {sec}s");
                await Task.Delay(TimeSpan.FromSeconds(sec), stoppingToken);

                // ランダムな値をキューに追加する
                var bytes = new byte[5];
                random.NextBytes(bytes);

                WriteLine($"{nameof(ProducerService)}: Enqueue(before) {HexHelper.ToString(bytes)}");
                _queue.Enqueue(bytes);
                WriteLine($"{nameof(ProducerService)}: Enqueue(after) {HexHelper.ToString(bytes)}");
            }
        }
Ejemplo n.º 10
0
        private void TransformWorker()
        {
            try
            {
                foreach (var sourceBlock in _transformQueue.GetConsumingEnumerable())
                {
                    var transformedData = MemoryStreamManager.GetStream("Transformed");

                    TransformStream(sourceBlock.Data, transformedData);

                    transformedData.Position = 0;

                    sourceBlock.Data.Dispose();

                    _writeQueue.Enqueue(new Block(sourceBlock.Position, transformedData));
                }
            }
            catch (Exception ex)
            {
                ProcessError(ex);
            }
        }