async Task IPipe <PublishContext <TMessage> > .Send(PublishContext <TMessage> context) { { if (_observers.Count > 0) { await _observers.PrePublish(context).ConfigureAwait(false); } try { await _outputPipe.Send(context).ConfigureAwait(false); if (_observers.Count > 0) { await _observers.PostPublish(context).ConfigureAwait(false); } } catch (Exception ex) { if (_observers.Count > 0) { await _observers.PublishFault(context, ex).ConfigureAwait(false); } throw; } } }
async Task IFilter <PublishContext> .Send(PublishContext context, IPipe <PublishContext> next) { var publishContext = context as PublishContext <TMessage>; if (publishContext != null) { if (_messageObservers.Count > 0) { await _messageObservers.PrePublish(publishContext).ConfigureAwait(false); } try { await _outputPipe.Send(publishContext).ConfigureAwait(false); if (_messageObservers.Count > 0) { await _messageObservers.PostPublish(publishContext).ConfigureAwait(false); } await next.Send(context).ConfigureAwait(false); } catch (Exception ex) { if (_messageObservers.Count > 0) { await _messageObservers.PublishFault(publishContext, ex).ConfigureAwait(false); } throw; } } }