Microsoft.Ccr.Core.MultipleItemGather.Process C# (CSharp) Method

Process() private method

private Process ( IPortElement messageNode, int number, ITask &deferredTask ) : bool
messageNode IPortElement
number int
deferredTask ITask
return bool
        internal bool Process(IPortElement messageNode, int number, ref ITask deferredTask)
        {
            int rem = Interlocked.Decrement (ref remaining);
            if (rem < 0)
                return false;
            lock (_lock) {
                results [number].Add (messageNode.Item);
            }
            if (rem == 0) {
                ITask task = new Task<ICollection[]> (results, handler);
                task.LinkedIterator = LinkedIterator;
                deferredTask = task;
                var arb = Arbiter;
                if (arb != null)
                    return arb.Evaluate (this, ref deferredTask);
                Cleanup ();
            }
            return true;
        }