public InitialPositionDecorator(IPositionManager positionManager, StartFromPosition startFromPosition) { _positionManager = positionManager ?? throw new ArgumentNullException(nameof(positionManager)); _startFromPosition = startFromPosition; }
public static void SetInitialPosition(this StandardConfigurer <IPositionManager> configurer, StartFromPosition startFromPosition) { var registrar = StandardConfigurer.Open(configurer); if (registrar.Other <ExplicitlySetInitialPosition>().HasService()) { throw new InvalidOperationException($"Cannot set resume position to {startFromPosition}, because it has already been set!"); } registrar.Other <ExplicitlySetInitialPosition>().Register(c => new ExplicitlySetInitialPosition(startFromPosition)); registrar.Decorate(c => new InitialPositionDecorator(c.Get <IPositionManager>(), startFromPosition)); }
public ExplicitlySetInitialPosition(StartFromPosition position) => Position = position;