private void setLingerOption(LingerOption lref) { Linger lngopt = new Linger(); lngopt.OnOff = lref.Enabled ? (ushort)1 : (ushort)0; lngopt.Time = (ushort)lref.LingerTime; GlobalLog.Print("Socket#" + ValidationHelper.HashString(this) + "::setLingerOption(): lref:" + lref.ToString()); // This can throw ObjectDisposedException. SocketError errorCode = UnsafeNclNativeMethods.OSSOCK.setsockopt( m_Handle, SocketOptionLevel.Socket, SocketOptionName.Linger, ref lngopt, 4); GlobalLog.Print("Socket#" + ValidationHelper.HashString(this) + "::setLingerOption() UnsafeNclNativeMethods.OSSOCK.setsockopt returns errorCode:" + errorCode); // // if the native call fails we'll throw a SocketException // if (errorCode==SocketError.SocketError) { // // update our internal state after this socket error and throw // SocketException socketException = new SocketException(); UpdateStatusAfterSocketError(socketException); if(s_LoggingEnabled)Logging.Exception(Logging.Sockets, this, "setLingerOption", socketException); throw socketException; } }
private void setLingerOption(LingerOption lref) { Linger lngopt = new Linger(); lngopt.OnOff = lref.Enabled ? (short)1 : (short)0; lngopt.Time = (short)lref.LingerTime; GlobalLog.Print("Socket#" + ValidationHelper.HashString(this) + "::setLingerOption(): lref:" + lref.ToString()); int errorCode = UnsafeNclNativeMethods.OSSOCK.setsockopt( m_Handle, SocketOptionLevel.Socket, SocketOptionName.Linger, ref lngopt, Linger.Size); // // if the native call fails we'll throw a SocketException // if (errorCode==SocketErrors.SocketError) { // // update our internal state after this socket error and throw // SocketException socketException = new SocketException(); UpdateStatusAfterSocketError(); throw socketException; } }