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); } }
// 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); }); } }
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); }); } }