//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel { using System.Runtime.Serialization; using System.Xml; using System.ServiceModel.Channels; public sealed class EnvelopeVersion { string ultimateDestinationActor; string[] ultimateDestinationActorValues; string nextDestinationActorValue; string ns; XmlDictionaryString dictionaryNs; string actor; XmlDictionaryString dictionaryActor; string toStringFormat; string[] mustUnderstandActorValues; string senderFaultName; string receiverFaultName; static EnvelopeVersion soap11 = new EnvelopeVersion( "", "http://schemas.xmlsoap.org/soap/actor/next", Message11Strings.Namespace, XD.Message11Dictionary.Namespace, Message11Strings.Actor, XD.Message11Dictionary.Actor, SR.Soap11ToStringFormat, "Client", "Server"); static EnvelopeVersion soap12 = new EnvelopeVersion( "http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver", "http://www.w3.org/2003/05/soap-envelope/role/next", Message12Strings.Namespace, XD.Message12Dictionary.Namespace, Message12Strings.Role, XD.Message12Dictionary.Role, SR.Soap12ToStringFormat, "Sender", "Receiver"); static EnvelopeVersion none = new EnvelopeVersion( null, null, MessageStrings.Namespace, XD.MessageDictionary.Namespace, null, null, SR.EnvelopeNoneToStringFormat, "Sender", "Receiver"); EnvelopeVersion(string ultimateReceiverActor, string nextDestinationActorValue, string ns, XmlDictionaryString dictionaryNs, string actor, XmlDictionaryString dictionaryActor, string toStringFormat, string senderFaultName, string receiverFaultName) { this.toStringFormat = toStringFormat; this.ultimateDestinationActor = ultimateReceiverActor; this.nextDestinationActorValue = nextDestinationActorValue; this.ns = ns; this.dictionaryNs = dictionaryNs; this.actor = actor; this.dictionaryActor = dictionaryActor; this.senderFaultName = senderFaultName; this.receiverFaultName = receiverFaultName; if (ultimateReceiverActor != null) { if (ultimateReceiverActor.Length == 0) { mustUnderstandActorValues = new string[] { "", nextDestinationActorValue }; ultimateDestinationActorValues = new string[] { "", nextDestinationActorValue }; } else { mustUnderstandActorValues = new string[] { "", ultimateReceiverActor, nextDestinationActorValue }; ultimateDestinationActorValues = new string[] { "", ultimateReceiverActor, nextDestinationActorValue }; } } } internal string Actor { get { return actor; } } internal XmlDictionaryString DictionaryActor { get { return dictionaryActor; } } internal string Namespace { get { return ns; } } internal XmlDictionaryString DictionaryNamespace { get { return dictionaryNs; } } public string NextDestinationActorValue { get { return nextDestinationActorValue; } } public static EnvelopeVersion None { get { return none; } } public static EnvelopeVersion Soap11 { get { return soap11; } } public static EnvelopeVersion Soap12 { get { return soap12; } } internal string ReceiverFaultName { get { return receiverFaultName; } } internal string SenderFaultName { get { return senderFaultName; } } internal string[] MustUnderstandActorValues { get { return this.mustUnderstandActorValues; } } internal string UltimateDestinationActor { get { return ultimateDestinationActor; } } public string[] GetUltimateDestinationActorValues() { return (string[])this.ultimateDestinationActorValues.Clone(); } internal string[] UltimateDestinationActorValues { get { return ultimateDestinationActorValues; } } internal bool IsUltimateDestinationActor(string actor) { return actor.Length == 0 || actor == this.ultimateDestinationActor || actor == this.nextDestinationActorValue; } public override string ToString() { return SR.GetString(toStringFormat, Namespace); } } }