FramingFormat.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / FramingFormat.cs / 1 / FramingFormat.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Channels
{ 
    /*
        Message Framing BNF: 
 
        protocol-stream-a = (singleton-unsized-stream-a | duplex-stream-a | simplex-stream-a | singleton-sized-stream-a)+
        protocol-stream-b = (singleton-unsized-stream-b | duplex-stream-b)+ 

        singleton-unsized-stream-a = version-record mode-record-type singleton-unsized-mode via-record encoding-record upgrade-request* preamble-end-record-type singleton-message end-record-type
        duplex-stream-a = version-record mode-record-type duplex-mode via-record encoding-record upgrade-request* preamble-end-record-type duplex-message* end-record-type
        simplex-stream-a = version-record mode-record-type simplex-mode via-record encoding-record simplex-message* end-record-type 
        singleton-sized-stream-a = version-record mode-record-type singleton-sized-mode via-record encoding-record octets
 
        singleton-unsized-stream-b = upgrade-response* preamble-response singleton-message? end-record-type 
        duplex-stream-b = upgrade-response* preamble-response duplex-message* (fault-message | end-record-type)
 
        singleton-message = unsized-message
        duplex-message = sized-message
        simplex-message = sized-message
        fault-message = fault-record-type mbint utf8-octets 
        sized-message = sized-envelope-record-type mbint octets
        unsized-message = unsized-envelope-record-type (mbint octets)* octet(0x0) 
 
        preamble-response = preamble-ack-record-type | fault-message
 
        upgrade-request = upgrade-request-record-type mbint utf8-octets octets
        upgrade-response = upgrade-response-record-type octets

        version-record = version-record-type major-version-number minor-version-number 
        major-version-number = octet(0x1)
        minor-version-number = octet(0x0) 
 
        encoding-record = known-encoding-record | extensible-encoding-record
        known-encoding-record = known-encoding-record-type known-encoding-type 
        extensible-encoding-record = extensible-encoding-record-type mbint utf8-octets

        via-record = via-record-type mbint utf8-octets
 
        singleton-unsized-mode = octet(0x1)
        duplex-mode = octet(0x2) 
        simplex-mode = octet(0x3) 
        singleton-sized-mode = octet(0x4)
 
        known-encoding-type = text-encoding | binary-encoding | mtom-encoding
        binary-encoding = binary-sessionless-encoding | binary-session-encoding
        text-encoding = soap11-text-encoding | soap12-text-encoding
        soap11-text-encoding = soap11-utf8-encoding | soap11-utf16-encoding | soap11-unicodeFFFE-encoding 
        soap12-text-encoding = soap12-utf8-encoding | soap12-utf16-encoding | soap12-unicodeFFFE-encoding
 
        soap11-utf8-encoding = octet(0x0) 
        soap11-utf16-encoding = octet(0x1)
        soap11-unicodeFFFE-encoding = octet(0x2) 
        soap12-utf8-encoding = octet(0x3)
        soap12-utf16-encoding = octet(0x4)
        soap12-unicodeFFFE-encoding = octet(0x5)
        mtom-encoding = octet(0x6) 
        binary-sessionless-encoding = octet(0x7)
        binary-session-encoding = octet(0x8) 
 
        version-record-type = octet(0x0)
        mode-record-type = octet(0x1) 
        via-record-type = octet(0x2)
        known-encoding-record-type = octet(0x3)
        extensible-encoding-record-type = octet(0x4)
        unsized-envelope-record-type = octet(0x5) 
        sized-envelope-record-type = octet(0x6)
        end-record-type = octet(0x7) 
        fault-record-type = octet(0x8) 
        upgrade-request-record-type = octet(0x9)
        upgrade-response-record-type = octet(0xA) 
        preamble-ack-record-type = octet (0xB)
        preamble-end-record-type = octet (0xC)
    */
 
    enum FramingRecordType
    { 
        Version = 0x0, 
        Mode = 0x1,
        Via = 0x2, 
        KnownEncoding = 0x3,
        ExtensibleEncoding = 0x4,
        UnsizedEnvelope = 0x5,
        SizedEnvelope = 0x6, 
        End = 0x7,
        Fault = 0x8, 
        UpgradeRequest = 0x9, 
        UpgradeResponse = 0xA,
        PreambleAck = 0xB, 
        PreambleEnd = 0xC,
    }

    enum FramingMode 
    {
        Singleton = 0x1, 
        Duplex = 0x2, 
        Simplex = 0x3,
        SingletonSized = 0x4, 
    }

    static class FramingUpgradeString
    { 
        public const string SslOrTls = "application/ssl-tls";
        public const string Negotiate = "application/negotiate"; 
    } 

    enum FramingEncodingType 
    {
        Soap11Utf8 = 0x0,
        Soap11Utf16 = 0x1,
        Soap11Utf16FFFE = 0x2, 
        Soap12Utf8 = 0x3,
        Soap12Utf16 = 0x4, 
        Soap12Utf16FFFE = 0x5, 
        MTOM = 0x6,
        Binary = 0x7, 
        BinarySession = 0x8,
    }

    static class FramingEncodingString 
    {
        public const string Soap11Utf8 = "text/xml; charset=utf-8"; 
        public const string Soap11Utf16 = "text/xml; charset=utf16"; 
        public const string Soap11Utf16FFFE = "text/xml; charset=unicodeFFFE";
        public const string Soap12Utf8 = "application/soap+xml; charset=utf-8"; 
        public const string Soap12Utf16 = "application/soap+xml; charset=utf16";
        public const string Soap12Utf16FFFE = "application/soap+xml; charset=unicodeFFFE";
        public const string MTOM = "multipart/related";
        public const string Binary = "application/soap+msbin1"; 
        public const string BinarySession = "application/soap+msbinsession1";
        public const string NamespaceUri = "http://schemas.microsoft.com/ws/2006/05/framing"; 
        const string FaultBaseUri = NamespaceUri + "/faults/"; 
        public const string ContentTypeInvalidFault = FaultBaseUri + "ContentTypeInvalid";
        public const string ContentTypeTooLongFault = FaultBaseUri + "ContentTypeTooLong"; 
        public const string ConnectionDispatchFailedFault = FaultBaseUri + "ConnectionDispatchFailed";
        public const string EndpointNotFoundFault = FaultBaseUri + "EndpointNotFound";
        public const string EndpointUnavailableFault = FaultBaseUri + "EndpointUnavailable";
        public const string MaxMessageSizeExceededFault = FaultBaseUri + "MaxMessageSizeExceededFault"; 
        public const string ServerTooBusyFault = FaultBaseUri + "ServerTooBusy";
        public const string ServiceActivationFailedFault = FaultBaseUri + "ServiceActivationFailed"; 
        public const string UnsupportedModeFault = FaultBaseUri + "UnsupportedMode"; 
        public const string UnsupportedVersionFault = FaultBaseUri + "UnsupportedVersion";
        public const string UpgradeInvalidFault = FaultBaseUri + "UpgradeInvalid"; 
        public const string ViaTooLongFault = FaultBaseUri + "ViaTooLong";

        const string ExceptionKey = "FramingEncodingString";
        public static bool TryGetFaultString(Exception exception, out string framingFault) 
        {
            framingFault = null; 
            if (exception.Data.Contains(FramingEncodingString.ExceptionKey)) 
            {
                framingFault = exception.Data[FramingEncodingString.ExceptionKey] as string; 
                if (framingFault != null)
                {
                    return true;
                } 
            }
 
            return false; 
        }
 
        public static void AddFaultString(Exception exception, string framingFault)
        {
            exception.Data[FramingEncodingString.ExceptionKey] = framingFault;
        } 
    }
 
    static class FramingVersion 
    {
        public const int Major = 0x1; 
        public const int Minor = 0x0;
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK