Exemplo n.º 1
0
        private Task ReadAsync(IMemoryOwner <byte> buffer, OperationHeader header, ErrorCode errorCode = null)
        {
            Header    = header;
            ErrorCode = errorCode;
            _data     = buffer;

            return(Task.CompletedTask);
        }
        public async Task ReadAsync(byte[] buffer, OperationHeader header, ErrorCode errorCode = null)
        {
            Header    = header;
            ErrorCode = errorCode;

            if (buffer?.Length > 0)
            {
                await Data.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
            }
        }
Exemplo n.º 3
0
        protected OperationBase()
        {
            Opaque = SequenceGenerator.GetNext();
            Header = new OperationHeader {
                Status = ResponseStatus.None
            };
            Key = string.Empty;

            //temporarily make a static - later should be pluggable/set externally
            Converter  = DefaultConverter;
            Transcoder = DefaultTranscoder;
        }
        internal static long?GetServerDuration(this OperationHeader header, ReadOnlySpan <byte> buffer)
        {
            if (header.FramingExtrasLength <= 0)
            {
                return(null);
            }

            // copy framing extra bytes
            Span <byte> bytes = new byte[header.FramingExtrasLength];

            buffer.Slice(OperationHeader.Length, header.FramingExtrasLength).CopyTo(bytes);

            return(GetServerDuration(bytes));
        }
Exemplo n.º 5
0
        internal static long?GetServerDuration(this OperationHeader header, byte[] buffer)
        {
            if (header.FramingExtrasLength <= 0)
            {
                return(null);
            }

            // copy framing extra bytes
            var bytes = new byte[header.FramingExtrasLength];

            Buffer.BlockCopy(buffer, OperationHeader.Length, bytes, 0, header.FramingExtrasLength);

            return(GetServerDuration(bytes));
        }
Exemplo n.º 6
0
        public virtual void Reset(ResponseStatus status)
        {
            _data?.Dispose();
            _data = null;

            Header = new OperationHeader
            {
                Magic      = Header.Magic,
                OpCode     = OpCode,
                Cas        = Header.Cas,
                BodyLength = Header.BodyLength,
                Key        = Key,
                Status     = status
            };
        }
        public virtual void Reset(ResponseStatus status)
        {
            Data?.Dispose();
            Data = MemoryStreamFactory.GetMemoryStream();

            Header = new OperationHeader
            {
                Magic      = Header.Magic,
                OpCode     = OpCode,
                Cas        = Header.Cas,
                BodyLength = Header.BodyLength,
                Key        = Key,
                Status     = status
            };
        }
        internal static long?GetServerDuration(this OperationHeader header, MemoryStream stream)
        {
            if (header.FramingExtrasLength <= 0)
            {
                return(null);
            }

            // copy framing extra bytes then reset steam position
            var bytes = new byte[header.FramingExtrasLength];

            stream.Position = OperationHeader.Length;
            stream.Read(bytes, 0, header.FramingExtrasLength);
            stream.Position = 0;

            return(GetServerDuration(bytes));
        }