Exemplo n.º 1
0
        private IDisposable InitializeStreamingSubscription(IObserver <FirebaseEvent <T> > observer)
        {
            var completeDisposable = Disposable.Create(() => this.isSyncRunning = false);

            switch (this.streamingOptions)
            {
            case StreamingOptions.LatestOnly:
                // stream since the latest key
                var queryLatest = this.childQuery.OrderByKey().StartAt(() => this.GetLatestKey());
                this.firebaseSubscription = new FirebaseSubscription <T>(observer, queryLatest, this.elementRoot, this.firebaseCache);
                this.firebaseSubscription.ExceptionThrown += this.StreamingExceptionThrown;

                return(new CompositeDisposable(this.firebaseSubscription.Run(), completeDisposable));

            case StreamingOptions.Everything:
                // stream everything
                var queryAll = this.childQuery;
                this.firebaseSubscription = new FirebaseSubscription <T>(observer, queryAll, this.elementRoot, this.firebaseCache);
                this.firebaseSubscription.ExceptionThrown += this.StreamingExceptionThrown;

                return(new CompositeDisposable(this.firebaseSubscription.Run(), completeDisposable));

            default:
                break;
            }

            return(completeDisposable);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Starts observing this query watching for changes real time sent by the server.
 /// </summary>
 /// <typeparam name="T"> Type of elements. </typeparam>
 /// <param name="elementRoot"> Optional custom root element of received json items. </param>
 /// <returns> Observable stream of <see cref="FirebaseEvent{T}"/>. </returns>
 public IObservable <FirebaseEvent <T> > AsObservable <T>(EventHandler <ExceptionEventArgs <FirebaseException> > exceptionHandler = null, string elementRoot = "")
 {
     return(Observable.Create <FirebaseEvent <T> >(observer =>
     {
         var sub = new FirebaseSubscription <T>(observer, this, elementRoot, new FirebaseCache <T>());
         sub.ExceptionThrown += exceptionHandler;
         return sub.Run();
     }));
 }
Exemplo n.º 3
0
        private IDisposable InitializeStreamingSubscription(IObserver <FirebaseEvent <T> > observer)
        {
            if (this.streamChanges)
            {
                var query = this.childQuery.OrderByKey().StartAt(() => this.GetLatestKey());
                var sub   = new FirebaseSubscription <T>(observer, query, this.elementRoot, this.firebaseCache);
                sub.ExceptionThrown += this.StreamingExceptionThrown;

                return(sub.Run());
            }

            return(Observable.Never <string>().Subscribe());
        }
        private IDisposable InitializeStreamingSubscription(IObserver <FirebaseEvent <T> > observer)
        {
            var completeDisposable = Disposable.Create(() => this.isSyncRunning = false);

            if (this.streamChanges)
            {
                var query = this.childQuery.OrderByKey().StartAt(() => this.GetLatestKey());
                var sub   = new FirebaseSubscription <T>(observer, query, this.elementRoot, this.firebaseCache);
                sub.ExceptionThrown += this.StreamingExceptionThrown;

                return(new CompositeDisposable(sub.Run(), completeDisposable));
            }

            return(completeDisposable);
        }