123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
-
- namespace Illuminate\Queue\Jobs;
-
- use Illuminate\Queue\RedisQueue;
- use Illuminate\Container\Container;
- use Illuminate\Contracts\Queue\Job as JobContract;
-
- class RedisJob extends Job implements JobContract
- {
- /**
- * The Redis queue instance.
- *
- * @var \Illuminate\Queue\RedisQueue
- */
- protected $redis;
-
- /**
- * The Redis raw job payload.
- *
- * @var string
- */
- protected $job;
-
- /**
- * The JSON decoded version of "$job".
- *
- * @var array
- */
- protected $decoded;
-
- /**
- * The Redis job payload inside the reserved queue.
- *
- * @var string
- */
- protected $reserved;
-
- /**
- * Create a new job instance.
- *
- * @param \Illuminate\Container\Container $container
- * @param \Illuminate\Queue\RedisQueue $redis
- * @param string $job
- * @param string $reserved
- * @param string $connectionName
- * @param string $queue
- * @return void
- */
- public function __construct(Container $container, RedisQueue $redis, $job, $reserved, $connectionName, $queue)
- {
- // The $job variable is the original job JSON as it existed in the ready queue while
- // the $reserved variable is the raw JSON in the reserved queue. The exact format
- // of the reserved job is required in order for us to properly delete its data.
- $this->job = $job;
- $this->redis = $redis;
- $this->queue = $queue;
- $this->reserved = $reserved;
- $this->container = $container;
- $this->connectionName = $connectionName;
-
- $this->decoded = $this->payload();
- }
-
- /**
- * Get the raw body string for the job.
- *
- * @return string
- */
- public function getRawBody()
- {
- return $this->job;
- }
-
- /**
- * Delete the job from the queue.
- *
- * @return void
- */
- public function delete()
- {
- parent::delete();
-
- $this->redis->deleteReserved($this->queue, $this);
- }
-
- /**
- * Release the job back into the queue.
- *
- * @param int $delay
- * @return void
- */
- public function release($delay = 0)
- {
- parent::release($delay);
-
- $this->redis->deleteAndRelease($this->queue, $this, $delay);
- }
-
- /**
- * Get the number of times the job has been attempted.
- *
- * @return int
- */
- public function attempts()
- {
- return ($this->decoded['attempts'] ?? null) + 1;
- }
-
- /**
- * Get the job identifier.
- *
- * @return string
- */
- public function getJobId()
- {
- return $this->decoded['id'] ?? null;
- }
-
- /**
- * Get the underlying Redis factory implementation.
- *
- * @return \Illuminate\Contracts\Redis\Factory
- */
- public function getRedisQueue()
- {
- return $this->redis;
- }
-
- /**
- * Get the underlying reserved Redis job.
- *
- * @return string
- */
- public function getReservedJob()
- {
- return $this->reserved;
- }
- }
|