Exemple #1
0
        internal void UpdateActive()
        {
            try {
                var batcherCount = 0;
                if (Batcher != null)
                {
                    batcherCount = Batcher.Count();
                }
                else
                {
                    Log.W(Tag, this + ": batcher object is null");
                }

                Boolean newActive = batcherCount > 0 || asyncTaskCount > 0;
                if (active != newActive)
                {
                    Log.D(Tag, this + " Progress: set active = " + newActive + " asyncTaskCount: " + asyncTaskCount + " batcherCount: " + batcherCount);
                    active = newActive;
                    NotifyChangeListeners();

                    if (!active)
                    {
                        if (!continuous)
                        {
                            Log.D(Tag, this + " since !continuous, calling stopped()");
                            Stopped();
                        }
                        else if (LastError != null) /*(revisionsFailed > 0)*/
                        {
                            string msg = string.Format("%s: Failed to xfer %d revisions, will retry in %d sec", this, revisionsFailed, RetryDelay);
                            Log.D(Tag, msg);
                            CancelPendingRetryIfReady();
                            ScheduleRetryIfReady();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Log.E(Tag, "Exception in updateActive()", e);
            }
        }
Exemple #2
0
        // The change tracker reached EOF or an error.
        public void ChangeTrackerStopped(ChangeTracker tracker)
        {
            Log.V(Tag, "ChangeTracker " + tracker + " stopped");
            if (LastError == null && tracker.Error != null)
            {
                SetLastError(tracker.Error);
            }
            changeTracker = null;
            if (Batcher != null)
            {
                Log.D(Tag, "calling batcher.flush().  batcher.count() is " + Batcher.Count());

                Batcher.FlushAll();
            }
            if (!Continuous)
            {
                WorkExecutor.StartNew(() =>
                {
                    AsyncTaskFinished(1);
                });
            }
        }
Exemple #3
0
        private void PauseOrResume()
        {
            var pending = 0;

            if (Batcher != null)
            {
                pending += Batcher.Count();
            }

            if (_pendingSequences != null)
            {
                pending += _pendingSequences.Count;
            }

            if (_changeTracker != null)
            {
#if __IOS__ || __ANDROID__ || UNITY
                _changeTracker.Paused = pending >= 200;
#else
                _changeTracker.Paused = pending >= 2000;
#endif
            }
        }
        // <-- TODO: why is this here?
        public void ChangeTrackerStopped(ChangeTracker tracker)
        {
            Log.W(Tag, this + ": ChangeTracker " + tracker + " stopped");
            if (LastError == null && tracker.GetLastError() != null)
            {
                LastError = tracker.GetLastError();
            }
            changeTracker = null;
            if (Batcher != null)
            {
                Log.D(Tag, this + ": calling batcher.flush().  batcher.count() is " + Batcher.Count());

                Batcher.Flush();
            }
            if (!Continuous)
            {
                var t = Task.Factory.StartNew(() =>
                {
                    Task inner = Task.Factory.StartNew(() => {});
                    return(inner);
                });

                WorkExecutor.StartNew(() =>
                {
                    AsyncTaskFinished(1);
                });
            }
        }