Файл: gapps/vendor/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php
Строк: 374
<?php
namespace IlluminateQueue;
use IlluminateQueueClosure;
use IlluminateSupportServiceProvider;
use IlluminateQueueConsoleWorkCommand;
use IlluminateQueueConsoleListenCommand;
use IlluminateQueueConsoleRestartCommand;
use IlluminateQueueConnectorsSqsConnector;
use IlluminateQueueConnectorsNullConnector;
use IlluminateQueueConnectorsSyncConnector;
use IlluminateQueueConnectorsRedisConnector;
use IlluminateQueueFailedNullFailedJobProvider;
use IlluminateQueueConnectorsDatabaseConnector;
use IlluminateQueueConnectorsBeanstalkdConnector;
use IlluminateQueueFailedDatabaseFailedJobProvider;
class QueueServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = true;
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerManager();
$this->registerWorker();
$this->registerListener();
$this->registerFailedJobServices();
$this->registerQueueClosure();
}
/**
* Register the queue manager.
*
* @return void
*/
protected function registerManager()
{
$this->app->singleton('queue', function ($app) {
// Once we have an instance of the queue manager, we will register the various
// resolvers for the queue connectors. These connectors are responsible for
// creating the classes that accept queue configs and instantiate queues.
$manager = new QueueManager($app);
$this->registerConnectors($manager);
return $manager;
});
$this->app->singleton('queue.connection', function ($app) {
return $app['queue']->connection();
});
}
/**
* Register the queue worker.
*
* @return void
*/
protected function registerWorker()
{
$this->registerWorkCommand();
$this->registerRestartCommand();
$this->app->singleton('queue.worker', function ($app) {
return new Worker($app['queue'], $app['queue.failer'], $app['events']);
});
}
/**
* Register the queue worker console command.
*
* @return void
*/
protected function registerWorkCommand()
{
$this->app->singleton('command.queue.work', function ($app) {
return new WorkCommand($app['queue.worker']);
});
$this->commands('command.queue.work');
}
/**
* Register the queue listener.
*
* @return void
*/
protected function registerListener()
{
$this->registerListenCommand();
$this->app->singleton('queue.listener', function ($app) {
return new Listener($app->basePath());
});
}
/**
* Register the queue listener console command.
*
* @return void
*/
protected function registerListenCommand()
{
$this->app->singleton('command.queue.listen', function ($app) {
return new ListenCommand($app['queue.listener']);
});
$this->commands('command.queue.listen');
}
/**
* Register the queue restart console command.
*
* @return void
*/
public function registerRestartCommand()
{
$this->app->singleton('command.queue.restart', function () {
return new RestartCommand;
});
$this->commands('command.queue.restart');
}
/**
* Register the connectors on the queue manager.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
public function registerConnectors($manager)
{
foreach (['Null', 'Sync', 'Database', 'Beanstalkd', 'Redis', 'Sqs'] as $connector) {
$this->{"register{$connector}Connector"}($manager);
}
}
/**
* Register the Null queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerNullConnector($manager)
{
$manager->addConnector('null', function () {
return new NullConnector;
});
}
/**
* Register the Sync queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerSyncConnector($manager)
{
$manager->addConnector('sync', function () {
return new SyncConnector;
});
}
/**
* Register the Beanstalkd queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerBeanstalkdConnector($manager)
{
$manager->addConnector('beanstalkd', function () {
return new BeanstalkdConnector;
});
}
/**
* Register the database queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerDatabaseConnector($manager)
{
$manager->addConnector('database', function () {
return new DatabaseConnector($this->app['db']);
});
}
/**
* Register the Redis queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerRedisConnector($manager)
{
$app = $this->app;
$manager->addConnector('redis', function () use ($app) {
return new RedisConnector($app['redis']);
});
}
/**
* Register the Amazon SQS queue connector.
*
* @param IlluminateQueueQueueManager $manager
* @return void
*/
protected function registerSqsConnector($manager)
{
$manager->addConnector('sqs', function () {
return new SqsConnector;
});
}
/**
* Register the failed job services.
*
* @return void
*/
protected function registerFailedJobServices()
{
$this->app->singleton('queue.failer', function ($app) {
$config = $app['config']['queue.failed'];
if (isset($config['table'])) {
return new DatabaseFailedJobProvider($app['db'], $config['database'], $config['table']);
} else {
return new NullFailedJobProvider;
}
});
}
/**
* Register the Illuminate queued closure job.
*
* @return void
*/
protected function registerQueueClosure()
{
$this->app->singleton('IlluminateQueueClosure', function ($app) {
return new IlluminateQueueClosure($app['encrypter']);
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [
'queue', 'queue.worker', 'queue.listener', 'queue.failer',
'command.queue.work', 'command.queue.listen',
'command.queue.restart', 'queue.connection',
];
}
}