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; }
            }));
        }
Exemple #2
0
 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();
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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)
                );
        }
Exemple #5
0
        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(
                );
        }
Exemple #6
0
        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)
                );
        }
Exemple #7
0
 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));
 }
Exemple #8
0
        public void IteratorScenario()
        {
            var xs = ObservableEx.Create <int>(o => _IteratorScenario(100, 1000, o));

            xs.AssertEqual(new[] { 100, 1000 }.ToObservable());
        }
Exemple #9
0
        public void IteratorScenario_Void()
        {
            var xs = ObservableEx.Create(() => _IteratorScenario_Void(100, 1000));

            xs.AssertEqual(new Unit[] { }.ToObservable());
        }