public bool SetBuffer(SocketAsyncEventArgs e, IPacket packet)
        {
            int offset, length;
            var buffer = packet.GetBuffer(out offset, out length);

            if (length == 0)
            {
                return(false);
            }

            if (buffer == null)
            {
                return(false);
            }

            if (offset < 0 || offset >= buffer.Length)
            {
                return(false);
            }

            if (length <= 0 || length > buffer.Length)
            {
                return(false);
            }

            e.SetBuffer(buffer, 0, buffer.Length);
            return(true);
        }