示例#1
0
        public async Task ProjectAsync(IStreamEvents streamEvents, CancellationToken ct)
        {
            var projection       = GetType();
            var projectionOffset = await _offsetTracker.GetOffsetAsync(projection);

            try
            {
                await streamEvents.SubscribeAsync(
                    projection,
                    projectionOffset,
                    ct,
                    async data => await TrackAndHandleEventAsync(projection, data));
            }
            catch (OperationCanceledException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new ApertureProjectionException(
                          "Exception encountered while projecting events, see inner exception for more details", e);
            }
        }