コード例 #1
0
 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));
     }
 }
コード例 #2
0
        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));
            }
        }