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; }
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); }
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; }
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); }
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); }
public IMessageSender AddBody(IBodyWriter bodyWriter) { _outgoingMessage.SetBody(bodyWriter); return(this); }
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; }