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