com.path.android.jobqueue
Interface JobQueue

All Known Implementing Classes:
CachedJobQueue, NonPersistentPriorityQueue, SqliteJobQueue

public interface JobQueue

Interface that any JobQueue should implement These job queues can be given to JobManager.


Method Summary
 void clear()
          clear all jobs in the queue.
 int count()
          Returns the # of jobs that are waiting to be run
 int countReadyJobs(boolean hasNetwork, java.util.Collection<java.lang.String> excludeGroups)
          counts the # of jobs that can run now.
 JobHolder findJobById(long id)
          returns the job with the given id if it exists in the queue
 java.lang.Long getNextJobDelayUntilNs(boolean hasNetwork)
          returns when the next job should run (in nanoseconds), should return null if there are no jobs to run.
 long insert(JobHolder jobHolder)
          Inserts the given JobHolder, assigns it a unique id and returns the id back Is called when a job is added
 long insertOrReplace(JobHolder jobHolder)
          Does the same thing with insert but the only difference is that if job has an ID, it should replace the existing one should also reset running session id to JobManager.NOT_RUNNING_SESSION_ID Is called when a job is re-added (due to exception during run)
 JobHolder nextJobAndIncRunCount(boolean hasNetwork, java.util.Collection<java.lang.String> excludeGroups)
          Returns the next available job in the data set It should also assign the sessionId as the RunningSessionId and persist that data if necessary.
 void remove(JobHolder jobHolder)
          Removes the job from the data store.
 

Method Detail

insert

long insert(JobHolder jobHolder)
Inserts the given JobHolder, assigns it a unique id and returns the id back Is called when a job is added

Parameters:
jobHolder -
Returns:

insertOrReplace

long insertOrReplace(JobHolder jobHolder)
Does the same thing with insert but the only difference is that if job has an ID, it should replace the existing one should also reset running session id to JobManager.NOT_RUNNING_SESSION_ID Is called when a job is re-added (due to exception during run)

Parameters:
jobHolder -
Returns:

remove

void remove(JobHolder jobHolder)
Removes the job from the data store. Is called after a job is completed (or cancelled)

Parameters:
jobHolder -

count

int count()
Returns the # of jobs that are waiting to be run

Returns:

countReadyJobs

int countReadyJobs(boolean hasNetwork,
                   java.util.Collection<java.lang.String> excludeGroups)
counts the # of jobs that can run now. if there are more jobs from the same group, they are count as 1 since they cannot be run in parallel exclude groups are guaranteed to be ordered in natural order

Returns:

nextJobAndIncRunCount

JobHolder nextJobAndIncRunCount(boolean hasNetwork,
                                java.util.Collection<java.lang.String> excludeGroups)
Returns the next available job in the data set It should also assign the sessionId as the RunningSessionId and persist that data if necessary. It should filter out all running jobs and exclude groups are guaranteed to be ordered in natural order

Parameters:
hasNetwork - if true, should return any job, if false, should return jobs that do NOT require network
excludeGroups - if provided, jobs from these groups will NOT be returned
Returns:

getNextJobDelayUntilNs

java.lang.Long getNextJobDelayUntilNs(boolean hasNetwork)
returns when the next job should run (in nanoseconds), should return null if there are no jobs to run.

Parameters:
hasNetwork - if true, should return nanoseconds for any job, if false, should return nanoseconds for next job's delay until.
Returns:

clear

void clear()
clear all jobs in the queue. should probably be called when user logs out.


findJobById

JobHolder findJobById(long id)
returns the job with the given id if it exists in the queue

Parameters:
id - id of the job, returned by insert method
Returns:
JobHolder with the given id or null if it does not exists