コード例 #1
0
ファイル: ProjectionTests.cs プロジェクト: csuffyy/Cedar
        public void Can_invoke_handlers()
        {
            List <object> projectedEvents = new List <object>();
            var           handlerResolver = new ProjectionHandlerResolver(new TestProjectionModule(projectedEvents));
            var           handlers        = handlerResolver.ResolveAll <TestEvent>().ToArray();
            var           projectionEvent = new ProjectionEvent <TestEvent>("streamid", Guid.NewGuid(), 1, DateTimeOffset.UtcNow, null, new TestEvent());

            foreach (var handler in handlers)
            {
                handler(projectionEvent, CancellationToken.None);
            }

            projectedEvents.Count.Should().Be(1);
        }
コード例 #2
0
ファイル: ProjectionDispatcher.cs プロジェクト: csuffyy/Cedar
        private async Task DispatchInternal <T>(
            string streamid,
            Guid eventId,
            int version,
            DateTimeOffset timeStamp,
            IReadOnlyDictionary <string, object> headers,
            T @event) where T : class
        {
            var projectionEvent = new ProjectionEvent <T>(streamid, eventId, version, timeStamp, headers, @event);

            var handlers = _handlerResolver.ResolveAll <T>();

            foreach (var handler in handlers)
            {
                await handler(projectionEvent, _disposed.Token);
            }
        }
        private static async Task DispatchInternal <T>(
            IProjectionHandlerResolver eventHandlerResolver,
            string streamid,
            Guid eventId,
            int version,
            DateTimeOffset timeStamp,
            IReadOnlyDictionary <string, object> headers,
            T @event,
            CancellationToken cancellationToken) where T : class
        {
            var eventMessage = new ProjectionEvent <T>(streamid, eventId, version, timeStamp, headers, @event);
            var handlers     = eventHandlerResolver.ResolveAll <T>();

            foreach (var handler in handlers)
            {
                await handler(eventMessage, cancellationToken);
            }
        }