public Error Receive() { var listener = new MultiChannelReceiveListener(); HookupListenerToChannels(listener); return(listener.Success()); }
public Error Otherwise(Action defaultAction) { var defaultChannel = new DefaultChannel(); messageHandlersByChannelId.Add(defaultChannel.Id, _ => defaultAction()); var listener = new MultiChannelReceiveListener(); HookupListenerToChannels(listener); defaultChannel.AddListener(listener); return(listener.Success()); }
void HookupListenerToChannels(MultiChannelReceiveListener listener) { foreach (var kvp in messageHandlersByChannelId) { listener.AddMessageHandler(kvp.Key, kvp.Value); } foreach (var chan in channels) { (chan as IChannelSelectCapabilities).AddListener(listener); } }