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, }); }