Exemplo n.º 1
0
        private OutgoingMessage Subscribe(IncomingMessage requestMessage)
        {
            var toHeader = requestMessage.GetHeader<ToHeader>();
            var subscriptionManagerReference = new EndpointReference(toHeader.Uri);
            var request = requestMessage.GetPayload<SubscribeRequest>();            
            var responseMessage = new OutgoingMessage()
                .AddHeader(new ActionHeader(Constants.SubscribeResponseAction), false);

            var expiration = CalculateExpiration(request.Expires);
            var filterInstance = GetFilterInstance(request);
            var identifier = GenerateUniqueSubscriptionIdentifier();
            var subscription = new Subscription(expiration, _requestHandler, filterInstance, subscriptionManagerReference, requestMessage);
            _activeSubscriptions.Add(identifier, subscription);
            OnSubscribed(identifier, subscription);

            //R7.2.4-1
            var body = new SubscribeResponse
                           {
                               SubscriptionManager = subscriptionManagerReference,
                               EnumerationContext = request.Delivery.Mode == Delivery.DeliveryModePull
                                                        ? new EnumerationContextKey(
                                                              identifier)
                                                        : null,
                               Expires = expiration
                           };
            responseMessage.SetBody(new SerializerBodyWriter(body));
            return responseMessage;
        }
Exemplo n.º 2
0
        private OutgoingMessage Subscribe(IncomingMessage requestMessage)
        {
            var toHeader = requestMessage.GetHeader <ToHeader>();
            var subscriptionManagerReference = new EndpointReference(toHeader.Uri);
            var request         = requestMessage.GetPayload <SubscribeRequest>();
            var responseMessage = new OutgoingMessage()
                                  .AddHeader(new ActionHeader(Constants.SubscribeResponseAction), false);

            var expiration     = CalculateExpiration(request.Expires);
            var filterInstance = GetFilterInstance(request);
            var identifier     = GenerateUniqueSubscriptionIdentifier();
            var subscription   = new Subscription(expiration, _requestHandler, filterInstance, subscriptionManagerReference, requestMessage);

            _activeSubscriptions.Add(identifier, subscription);
            OnSubscribed(identifier, subscription);

            //R7.2.4-1
            var body = new SubscribeResponse
            {
                SubscriptionManager = subscriptionManagerReference,
                EnumerationContext  = request.Delivery.Mode == Delivery.DeliveryModePull
                                                        ? new EnumerationContextKey(
                    identifier)
                                                        : null,
                Expires = expiration
            };

            responseMessage.SetBody(new SerializerBodyWriter(body));
            return(responseMessage);
        }
        public void It_writes_body()
        {
            var bodyWriter = new XElementWriter(new XElement("Body"));
            var message = new OutgoingMessage();
            message.SetBody(bodyWriter);

            var envelope = XElementExtensions.ParseGeneratedXml(message.Write);

            Assert.AreEqual(SOAP.Constants.Envelope, envelope.Name);
            var bodySectionElement = envelope.Element(SOAP.Constants.Body);
            var bodyElement = (XElement) bodySectionElement.FirstNode;
            Assert.AreEqual("Body", bodyElement.Name.LocalName);
        }
Exemplo n.º 4
0
 public static OutgoingMessage Create(string action, string reason, XmlQualifiedName code, IEnumerable<XmlQualifiedName> subcodes)
 {
     var message = new OutgoingMessage();
     message.AddHeader(new ActionHeader(action), false);
     var fault = new Fault
                     {
                         Code = CreateCode(code, subcodes),
                         Detail = new FaultDetail(),
                         Reason = CreateReason(reason)
                     };
     message.SetBody(new SerializerBodyWriter(fault));
     return message;
 }
Exemplo n.º 5
0
        public void It_writes_body()
        {
            var bodyWriter = new XElementWriter(new XElement("Body"));
            var message    = new OutgoingMessage();

            message.SetBody(bodyWriter);

            var envelope = XElementExtensions.ParseGeneratedXml(message.Write);

            Assert.AreEqual(SOAP.Constants.Envelope, envelope.Name);
            var bodySectionElement = envelope.Element(SOAP.Constants.Body);
            var bodyElement        = (XElement)bodySectionElement.FirstNode;

            Assert.AreEqual("Body", bodyElement.Name.LocalName);
        }
Exemplo n.º 6
0
        public OutgoingMessage Renew(IncomingMessage requestMessage)
        {
            var request          = requestMessage.GetPayload <RenewRequest>();
            var identifierHeader = requestMessage.GetHeader <IdentifierHeader>();


            var existing = _activeSubscriptions.Get(identifierHeader.Identifier);

            existing.Renew(CalculateExpiration(request.Expires));

            var responseMessage = new OutgoingMessage()
                                  .AddHeader(new ActionHeader(Constants.RenewResponseAction), false);

            responseMessage.SetBody(new SerializerBodyWriter(
                                        new RenewResponse
            {
                Expires = request.Expires
            }));
            return(responseMessage);
        }
Exemplo n.º 7
0
 public IMessageSender AddBody(IBodyWriter bodyWriter)
 {
     _outgoingMessage.SetBody(bodyWriter);
     return(this);
 }
Exemplo n.º 8
0
        public OutgoingMessage Renew(IncomingMessage requestMessage)
        {            
            var request = requestMessage.GetPayload<RenewRequest>();
            var identifierHeader = requestMessage.GetHeader<IdentifierHeader>();
            

            var existing = _activeSubscriptions.Get(identifierHeader.Identifier);
            existing.Renew(CalculateExpiration(request.Expires));

            var responseMessage = new OutgoingMessage()
                .AddHeader(new ActionHeader(Constants.RenewResponseAction), false);
            responseMessage.SetBody(new SerializerBodyWriter(
                                        new RenewResponse
                                            {
                                                Expires = request.Expires
                                            }));
            return responseMessage;
        }