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

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Channels
{ 
    using System.IO;
    using System.ServiceModel.Security; 
 
    abstract class StreamSecurityUpgradeAcceptorBase : StreamSecurityUpgradeAcceptor
    { 
        SecurityMessageProperty remoteSecurity;
        bool securityUpgraded;
        string upgradeString;
 
        protected StreamSecurityUpgradeAcceptorBase(string upgradeString)
        { 
            this.upgradeString = upgradeString; 
        }
 
        public override Stream AcceptUpgrade(Stream stream)
        {
            if (stream == null)
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream");
            } 
 
            Stream result = this.OnAcceptUpgrade(stream, out this.remoteSecurity);
            this.securityUpgraded = true; 
            return result;
        }

        public override IAsyncResult BeginAcceptUpgrade(Stream stream, AsyncCallback callback, object state) 
        {
            if (stream == null) 
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("stream");
            } 

            return this.OnBeginAcceptUpgrade(stream, callback, state);
        }
 
        public override bool CanUpgrade(string contentType)
        { 
            if (this.securityUpgraded) 
            {
                return false; 
            }

            return (contentType == this.upgradeString);
        } 

        public override Stream EndAcceptUpgrade(IAsyncResult result) 
        { 
            if (result == null)
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result");
            }
            Stream retValue = this.OnEndAcceptUpgrade(result, out this.remoteSecurity);
            this.securityUpgraded = true; 
            return retValue;
        } 
 
        public override SecurityMessageProperty GetRemoteSecurity()
        { 
            // this could be null if upgrade not completed.
            return this.remoteSecurity;
        }
 
        protected abstract Stream OnAcceptUpgrade(Stream stream, out SecurityMessageProperty remoteSecurity);
        protected abstract IAsyncResult OnBeginAcceptUpgrade(Stream stream, AsyncCallback callback, object state); 
        protected abstract Stream OnEndAcceptUpgrade(IAsyncResult result, 
            out SecurityMessageProperty remoteSecurity);
    } 
}

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