Beispiel #1
0
        public async Task <IEventStreamCursor> OpenEventStreamCursorAsync(string streamName, int sliceSize)
        {
            Require.NotEmpty(streamName, "streamName");
            Require.Positive(sliceSize, "sliceSize");

            var header = await ReadStreamHeaderAsync(streamName);

            if (EventStreamHeader.IsNewStream(header))
            {
                return(EventStreamCursor.UninitializedStream);
            }

            return(EventStreamCursor.CreateActiveCursor(
                       header,
                       StreamVersion.Start,
                       from => m_table.FetchStreamEvents(streamName, header, from, sliceSize)));
        }
Beispiel #2
0
        public async Task <IEventStreamCursor> OpenEventStreamCursorAsync(string streamName, EventStreamReaderId readerId, int sliceSize)
        {
            Require.NotEmpty(streamName, "streamName");
            Require.Positive(sliceSize, "sliceSize");

            var fromVersion = await ReadStreamReaderPositionAsync(streamName, readerId);

            var header = await ReadStreamHeaderAsync(streamName);

            if (header == EventStreamHeader.Unknown)
            {
                return(EventStreamCursor.UninitializedStream);
            }

            if (header.Version <= fromVersion)
            {
                return(EventStreamCursor.CreateEmptyCursor(header, fromVersion));
            }

            return(EventStreamCursor.CreateActiveCursor(
                       header,
                       fromVersion.Increment(),
                       from => m_table.FetchStreamEvents(streamName, header, from, sliceSize)));
        }
        public void Customize(IFixture fixture)
        {
            if (m_emptyCursor)
            {
                fixture.Customize <IEventStreamCursor>(composer => composer
                                                       .FromFactory(() => EventStreamCursor.UninitializedStream));
            }
            else
            {
                fixture.Customize <SortedList <StreamVersion, JournaledEvent> >(composer => composer
                                                                                .FromFactory(() => new SortedList <StreamVersion, JournaledEvent>
                {
                    { StreamVersion.Create(1), fixture.Create <JournaledEvent>() },
                    { StreamVersion.Create(2), fixture.Create <JournaledEvent>() },
                    { StreamVersion.Create(3), fixture.Create <JournaledEvent>() }
                })
                                                                                .OmitAutoProperties());

                fixture.Customize <FetchEvents>(composer => composer
                                                .FromFactory(
                                                    () => version => new FetchEventsResult(
                                                        true,
                                                        fixture.Create <SortedList <StreamVersion, JournaledEvent> >()).YieldTask()));

                fixture.Customize <EventStreamHeader>(composer => composer
                                                      .FromFactory(() => new EventStreamHeader(
                                                                       fixture.Create("ETag"),
                                                                       StreamVersion.Create(3))));

                fixture.Customize <IEventStreamCursor>(composer => composer
                                                       .FromFactory(() => EventStreamCursor.CreateActiveCursor(
                                                                        new EventStreamHeader(fixture.Create("Etag"), StreamVersion.Create(3)),
                                                                        StreamVersion.Start,
                                                                        fixture.Create <FetchEvents>())));
            }
        }