Ejemplo n.º 1
0
        private async Task <Slice> read(string streamId, long from, bool reverse, int limit)
        {
            var reply = await _client.ReadStreamAsync(new ReadStreamRequest
            {
                Database = _db,
                Stream   = streamId,
                From     = from,
                Limit    = (uint)limit,
                Reverse  = reverse,
            }, _metadata);

            var messages = new Message[reply.Messages.Count];

            for (int i = 0; i < reply.Messages.Count; i++)
            {
                var am = reply.Messages[i];

                messages[i] = new Message
                {
                    Stream    = am.Stream,
                    Position  = am.Position,
                    Type      = am.Type,
                    Timestamp = am.Timestamp.ToDateTime(),
                    Header    = am.Header.ToByteArray(),
                    Value     = am.Value.ToByteArray(),
                };
            }

            return(new Slice
            {
                Stream = streamId,
                From = reply.From,
                HasNext = reply.HasNext,
                Head = reply.Head,
                Next = reply.Next,
                Messages = messages,
                Reverse = reply.Reverse,
            });
        }