*/
final public static function factory( array $params ) {
$class = $params['class'];
- if ( !MWInit::classExists( $class ) ) {
+ if ( !class_exists( $class ) ) {
throw new MWException( "Invalid job queue class '$class'." );
}
$obj = new $class( $params );
}
/**
- * @return string One of (random, timestamp, fifo)
+ * @return string One of (random, timestamp, fifo, undefined)
*/
final public function getOrder() {
return $this->order;
}
/**
- * @return Array Subset of (random, timestamp, fifo)
+ * @return bool Whether delayed jobs are enabled
+ * @since 1.22
+ */
+ final public function delayedJobsEnabled() {
+ return $this->checkDelay;
+ }
+
+ /**
+ * Get the allowed queue orders for configuration validation
+ *
+ * @return Array Subset of (random, timestamp, fifo, undefined)
*/
abstract protected function supportedOrders();
/**
- * @return string One of (random, timestamp, fifo)
+ * Get the default queue order to use if configuration does not specify one
+ *
+ * @return string One of (random, timestamp, fifo, undefined)
*/
abstract protected function optimalOrder();
/**
+ * Find out if delayed jobs are supported for configuration validation
+ *
* @return boolean Whether delayed jobs are supported
*/
protected function supportsDelayedJobs() {
return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, 'rootjob', $signature );
}
+ /**
+ * Deleted all unclaimed and delayed jobs from the queue
+ *
+ * @return bool Success
+ * @throws MWException
+ * @since 1.22
+ */
+ final public function delete() {
+ wfProfileIn( __METHOD__ );
+ $res = $this->doDelete();
+ wfProfileOut( __METHOD__ );
+ return $res;
+ }
+
+ /**
+ * @see JobQueue::delete()
+ * @return bool Success
+ */
+ protected function doDelete() {
+ throw new MWException( "This method is not implemented." );
+ }
+
/**
* Wait for any slaves or backup servers to catch up.
*
/**
* Get an iterator to traverse over all available jobs in this queue.
* This does not include jobs that are currently acquired or delayed.
- * This should only be called on a queue that is no longer being popped.
+ * Note: results may be stale if the queue is concurrently modified.
*
* @return Iterator
* @throws MWException
/**
* Get an iterator to traverse over all delayed jobs in this queue.
- * This should only be called on a queue that is no longer being popped.
+ * Note: results may be stale if the queue is concurrently modified.
*
* @return Iterator
* @throws MWException