Ejemplo n.º 1
0
        private SocketStatus InnerReceive(Span <byte> buffer, out int received)
        {
            received = Socket.Receive(buffer, SocketFlags.None, out SocketError error);

            if (received > 0)
            {
                return(SocketStatus.Done);
            }

            if (error == SocketError.Success)
            {
                return(SocketStatus.Disconnected);
            }

            return(SocketStatusMapper.Map(error));
        }
Ejemplo n.º 2
0
        private SocketStatus InnerSend(ReadOnlySpan <byte> data, out int sent)
        {
            int size = data.Length;
            int result;

            for (sent = 0; sent < size; sent += result)
            {
                result = Socket.Send(data, SocketFlags.None, out SocketError error);

                // No data was sent, why?
                if (result == 0)
                {
                    SocketStatus status = SocketStatusMapper.Map(error);
                    if (status == SocketStatus.NotReady && sent > 0)
                    {
                        return(SocketStatus.Partial);
                    }

                    return(status);
                }
            }

            return(SocketStatus.Done);
        }