本文整理汇总了C#中SocketError.ToErrorCode方法的典型用法代码示例。如果您正苦于以下问题:C# SocketError.ToErrorCode方法的具体用法?C# SocketError.ToErrorCode怎么用?C# SocketError.ToErrorCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SocketError
的用法示例。
在下文中一共展示了SocketError.ToErrorCode方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Create
/// <summary>
/// Create and return a new NetMQException with no Message containing the given SocketError and Exception.
/// </summary>
/// <param name="error">a SocketError that this exception will carry and expose via its ErrorCode property</param>
/// <param name="innerException">an Exception that this exception will expose via its InnerException property</param>
/// <returns>a new NetMQException</returns>
public static NetMQException Create(SocketError error, Exception innerException = null)
{
var errorCode = error.ToErrorCode();
#if DEBUG
if (errorCode == 0)
{
var s = string.Format("(And within NetMQException.Create: Unanticipated error-code: {0})", error.ToString());
return Create(errorCode: errorCode, message: s, innerException: innerException);
}
#endif
return Create(errorCode, innerException);
}
示例2: OutCompleted
/// <summary>
/// This method is called when a message Send operation has been completed.
/// </summary>
/// <param name="socketError">a SocketError value that indicates whether Success or an error occurred</param>
/// <param name="bytesTransferred">the number of bytes that were transferred</param>
/// <exception cref="NetMQException">A non-recoverable socket error occurred.</exception>
public override void OutCompleted(SocketError socketError, int bytesTransferred)
{
if (m_state == State.Connecting)
{
if (socketError == SocketError.Success)
{
m_state = State.Active;
m_writeSize = 0;
BeginSending();
}
else
{
m_state = State.Error;
NetMQException.Create(socketError);
}
}
else if (m_state == State.Active)
{
// We can write either all data or 0 which means rate limit reached.
if (socketError == SocketError.Success && bytesTransferred == m_writeSize)
{
m_writeSize = 0;
BeginSending();
}
else
{
Debug.Assert(false);
throw NetMQException.Create(socketError.ToErrorCode());
}
}
else
{
Debug.Assert(false);
}
}
示例3: InCompleted
/// <summary>
/// This is called when socket input has been completed.
/// </summary>
/// <param name="socketError">This indicates the status of the input operation - whether Success or some error.</param>
/// <param name="bytesTransferred">the number of bytes that were transferred</param>
/// <exception cref="NetMQException">A non-recoverable socket-error occurred.</exception>
public void InCompleted(SocketError socketError, int bytesTransferred)
{
switch (socketError)
{
case SocketError.Success:
{
// TODO: check TcpFilters
m_acceptedSocket.NoDelay = true;
if (m_options.TcpKeepalive != -1)
{
m_acceptedSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, m_options.TcpKeepalive);
if (m_options.TcpKeepaliveIdle != -1 && m_options.TcpKeepaliveIntvl != -1)
{
var bytes = new ByteArraySegment(new byte[12]);
Endianness endian = BitConverter.IsLittleEndian ? Endianness.Little : Endianness.Big;
bytes.PutInteger(endian, m_options.TcpKeepalive, 0);
bytes.PutInteger(endian, m_options.TcpKeepaliveIdle, 4);
bytes.PutInteger(endian, m_options.TcpKeepaliveIntvl, 8);
m_acceptedSocket.IOControl(IOControlCode.KeepAliveValues, (byte[])bytes, null);
}
}
// Create the engine object for this connection.
var engine = new StreamEngine(m_acceptedSocket, m_options, m_endpoint);
// Choose I/O thread to run connector in. Given that we are already
// running in an I/O thread, there must be at least one available.
IOThread ioThread = ChooseIOThread(m_options.Affinity);
// Create and launch a session object.
// TODO: send null in address parameter, is unneeded in this case
SessionBase session = SessionBase.Create(ioThread, false, m_socket, m_options, new Address(m_handle.LocalEndPoint));
session.IncSeqnum();
LaunchChild(session);
SendAttach(session, engine, false);
m_socket.EventAccepted(m_endpoint, m_acceptedSocket);
Accept();
break;
}
case SocketError.ConnectionReset:
case SocketError.NoBufferSpaceAvailable:
case SocketError.TooManyOpenSockets:
{
m_acceptedSocket.Dispose();
m_socket.EventAcceptFailed(m_endpoint, socketError.ToErrorCode());
Accept();
break;
}
default:
{
m_acceptedSocket.Dispose();
NetMQException exception = NetMQException.Create(socketError);
m_socket.EventAcceptFailed(m_endpoint, exception.ErrorCode);
throw exception;
}
}
}
示例4: InCompleted
/// <summary>
/// This method is called when a message receive operation has been completed.
/// </summary>
/// <param name="socketError">a SocketError value that indicates whether Success or an error occurred</param>
/// <param name="bytesTransferred">the number of bytes that were transferred</param>
public void InCompleted(SocketError socketError, int bytesTransferred)
{
if (socketError != SocketError.Success)
{
m_socket.EventAcceptFailed(m_address.ToString(), socketError.ToErrorCode());
// dispose old object
m_acceptedSocket.Handle.Dispose();
Accept();
}
else
{
m_acceptedSocket.InitOptions();
var pgmSession = new PgmSession(m_acceptedSocket, m_options);
IOThread ioThread = ChooseIOThread(m_options.Affinity);
SessionBase session = SessionBase.Create(ioThread, false, m_socket, m_options, new Address(m_handle.LocalEndPoint));
session.IncSeqnum();
LaunchChild(session);
SendAttach(session, pgmSession, false);
m_socket.EventAccepted(m_address.ToString(), m_acceptedSocket.Handle);
Accept();
}
}
示例5: Create
public static NetMQException Create(SocketError error, [CanBeNull] Exception innerException = null)
{
var errorCode = error.ToErrorCode();
#if DEBUG
if (errorCode == 0)
{
var s = $"(And within NetMQException.Create: Unanticipated error-code: {error.ToString()})";
return Create(errorCode: errorCode, message: s, innerException: innerException);
}
#endif
return Create(errorCode, innerException);
}