void IMessageSink.Invoke(RequestMessage request) { if (request == null) throw new ArgumentNullException("request"); MessageEvent incomingRequest = DAO.For<MessageEvent>().Single(match => match.CorrelationId == request.CorrelationId && match.Kind == MessageEventKind.Request && match.Direction == MessageEventDirection.Incoming && match.Thumbprint == request.Thumbprint()); if (incomingRequest != null) { throw new DuplicateRequestException(String.Format("Incoming Request '{0}' for Event '{1}' was already processed. Request will be Ignored!" , request.CorrelationId , request.Event) , request); } DAO.For<MessageEvent>().Upsert(request); }
void IMessageSink.Invoke(RequestMessage request) { if (request == null) throw new ArgumentNullException("request"); MessageEvent outgoingRequest = DAO.For<MessageEvent>().Single(match => match.CorrelationId == request.CorrelationId && match.Kind == MessageEventKind.Request && match.Direction == MessageEventDirection.Outgoing && match.Thumbprint == request.Thumbprint()); if (outgoingRequest != null) { throw new DuplicateRequestException(String.Format("Outgoing Request '{0}' for Event '{1}' was already processed. Request will be Ignored!" , request.CorrelationId , request.Event) , request); } MessageEvent messageEvent = request; messageEvent.Original = DynamicContent.From(request); DAO.For<MessageEvent>().Upsert(messageEvent); }