Esempio n. 1
0
        private List <Action <object[]> > PruneAndReturnStrategies()
        {
            lock (_subscriptions)
            {
                return(strategies().ToList());
            }

            IEnumerable <Action <object[]> > strategies()
            {
                LinkedListNode <IEventSubscription> node = _subscriptions.Last;

                while (node != null)
                {
                    var previous                = node.Previous;
                    IEventSubscription sub      = node.Value;
                    Action <object[]>  listItem = sub?.GetExecutionStrategy();

                    if (listItem != null)
                    {
                        yield return(listItem);
                    }
                    else
                    {
                        _subscriptions.Remove(node);
                    }

                    node = previous;
                }
            }
        }