File Manager Lite
Dir:
/home/codewavebd/public_html/vendor/laravel/framework/src/Illuminate/Bus
Upload
[..]
Batch.php (12.98 KB)
Edit
Rename
Del
BatchRepository.php (2.26 KB)
Edit
Rename
Del
Batchable.php (2.77 KB)
Edit
Rename
Del
ChainedBatch.php (3.84 KB)
Edit
Rename
Del
DebounceLock.php (4.54 KB)
Edit
Rename
Del
Dispatcher.php (9.7 KB)
Edit
Rename
Del
Events/
Rename
Del
LICENSE.md (1.05 KB)
Edit
Rename
Del
PendingBatch.php (11.05 KB)
Edit
Rename
Del
PrunableBatchRepository.php (318 B)
Edit
Rename
Del
composer.json (1001 B)
Edit
Rename
Del
Edit: ChainedBatch.php
<?php namespace Illuminate\Bus; use Illuminate\Container\Container; use Illuminate\Contracts\Bus\Dispatcher; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Collection; use Throwable; class ChainedBatch implements ShouldQueue { use Batchable, Dispatchable, InteractsWithQueue, Queueable; /** * The collection of batched jobs. * * @var \Illuminate\Support\Collection */ public Collection $jobs; /** * The name of the batch. * * @var string */ public string $name; /** * The batch options. * * @var array */ public array $options; /** * Create a new chained batch instance. * * @param \Illuminate\Bus\PendingBatch $batch */ public function __construct(PendingBatch $batch) { $this->jobs = static::prepareNestedBatches($batch->jobs); $this->name = $batch->name; $this->options = $batch->options; $this->queue = $batch->queue(); $this->connection = $batch->connection(); } /** * Prepare any nested batches within the given collection of jobs. * * @param \Illuminate\Support\Collection $jobs * @return \Illuminate\Support\Collection */ public static function prepareNestedBatches(Collection $jobs): Collection { return $jobs->filter()->values()->map(fn ($job) => match (true) { is_array($job) => static::prepareNestedBatches(new Collection($job))->all(), $job instanceof Collection => static::prepareNestedBatches($job), $job instanceof PendingBatch => new ChainedBatch($job), default => $job, }); } /** * Handle the job. * * @return void */ public function handle() { $this->attachRemainderOfChainToEndOfBatch( $this->toPendingBatch() )->dispatch(); } /** * Convert the chained batch instance into a pending batch. * * @return \Illuminate\Bus\PendingBatch */ public function toPendingBatch() { $batch = Container::getInstance()->make(Dispatcher::class)->batch($this->jobs); $batch->name = $this->name; $batch->options = $this->options; if ($this->queue) { $batch->onQueue($this->queue); } if ($this->connection) { $batch->onConnection($this->connection); } foreach ($this->chainCatchCallbacks ?? [] as $callback) { $batch->catch(function (Batch $batch, ?Throwable $exception) use ($callback) { if (! $batch->allowsFailures()) { $callback($exception); } }); } return $batch; } /** * Move the remainder of the chain to a "finally" batch callback. * * @param \Illuminate\Bus\PendingBatch $batch * @return \Illuminate\Bus\PendingBatch */ protected function attachRemainderOfChainToEndOfBatch(PendingBatch $batch) { if (is_array($this->chained) && ! empty($this->chained)) { $next = unserialize(array_shift($this->chained)); $next->chained = $this->chained; $next->onConnection($next->connection ?: $this->chainConnection); $next->onQueue($next->queue ?: $this->chainQueue); $next->chainConnection = $this->chainConnection; $next->chainQueue = $this->chainQueue; $next->chainCatchCallbacks = $this->chainCatchCallbacks; $batch->finally(function (Batch $batch) use ($next) { if (! $batch->cancelled()) { Container::getInstance()->make(Dispatcher::class)->dispatch($next); } }); $this->chained = []; } return $batch; } }
Simpan