protected override async Task Setup()
 {
     _waitForProjection = new AutoResetEvent(false);
     _projection        = new ConnectedProjectionName(typeof(TrackHandledEventsProjection));
     await PushToStream(Fixture.Create <SomethingHappened>());
     await PushToStream(Fixture.Create <DelayWasScheduled>());
 }
            public ProjectionMock(ConnectedProjectionName projectionName)
            {
                ProjectionName = projectionName;
                Projection     = new Mock <IConnectedProjection>();

                Projection
                .Setup(connectedProjection => connectedProjection.ShouldResume(It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _shouldResume);
            }
Ejemplo n.º 3
0
 public static async Task UpdateProjectionStateAsync <TContext>(
     this TContext context,
     ConnectedProjectionName runnerName,
     long position,
     CancellationToken cancellationToken)
     where TContext : RunnerDbContext <TContext>
 {
     await context.UpdateProjectionState(
         runnerName.ToString(),
         position,
         cancellationToken);
 }
Ejemplo n.º 4
0
        protected override async Task Setup()
        {
            _waitForProjection = new AutoResetEvent(false);
            _projection        = new ConnectedProjectionName(typeof(TrackHandledEventsProjection));
            await PushToStream(Fixture.Create <SomethingHappened>());

            ProjectionManager.Start();
            _waitForProjection.WaitOne();
            _waitForProjection.Reset();
            ProjectionManager.Stop();
            await Task.Delay(500);
        }
Ejemplo n.º 5
0
 public ConnectedProjectionMessageHandler(
     ConnectedProjectionName runnerName,
     ConnectedProjectionHandler <TContext>[] handlers,
     Func <Owned <TContext> > contextFactory,
     EnvelopeFactory envelopeFactory,
     ILoggerFactory loggerFactory)
 {
     _runnerName      = runnerName;
     _contextFactory  = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory));
     _projector       = new ConnectedProjector <TContext>(Resolve.WhenEqualToHandlerMessageType(handlers));
     _envelopeFactory = envelopeFactory ?? throw new ArgumentNullException(nameof(envelopeFactory));
     _logger          = loggerFactory?.CreateLogger <ConnectedProjectionMessageHandler <TContext> >() ?? throw new ArgumentNullException(nameof(loggerFactory));
 }
Ejemplo n.º 6
0
        public static async Task <long?> GetRunnerPositionAsync <TContext>(
            this TContext context,
            ConnectedProjectionName runnerName,
            CancellationToken cancellationToken)
            where TContext : RunnerDbContext <TContext>
        {
            var runnerPositions = await context
                                  .ProjectionStates
                                  .ToListAsync(cancellationToken);

            return(runnerPositions
                   .SingleOrDefault(p => runnerName.Equals(p.Name))
                   ?.Position);
        }
Ejemplo n.º 7
0
        public async Task Stop(string name, CancellationToken cancellationToken)
        {
            var projectionName = new ConnectedProjectionName(name);

            if (!_registeredProjections.Exists(projectionName))
            {
                return; // throw new ArgumentException("Invalid projection name.", nameof(projectionName));
            }
            await _registeredProjections
            .GetProjection(projectionName)
            .UpdateUserDesiredState(UserDesiredState.Stopped, cancellationToken);

            _commandBus.Queue(new Stop(projectionName));
        }
        private void StopCatchUp(ConnectedProjectionName projectionName)
        {
            if (projectionName == null || IsCatchingUp(projectionName) == false)
            {
                return;
            }

            try
            {
                using (var catchUp = _projectionCatchUps[projectionName])
                    catchUp.Cancel();
            }
            catch (KeyNotFoundException) { }
            catch (ObjectDisposedException) { }
        }
Ejemplo n.º 9
0
 public ConnectedProjectionCatchUp(
     ConnectedProjectionName name,
     IReadonlyStreamStore streamStore,
     Func <Owned <TContext> > contextFactory,
     ConnectedProjectionMessageHandler <TContext> messageHandler,
     IConnectedProjectionsCommandBus commandBus,
     ILogger logger)
 {
     _runnerName     = name ?? throw new ArgumentNullException(nameof(name));
     _streamStore    = streamStore ?? throw new ArgumentNullException(nameof(streamStore));
     _contextFactory = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory));
     _messageHandler = messageHandler ?? throw new ArgumentNullException(nameof(messageHandler));
     _commandBus     = commandBus ?? throw new ArgumentNullException(nameof(commandBus));
     _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Ejemplo n.º 10
0
 public Start(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
 private bool IsCatchingUp(ConnectedProjectionName projectionName)
 => projectionName != null && _projectionCatchUps.ContainsKey(projectionName);
Ejemplo n.º 12
0
 public Subscribe(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
Ejemplo n.º 13
0
 private bool HasSubscription(ConnectedProjectionName projectionName)
 => projectionName != null && _handlers.ContainsKey(projectionName);
Ejemplo n.º 14
0
 protected override Task Setup()
 {
     _projection        = new ConnectedProjectionName(typeof(TrackHandledEventsProjection));
     _projectionStarted = new AutoResetEvent(false);
     return(Task.CompletedTask);
 }
Ejemplo n.º 15
0
 public StartCatchUp(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
Ejemplo n.º 16
0
 private ConnectedProjectionState GetStateFor(ConnectedProjectionName projection) => ProjectionManager
 .GetRegisteredProjections()
 .Single(connectedProjection => connectedProjection.Name == projection)
 .State;
 public RegisteredConnectedProjection(ConnectedProjectionName name, ConnectedProjectionState state)
 {
     Name  = name;
     State = state;
 }
Ejemplo n.º 18
0
 public RemoveStoppedCatchUp(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
        public void When_creating_connected_projection_name_then_name_is_fully_qualified()
        {
            var name = new ConnectedProjectionName(typeof(ConnectedProjectionNameTests));

            name.Should().Be("Be.Vlaanderen.Basisregisters.Projector.Tests.ConnectedProjectionNameTests");
        }
 public ConnectedProjectionMessageHandlingException(Exception exception, ConnectedProjectionName runnerName, long?runnerPosition)
     : base($"Error occured handling message at position: {runnerPosition}", exception)
 {
     RunnerName     = runnerName;
     RunnerPosition = runnerPosition ?? -1L;
 }