/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller;
import com.emc.storageos.volumecontroller.impl.JobPollResult;
/**
* A Job
*/
public abstract class Job {
// A job is de-queued when it reaches a terminal condition
public static enum JobStatus {
IN_PROGRESS, // job is in progress
SUCCESS, // terminal condition
FAILED, // terminal condition
ERROR, // transient error condition (connection loss)
FATAL_ERROR // fatal error condition (ex. job was in error status for a long time (set to 2 hours now))
};
public static final long JOB_TRACKING_LIMIT = 24 * 60 * 60 * 1000; // tracking limit for jobs, 24 hours
private long pollingStartTime = 0L;
/**
* Determines job status
*
* @param jobContext
* @param trackingPeriodInMillis
* @return
*/
abstract public JobPollResult poll(JobContext jobContext, long trackingPeriodInMillis);
abstract public TaskCompleter getTaskCompleter();
public long getPollingStartTime() {
return pollingStartTime;
}
public void setPollingStartTime(long pollingStartTime) {
this.pollingStartTime = pollingStartTime;
}
}