public override AsyncExecutionResult TryExecuteIOUringAsync(AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int key)
        {
            Socket socket = Socket !;

            executionQueue !.AddPollIn(socket.SafeHandle, callback !, key);
            return(AsyncExecutionResult.Executing);
        }
        public override AsyncExecutionResult TryExecuteIOUringAsync(AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int key)
        {
            Socket socket = Socket !;

            executionQueue.AddRead(socket.SafeHandle, MemoryBuffer, callback !, data: key);
            return(AsyncExecutionResult.Executing);
        }
        public AsyncExecutionResult TryExecuteAsync(AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int data)
        {
            IList <ArraySegment <byte> >?bufferList = BufferList;

            if (bufferList == null)
            {
                return(TryExecuteSingleBufferAsync(MemoryBuffer.Slice(BytesTransferred), executionQueue, callback, data));
            }
            else
            {
                return(TryExecuteMultipleBuffersAsync(bufferList, executionQueue, callback, data));
            }
        }
        private AsyncExecutionResult TryExecuteSingleBufferAsync(Memory <byte> memory, AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int data)
        {
            Socket socket = Socket !;

            executionQueue.AddWrite(socket.SafeHandle, memory, callback, data);
            return(AsyncExecutionResult.Executing);
        }
        private AsyncExecutionResult TryExecuteMultipleBuffersAsync(IList <ArraySegment <byte> > buffers, AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int data)
        {
            Socket        socket = Socket !;
            Memory <byte> memory = buffers[_bufferIndex].Slice(_bufferOffset);

            executionQueue.AddWrite(socket.SafeHandle, memory, callback, data);
            return(AsyncExecutionResult.Executing);
        }
 public override AsyncExecutionResult TryExecuteIOUringAsync(AsyncExecutionQueue executionQueue, IAsyncExecutionResultHandler callback, int key)
 {
     return(TryExecuteAsync(executionQueue, callback, data: key));
 }