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); }
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); }
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); }
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)); }
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); }
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) { } }
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)); }
public Start(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
private bool IsCatchingUp(ConnectedProjectionName projectionName) => projectionName != null && _projectionCatchUps.ContainsKey(projectionName);
public Subscribe(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
private bool HasSubscription(ConnectedProjectionName projectionName) => projectionName != null && _handlers.ContainsKey(projectionName);
protected override Task Setup() { _projection = new ConnectedProjectionName(typeof(TrackHandledEventsProjection)); _projectionStarted = new AutoResetEvent(false); return(Task.CompletedTask); }
public StartCatchUp(ConnectedProjectionName projectionName) => ProjectionName = projectionName;
private ConnectedProjectionState GetStateFor(ConnectedProjectionName projection) => ProjectionManager .GetRegisteredProjections() .Single(connectedProjection => connectedProjection.Name == projection) .State;
public RegisteredConnectedProjection(ConnectedProjectionName name, ConnectedProjectionState state) { Name = name; State = state; }
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; }