private IObservable <Tuple <string, string> > OpenFiles(string[] fileNames) { return(ObservableEx.Create <Tuple <string, string> >(async(observer, ct) => { try { IsProcessing = true; foreach (var name in fileNames) { if (ct.IsCancellationRequested) { return; } using (var stream = new System.IO.FileStream(name, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { var bytes = await stream.ReadBytesAsync().ConfigureAwait(false); var text = bytes.GetCode().GetString(bytes); observer.OnNext(Tuple.Create(System.IO.Path.GetFileName(name), text)); } } observer.OnCompleted(); } catch (Exception e) { observer.OnError(e); } finally { IsProcessing = false; } })); }
public PollingGateway(IPublishEndpoint bus, IMessagePoller poller, TimeSpan period) { _bus = bus; _poller = poller; _cancellationTokenSource = new CancellationTokenSource(); _observable = ObservableEx .Create <MessageEnvelope>(Poll, _cancellationTokenSource.Token) .Concat(Observable.Empty <MessageEnvelope>().Delay(period)) .Repeat(); }
public void Iterate_Void_Func_Throw() { var scheduler = new TestScheduler(); var obs = scheduler.Start(() => ObservableEx.Create(() => { throw new InvalidOperationException(); })); Assert.Equal(1, obs.Messages.Count); var notification = obs.Messages[0].Value; Assert.Equal(NotificationKind.OnError, notification.Kind); Assert.IsType <InvalidOperationException>(notification.Exception); }
public void Iterate_Complete_Dispose() { var scheduler = new TestScheduler(); var xs = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3), OnNext(40, 4), OnCompleted <int>(50) ); var ys = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnCompleted <int>(30) ); var zs = scheduler.CreateColdObservable( OnNext(100, 1), OnNext(200, 2), OnNext(300, 3), OnNext(400, 4), OnNext(500, 5), OnNext(600, 6), OnNext(700, 7), OnNext(800, 8), OnNext(900, 9), OnNext(1000, 10) ); var res = scheduler.Start(() => ObservableEx.Create <int>(observer => ToIterate_Complete_Dispose(xs, ys, zs, observer))); res.Messages.AssertEqual( OnNext(200, 1), OnNext(250, 2), OnNext(280, 3) ); xs.Subscriptions.AssertEqual( Subscribe(200, 250) ); ys.Subscriptions.AssertEqual( Subscribe(250, 280) ); zs.Subscriptions.AssertEqual( Subscribe(280, 1000) ); }
public void Iterate_Iterator_Throw() { var scheduler = new TestScheduler(); var xs = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3), OnNext(40, 4), OnCompleted <int>(50) ); var ys = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnCompleted <int>(30) ); var zs = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3), OnNext(40, 4), OnNext(50, 5), OnCompleted <int>(60) ); var ex = new Exception(); var res = scheduler.Start(() => ObservableEx.Create <int>(observer => ToIterate_Throw(xs, ys, zs, observer, ex))); res.Messages.AssertEqual( OnNext(200, 1), OnNext(250, 2), OnNext(280, 3), OnError <int>(280, ex) ); xs.Subscriptions.AssertEqual( Subscribe(200, 250) ); ys.Subscriptions.AssertEqual( Subscribe(250, 280) ); zs.Subscriptions.AssertEqual( ); }
public void Iterate_Void_Complete_Implicit() { var scheduler = new TestScheduler(); var xs = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3), OnNext(40, 4), OnCompleted <int>(50) ); var ys = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnCompleted <int>(30) ); var zs = scheduler.CreateColdObservable( OnNext(10, 1), OnNext(20, 2), OnNext(30, 3), OnNext(40, 4), OnNext(50, 5), OnCompleted <int>(60) ); var res = scheduler.Start(() => ObservableEx.Create(() => ToIterate_Void_Complete_Implicit(xs, ys, zs))); res.Messages.AssertEqual( OnCompleted <Unit>(340) ); xs.Subscriptions.AssertEqual( Subscribe(200, 250) ); ys.Subscriptions.AssertEqual( Subscribe(250, 280) ); zs.Subscriptions.AssertEqual( Subscribe(280, 340) ); }
public void Iterate_Void_ArgumentChecking() { ReactiveAssert.Throws <ArgumentNullException>(() => ObservableEx.Create(default(Func <IEnumerable <IObservable <object> > >))); ReactiveAssert.Throws <ArgumentNullException>(() => ObservableEx.Create(DummyFunc <IEnumerable <IObservable <Object> > > .Instance).Subscribe(null)); }
public void IteratorScenario() { var xs = ObservableEx.Create <int>(o => _IteratorScenario(100, 1000, o)); xs.AssertEqual(new[] { 100, 1000 }.ToObservable()); }
public void IteratorScenario_Void() { var xs = ObservableEx.Create(() => _IteratorScenario_Void(100, 1000)); xs.AssertEqual(new Unit[] { }.ToObservable()); }