CloseSequence.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 / CloseSequence.cs / 1 / CloseSequence.cs

                            //---------------------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------------------

namespace System.ServiceModel.Channels 
{
    using System.Xml; 
 
    sealed class CloseSequence : BodyWriter
    { 
        UniqueId identifier;
        Int64 lastMsgNumber;

        public CloseSequence(UniqueId identifier, Int64 lastMsgNumber) 
            : base(true)
        { 
            this.identifier = identifier; 
            this.lastMsgNumber = lastMsgNumber;
        } 

        public static CloseSequenceInfo Create(XmlDictionaryReader reader)
        {
            if (reader == null) 
            {
                DiagnosticUtility.DebugAssert("Argument reader cannot be null."); 
            } 

            CloseSequenceInfo closeSequenceInfo = new CloseSequenceInfo(); 

            XmlDictionaryString wsrmNs = WsrmIndex.GetNamespace(ReliableMessagingVersion.WSReliableMessaging11);
            Wsrm11Dictionary wsrm11Dictionary = DXD.Wsrm11Dictionary;
 
            reader.ReadStartElement(wsrm11Dictionary.CloseSequence, wsrmNs);
            reader.ReadStartElement(XD.WsrmFeb2005Dictionary.Identifier, wsrmNs); 
            closeSequenceInfo.Identifier = reader.ReadContentAsUniqueId(); 
            reader.ReadEndElement();
 
            if (reader.IsStartElement(wsrm11Dictionary.LastMsgNumber, wsrmNs))
            {
                reader.ReadStartElement();
                closeSequenceInfo.LastMsgNumber = WsrmUtilities.ReadSequenceNumber(reader, false); 
                reader.ReadEndElement();
            } 
 
            while (reader.IsStartElement())
            { 
                reader.Skip();
            }

            reader.ReadEndElement(); 

            return closeSequenceInfo; 
        } 

        protected override void OnWriteBodyContents(XmlDictionaryWriter writer) 
        {
            XmlDictionaryString wsrmNs = WsrmIndex.GetNamespace(ReliableMessagingVersion.WSReliableMessaging11);
            Wsrm11Dictionary wsrm11Dictionary = DXD.Wsrm11Dictionary;
 
            writer.WriteStartElement(wsrm11Dictionary.CloseSequence, wsrmNs);
            writer.WriteStartElement(XD.WsrmFeb2005Dictionary.Identifier, wsrmNs); 
            writer.WriteValue(this.identifier); 
            writer.WriteEndElement();
 
            if (this.lastMsgNumber > 0)
            {
                writer.WriteStartElement(wsrm11Dictionary.LastMsgNumber, wsrmNs);
                writer.WriteValue(this.lastMsgNumber); 
                writer.WriteEndElement();
            } 
 
            writer.WriteEndElement();
        } 
    }
}

// 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