public RegisteredConnectedProjection(
     ConnectedProjectionIdentifier id,
     ConnectedProjectionState state,
     ConnectedProjectionInfo info)
 {
     Id    = id;
     State = state;
     Info  = info;
 }
예제 #2
0
        public ConnectedProjection(
            Func <Owned <IConnectedProjectionContext <TContext> > > contextFactory,
            TConnectedProjection connectedProjection,
            IConnectedProjectionSettings settings,
            ILoggerFactory loggerFactory)
        {
            Info = new ConnectedProjectionInfo(
                typeof(TConnectedProjection).GetProjectionName(),
                typeof(TConnectedProjection).GetProjectionDescription());
            _settings      = settings ?? throw new ArgumentNullException(nameof(settings));
            ContextFactory = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory));

            ConnectedProjectionMessageHandler = new ConnectedProjectionMessageHandler <TContext>(
                Id,
                connectedProjection?.Handlers ?? throw new ArgumentNullException(nameof(connectedProjection)),
                ContextFactory,
                loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory))
                ).WithPolicy(_settings.RetryPolicy);
        }
예제 #3
0
        public FakeProjection(
            string id,
            Func <IEnumerable <StreamMessage>, IStreamGapStrategy, ConnectedProjectionIdentifier, CancellationToken, Task> messageHandler,
            IConnectedProjectionContext <FakeProjectionContext> context)
        {
            Id   = new ConnectedProjectionIdentifier($"{GetType().FullName}-{id}");
            Info = new ConnectedProjectionInfo(string.Empty, string.Empty);

            var messageHandlerMock = new Mock <IConnectedProjectionMessageHandler>();

            messageHandlerMock
            .SetupGet(handler => handler.Projection)
            .Returns(Id);
            messageHandlerMock
            .Setup(handler => handler.HandleAsync(It.IsAny <IEnumerable <StreamMessage> >(), It.IsAny <IStreamGapStrategy>(), It.IsAny <CancellationToken>()))
            .Returns((IEnumerable <StreamMessage> messages, IStreamGapStrategy strategy, CancellationToken ct) => messageHandler(messages, strategy, Id, ct));

            ConnectedProjectionMessageHandler = messageHandlerMock.Object;
            ContextFactory = () => new Owned <IConnectedProjectionContext <FakeProjectionContext> >(context, Mock.Of <IDisposable>());
        }