MakeConnectionMessageFault VerifyProtocolElements(MakeConnectionMessageInfo info) { if (!string.IsNullOrEmpty(info.UnknownSelection) || info.Identifier != null) { return(MakeConnectionMessageFault.CreateUnsupportedSelectionFault(this.RequestMessage, info.UnknownSelection)); } else if (info.Address == null) { return(MakeConnectionMessageFault.CreateMissingSelectionFault(this.RequestMessage)); } return(null); }
public static MakeConnectionMessageInfo Create(XmlDictionaryReader reader) { MakeConnectionMessageInfo makeConnectionInfo = new MakeConnectionMessageInfo(); if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.Name, MakeConnectionConstants.Namespace)) { reader.ReadStartElement(); reader.MoveToContent(); while (reader.IsStartElement()) { if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.AddressElement, MakeConnectionConstants.Namespace)) { if (!string.IsNullOrEmpty(makeConnectionInfo.Address)) { makeConnectionInfo.MultipleAddressHeaders = true; reader.Skip(); } else { makeConnectionInfo.Address = reader.ReadElementContentAsString(); } } else if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.IdentifierElement, MakeConnectionConstants.Namespace)) { if (makeConnectionInfo.Identifier != null) { makeConnectionInfo.MultipleIdentifierHeaders = true; reader.Skip(); } else { makeConnectionInfo.Identifier = reader.ReadElementContentAsUniqueId(); } } else { if (string.IsNullOrEmpty(makeConnectionInfo.UnknownSelection)) { makeConnectionInfo.UnknownSelection = reader.LocalName; } reader.Skip(); } } reader.ReadEndElement(); } return(makeConnectionInfo); }
public static MakeConnectionMessageInfo Create(XmlDictionaryReader reader) { MakeConnectionMessageInfo makeConnectionInfo = new MakeConnectionMessageInfo(); if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.Name, MakeConnectionConstants.Namespace)) { reader.ReadStartElement(); reader.MoveToContent(); while (reader.IsStartElement()) { if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.AddressElement, MakeConnectionConstants.Namespace)) { if (!string.IsNullOrEmpty(makeConnectionInfo.Address)) { makeConnectionInfo.MultipleAddressHeaders = true; reader.Skip(); } else { makeConnectionInfo.Address = reader.ReadElementContentAsString(); } } else if (reader.IsStartElement(MakeConnectionConstants.MakeConnectionMessage.IdentifierElement, MakeConnectionConstants.Namespace)) { if (makeConnectionInfo.Identifier != null) { makeConnectionInfo.MultipleIdentifierHeaders = true; reader.Skip(); } else { makeConnectionInfo.Identifier = reader.ReadElementContentAsUniqueId(); } } else { if (string.IsNullOrEmpty(makeConnectionInfo.UnknownSelection)) { makeConnectionInfo.UnknownSelection = reader.LocalName; } reader.Skip(); } } reader.ReadEndElement(); } return makeConnectionInfo; }
EndpointAddress GetAddress() { EndpointAddress address = null; if (this.IsMakeConnectionPollingMessage) { MakeConnectionMessageInfo info = MakeConnectionMessageInfo.ReadMessage(this.RequestMessage); MakeConnectionMessageFault fault = VerifyProtocolElements(info); if (fault == null) { address = new EndpointAddress(info.Address); } else { this.isFaulting = true; IAsyncResult result = BeginReply(fault.CreateMessage(RequestMessage.Version), onFaultCompleted, this); if (result.CompletedSynchronously) { OnFaultCompletedCore(result); } } } else { // normal message, grab the reply-to address = this.RequestMessage.Headers.ReplyTo; } if (address != null) { this.addressIsAnonymousUri = MakeConnectionUtility.IsAnonymousUri(address.Uri); } return(address); }
MakeConnectionMessageFault VerifyProtocolElements(MakeConnectionMessageInfo info) { if (!string.IsNullOrEmpty(info.UnknownSelection) || info.Identifier != null) { return MakeConnectionMessageFault.CreateUnsupportedSelectionFault(this.RequestMessage, info.UnknownSelection); } else if (info.Address == null) { return MakeConnectionMessageFault.CreateMissingSelectionFault(this.RequestMessage); } return null; }