com.path.android.jobqueue.nonPersistentQueue
Class TimeAwarePriorityQueue
java.lang.Object
com.path.android.jobqueue.nonPersistentQueue.MergedQueue
com.path.android.jobqueue.nonPersistentQueue.TimeAwarePriorityQueue
- All Implemented Interfaces:
- JobSet
public class TimeAwarePriorityQueue
- extends MergedQueue
This is a MergedQueue
class that can handle queue updates based on time.
It uses two queues, one for jobs that can run now and the other for jobs that should wait.
Upon retrieval, if it detects a job in delayed queue that can run now, it removes it from there, adds it to S0
and re-runs the operation. This is not very efficient but provides proper ordering for delayed jobs.
Constructor Summary |
TimeAwarePriorityQueue(int initialCapacity,
java.util.Comparator<JobHolder> comparator)
When retrieving jobs, considers current system nanotime to check if jobs are valid. |
Methods inherited from class com.path.android.jobqueue.nonPersistentQueue.MergedQueue |
clear, countReadyJobs, countReadyJobs, findById, offer, peek, peekFromQueue, poll, pollFromQueue, remove, size |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TimeAwarePriorityQueue
public TimeAwarePriorityQueue(int initialCapacity,
java.util.Comparator<JobHolder> comparator)
- When retrieving jobs, considers current system nanotime to check if jobs are valid. if both jobs are valid
or both jobs are invalid, returns based on regular comparison
- Parameters:
initialCapacity
- comparator
-
decideQueue
protected MergedQueue.SetId decideQueue(JobHolder jobHolder)
- Description copied from class:
MergedQueue
- decides which queue should the job holder go
if first queue, should return 0
if second queue, should return 1
is only called when an item is inserted. methods like remove always call both queues.
- Specified by:
decideQueue
in class MergedQueue
- Returns:
createQueue
protected JobSet createQueue(MergedQueue.SetId setId,
int initialCapacity,
java.util.Comparator<JobHolder> comparator)
- create a
PriorityQueue
with given comparator
- Specified by:
createQueue
in class MergedQueue
- Parameters:
setId
- initialCapacity
- comparator
-
- Returns:
countReadyJobs
public CountWithGroupIdsResult countReadyJobs(long now,
java.util.Collection<java.lang.String> excludeGroups)
countReadyJobs
public CountWithGroupIdsResult countReadyJobs(java.util.Collection<java.lang.String> excludeGroups)