public VostokHost([NotNull] VostokHostSettings settings) { this.settings = settings ?? throw new ArgumentNullException(nameof(settings)); ShutdownTokenSource = new CancellationTokenSource(); onApplicationStateChanged = new CachingObservable <VostokApplicationState>(); ChangeStateTo(VostokApplicationState.NotInitialized); }
public void Subscribe_should_pass_initial_value_to_observer_immediately() { observable = new CachingObservable <string>("initial"); observable.Subscribe(observer1); observer1.ReceivedCalls().Should().HaveCount(1); observer1.Received().OnNext("initial"); }
public void TestSetup() { observable = new CachingObservable <string>(); observer1 = Substitute.For <IObserver <string> >(); observer2 = Substitute.For <IObserver <string> >(); error1 = new Exception(); error2 = new Exception(); }
/// <summary> /// Creates a new instance of <see cref="ClusterConfigClient"/> with given <paramref name="settings"/> merged with default settings from <see cref="DefaultSettingsProvider"/> (non-default user settings take priority). /// </summary> public ClusterConfigClient([NotNull] ClusterConfigClientSettings settings) { this.settings = settings = ConfigurationMerger.Merge(DefaultSettingsProvider.Settings, settings ?? throw new ArgumentNullException(nameof(settings))); log = settings.Log.ForContext <ClusterConfigClient>(); stateSource = new TaskCompletionSource <ClusterConfigClientState>(TaskCreationOptions.RunContinuationsAsynchronously); stateObservable = new CachingObservable <ClusterConfigClientState>(); clientState = new AtomicInt(State_NotStarted); cancellationSource = new CancellationTokenSource(); observablePropagationLock = new object(); }
public PeriodicObservable(Func <T> valueProvider, TimeSpan period) { baseObservable = new CachingObservable <T>(); updateAction = new PeriodicalAction(() => baseObservable.Next(valueProvider()), _ => {}, () => period); }
public Subscription(CachingObservable <T> observable, IObserver <T> observer) { this.observable = observable; this.observer = observer; }