void IHandle <ClientMessage.ListStreams> .Handle(ClientMessage.ListStreams message) { try { var streams = _readIndex.GetStreamIds(); message.Envelope.ReplyWith(new ClientMessage.ListStreamsCompleted(streams != null, streams)); } catch (Exception ex) { Log.ErrorException(ex, "Error while reading stream ids"); message.Envelope.ReplyWith(new ClientMessage.ListStreamsCompleted(false, null)); } }
void IHandle <ClientMessage.ListStreams> .Handle(ClientMessage.ListStreams message) { try { // from 1 to skip $stream-created event in $streams stream var result = _readIndex.ReadStreamEventsForward(SystemStreams.StreamsStream, 1, int.MaxValue); if (result.Result != RangeReadResult.Success) { throw new SystemStreamNotFoundException( string.Format("Couldn't find system stream {0}, which should've been created with projection 'Index By Streams'", SystemStreams.StreamsStream)); } var streamIds = result.Records .Select(e => { var dataStr = Encoding.UTF8.GetString(e.Data); var parts = dataStr.Split('@'); if (parts.Length < 2) { throw new FormatException(string.Format("{0} stream event data is in bad format: {1}. Expected: eventNumber@streamid", SystemStreams.StreamsStream, dataStr)); } var streamid = parts[1]; return(streamid); }) .ToArray(); message.Envelope.ReplyWith(new ClientMessage.ListStreamsCompleted(true, streamIds)); } catch (Exception ex) { Log.ErrorException(ex, "Error while reading stream ids"); message.Envelope.ReplyWith(new ClientMessage.ListStreamsCompleted(false, null)); } }