/// <summary>
        /// Implements the updating of the <see cref="Rows"/> collection.
        /// </summary>
        private void Update()
        {
            _willUpdate = false;
            long lastSequence = Database.GetLastSequenceNumber();

            if (_rows != null && _lastSequence >= lastSequence)
            {
                return; // db hasn't changed since last query
            }

            if (_isUpdatingAtSequence > 0)
            {
                // Update already in progress; only schedule another one if db has changed since
                if (_isUpdatingAtSequence < lastSequence)
                {
                    _isUpdatingAtSequence = lastSequence;
                    _updateAgain          = true;
                    return;
                }
            }


            if (!_runningState)
            {
                Log.To.Query.D(TAG, "Update called, but running state == false.  Ignoring.");
                return;
            }

            _updateAgain           = false;
            _isUpdatingAtSequence  = lastSequence;
            _lastUpdatedAt         = DateTime.Now;
            UpdateQueryTokenSource = new CancellationTokenSource();

            Log.To.TaskScheduling.V(TAG, "Scheduling query run...");
            UpdateQueryTask = Task.Factory.StartNew <QueryEnumerator>(base.Run, UpdateQueryTokenSource.Token)
                              .ContinueWith(UpdateFinished, _eventContext.Scheduler);
        }
 public virtual bool IsStale()
 {
     return(sequenceNumber < database.GetLastSequenceNumber());
 }
Example #3
0
 public bool IsStale()
 {
     return(GetLastSequenceIndexed() < database.GetLastSequenceNumber());
 }
 public bool IsStale()
 {
     return(SequenceNumber < _database.GetLastSequenceNumber());
 }