File: net\System\Net\Sockets\_DisconnectOverlappedAsyncResult.cs
Project: ndp\fx\src\System.csproj (System)
//------------------------------------------------------------------------------
// <copyright file="_AcceptOverlappedAsyncResult.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Net.Sockets {
    using System;
    using System.Net;
    using System.Runtime.InteropServices;
    using System.Threading;
    using Microsoft.Win32;
 
    //
    //  DisconnectOverlappedAsyncResult - used to take care of storage for async Socket BeginAccept call.
    //
    internal class DisconnectOverlappedAsyncResult : BaseOverlappedAsyncResult {
 
        
        internal DisconnectOverlappedAsyncResult(Socket socket, Object asyncState, AsyncCallback asyncCallback): 
            base(socket,asyncState,asyncCallback)
        {
        }
 
         //
        // This method will be called by us when the IO completes synchronously and
        // by the ThreadPool when the IO completes asynchronously. (only called on WinNT)
        //
 
        internal override object PostCompletion(int numBytes) {
            if (ErrorCode == (int)SocketError.Success) {
                Socket socket = (Socket)AsyncObject;
                socket.SetToDisconnected();
                socket.m_RemoteEndPoint = null;
            }
            return base.PostCompletion(numBytes);
        }
    }
}