Exemplo n.º 1
0
        public void Process()
        {
            AnyFailrue = false;
            AnySuccess = false;

            if (_processor == null)
            {
                return;
            }

            foreach (TEvent @event in _queue)
            {
                var result = _processor(@event);
                AnyFailrue |= !result;
                AnySuccess |= result;

                if (_maxPoolSize == UnlimitedPool || _pool.Count < _maxPoolSize)
                {
                    _pool.Enqueue(@event);
                }
            }

            foreach (TEvent @event in _queue)
            {
                foreach (PostEvent signal in _postEvents)
                {
                    signal(@event);
                }
            }

            _queue.Clear();

            ResetObjects();
        }
Exemplo n.º 2
0
        public TEvent Post()
        {
            TEvent @event = _pool.Any() ? _pool.Dequeue() : new TEvent();

            _queue.Enqueue(@event);

            return(@event);
        }
Exemplo n.º 3
0
    public static Framework.UniqueQueue <T> EnqueueRange <T>(this Framework.UniqueQueue <T> queue, IEnumerable <T> range)
    {
        foreach (T @object in range)
        {
            queue.Enqueue(@object);
        }

        return(queue);
    }