示例#1
0
        protected override Func <TMessage> FindSender(IOutlet <TMessage> outletReceivingMessage)
        {
            var sender = Inlet.FindSender();

            if (sender == null)
            {
                return(null);
            }

            var otherReceivers = Outlets.Where(o => o != outletReceivingMessage).Select(o => o.FindReceiver()).Where(r => r != null).ToList();

            if (otherReceivers.Count != Outlets.Count - 1)
            {
                return(null);
            }

            return(() =>
            {
                var message = sender();

                foreach (var otherReceiver in otherReceivers)
                {
                    otherReceiver(message);
                }

                return message;
            });
        }
示例#2
0
        protected override Func <TTargetMessage> FindSender(IOutlet <TTargetMessage> outletReceivingMessage)
        {
            var sender = Inlet.FindSender();

            if (sender == null)
            {
                return(null);
            }
            return(() => Map(sender()));
        }
示例#3
0
        protected override Func <TMessage> FindSender(IOutlet <TMessage> outletReceivingMessage)
        {
            if (storedMessages.Any())
            {
                return(() =>
                {
                    var message = storedMessages.Dequeue();

                    if (storedMessages.Count == Capacity - 1)
                    {
                        var sender = Inlet.FindSender();
                        if (sender != null)
                        {
                            storedMessages.Enqueue(sender());
                        }
                    }

                    return message;
                });
            }

            return(Capacity > 0 ? null : Inlet.FindSender());
        }
 protected override Func <TMessage> FindSender(IOutlet <TMessage> outletReceivingMessage)
 {
     return(Inlet.FindSender());
 }