*/
class JobQueueMemory extends JobQueue {
/** @var array[] */
- protected static $data = array();
-
+ protected static $data = [];
+
+ /**
+ * @see JobQueue::doBatchPush
+ *
+ * @param IJobSpecification[] $jobs
+ * @param int $flags
+ */
protected function doBatchPush( array $jobs, $flags ) {
- $unclaimed =& $this->getQueueData( 'unclaimed', array() );
+ $unclaimed =& $this->getQueueData( 'unclaimed', [] );
- /** @var IJobSpecification[] $jobs */
foreach ( $jobs as $job ) {
if ( $job->ignoreDuplicates() ) {
$sha1 = Wikimedia\base_convert(
}
}
+ /**
+ * @see JobQueue::supportedOrders
+ *
+ * @return string[]
+ */
protected function supportedOrders() {
- return array( 'random', 'timestamp', 'fifo' );
+ return [ 'random', 'timestamp', 'fifo' ];
}
+ /**
+ * @see JobQueue::optimalOrder
+ *
+ * @return string
+ */
protected function optimalOrder() {
return 'fifo';
}
+ /**
+ * @see JobQueue::doIsEmpty
+ *
+ * @return bool
+ */
protected function doIsEmpty() {
return ( $this->doGetSize() == 0 );
}
+ /**
+ * @see JobQueue::doGetSize
+ *
+ * @return int
+ */
protected function doGetSize() {
$unclaimed = $this->getQueueData( 'unclaimed' );
return $unclaimed ? count( $unclaimed ) : 0;
}
+ /**
+ * @see JobQueue::doGetAcquiredCount
+ *
+ * @return int
+ */
protected function doGetAcquiredCount() {
$claimed = $this->getQueueData( 'claimed' );
return $claimed ? count( $claimed ) : 0;
}
+ /**
+ * @see JobQueue::doPop
+ *
+ * @return Job|bool
+ */
protected function doPop() {
if ( $this->doGetSize() == 0 ) {
return false;
}
$unclaimed =& $this->getQueueData( 'unclaimed' );
- $claimed =& $this->getQueueData( 'claimed', array() );
+ $claimed =& $this->getQueueData( 'claimed', [] );
if ( $this->order === 'random' ) {
$key = array_rand( $unclaimed );
return $job;
}
+ /**
+ * @see JobQueue::doAck
+ *
+ * @param Job $job
+ */
protected function doAck( Job $job ) {
if ( $this->getAcquiredCount() == 0 ) {
return;
unset( $claimed[$job->metadata['claimId']] );
}
+ /**
+ * @see JobQueue::doDelete
+ */
protected function doDelete() {
if ( isset( self::$data[$this->type][$this->wiki] ) ) {
unset( self::$data[$this->type][$this->wiki] );
}
}
+ /**
+ * @see JobQueue::getAllQueuedJobs
+ *
+ * @return Iterator of Job objects.
+ */
public function getAllQueuedJobs() {
$unclaimed = $this->getQueueData( 'unclaimed' );
if ( !$unclaimed ) {
- return new ArrayIterator( array() );
+ return new ArrayIterator( [] );
}
- $that = $this;
return new MappedIterator(
$unclaimed,
- function ( $value ) use ( $that ) {
- $that->jobFromSpecInternal( $value );
+ function ( $value ) {
+ $this->jobFromSpecInternal( $value );
}
);
}
+ /**
+ * @see JobQueue::getAllAcquiredJobs
+ *
+ * @return Iterator of Job objects.
+ */
public function getAllAcquiredJobs() {
$claimed = $this->getQueueData( 'claimed' );
if ( !$claimed ) {
- return new ArrayIterator( array() );
+ return new ArrayIterator( [] );
}
- $that = $this;
return new MappedIterator(
$claimed,
- function ( $value ) use ( $that ) {
- $that->jobFromSpecInternal( $value );
+ function ( $value ) {
+ $this->jobFromSpecInternal( $value );
}
);
}
+ /**
+ * @param IJobSpecification $spec
+ *
+ * @return Job
+ */
public function jobFromSpecInternal( IJobSpecification $spec ) {
return Job::factory( $spec->getType(), $spec->getTitle(), $spec->getParams() );
}
+ /**
+ * @param string $field
+ * @param mixed $init
+ *
+ * @return mixed
+ */
private function &getQueueData( $field, $init = null ) {
if ( !isset( self::$data[$this->type][$this->wiki][$field] ) ) {
if ( $init !== null ) {