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; }); }
protected override Func <TTargetMessage> FindSender(IOutlet <TTargetMessage> outletReceivingMessage) { var sender = Inlet.FindSender(); if (sender == null) { return(null); } return(() => Map(sender())); }
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()); }