Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }