private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { SocketAsyncResult result; if (socket.TryDequeue(out result)) { DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.AsyncResult = result; dataToken.byteArrayForMessage = result.Data; dataToken.messageLength = result.Data.Length; try { PostSend(ioEventArgs); } catch (Exception ex) { dataToken.ResultCallback(ResultCode.Error, ex); ResetSendFlag(); } } else { ResetSendFlag(); } }
private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { bool isOwner = ioEventArgs == null; byte[] data; if (socket.TryDequeue(out data)) { if (ioEventArgs == null) { ioEventArgs = ioEventArgsPool.Pop(); ioEventArgs.AcceptSocket = socket.WorkSocket; } DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.byteArrayForMessage = data; dataToken.messageLength = data.Length; try { PostSend(ioEventArgs); } catch { if (isOwner) { ReleaseIOEventArgs(ioEventArgs); } throw; } } else { ReleaseIOEventArgs(ioEventArgs); socket.ResetSendFlag(); } }
private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { byte[] data; if (socket.TryDequeue(out data)) { DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.byteArrayForMessage = data; dataToken.messageLength = data.Length; PostSend(ioEventArgs); } else { ResetSendFlag(); } }
private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { bool isOwner = ioEventArgs == null; SocketAsyncResult result; if (socket.TryDequeue(out result)) { if (ioEventArgs == null) { ioEventArgs = ioEventArgsPool.Pop(); ioEventArgs.AcceptSocket = socket.WorkSocket; } DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.AsyncResult = result; dataToken.byteArrayForMessage = result.Data; dataToken.messageLength = result.Data.Length; try { PostSend(ioEventArgs); } catch (Exception ex) { dataToken.ResultCallback(ResultCode.Error, ex); if (isOwner) { ReleaseIOEventArgs(ioEventArgs); } socket.ResetSendFlag(); } } else { ReleaseIOEventArgs(ioEventArgs); socket.ResetSendFlag(); } }
private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { bool isOwner = ioEventArgs == null; byte[] data; if (socket.TryDequeue(out data)) { if (ioEventArgs == null) { ioEventArgs = ioEventArgsPool.Pop(); ioEventArgs.AcceptSocket = socket.WorkSocket; } DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.byteArrayForMessage = data; dataToken.messageLength = data.Length; try { PostSend(ioEventArgs); } catch { if (isOwner) ReleaseIOEventArgs(ioEventArgs); throw; } } else { ReleaseIOEventArgs(ioEventArgs); socket.ResetSendFlag(); } }
private void TryDequeueAndPostSend(ExSocket socket, SocketAsyncEventArgs ioEventArgs) { bool isOwner = ioEventArgs == null; SocketAsyncResult result; if (socket.TryDequeue(out result)) { if (ioEventArgs == null) { ioEventArgs = ioEventArgsPool.Pop(); ioEventArgs.AcceptSocket = socket.WorkSocket; } DataToken dataToken = (DataToken)ioEventArgs.UserToken; dataToken.Socket = socket; dataToken.AsyncResult = result; dataToken.byteArrayForMessage = result.Data; dataToken.messageLength = result.Data.Length; try { PostSend(ioEventArgs); } catch (Exception ex) { dataToken.ResultCallback(ResultCode.Error, ex); if (isOwner) ReleaseIOEventArgs(ioEventArgs); socket.ResetSendFlag(); } } else { ReleaseIOEventArgs(ioEventArgs); socket.ResetSendFlag(); } }