static function (ContainerInterface $container) { $class = $container->get('pqueue.transport.class'); if (!is_subclass_of($class, TransportInterface::class)) { throw new \InvalidArgumentException("Invalid transport class provided"); } $options = $container->get('pqueue.transport.options'); return $class::create($options); }, PQueueHandlerFinder::class => static function (ContainerInterface $container) { $sources = $container->has('pqueue.handlers.sources') ? $container->get('pqueue.handlers.sources') : []; $classes = $container->has('pqueue.handlers.classes') ? $container->get('pqueue.handlers.classes') : []; return new PQueueHandlerFinder( array_merge($classes, $sources), $container->get('michel.environment') === 'dev' ? null : $container->get('pqueue.handlers.cache_dir') ); }, PQueueConsumerFactory::class => static function (ContainerInterface $container) { /** * @var PQueueHandlerFinder $finder */ $finder = $container->get(PQueueHandlerFinder::class); return new PQueueConsumerFactory(new ContainerHandlerResolver($container),$finder->find()); }, PQueueConsumer::class => static function (ContainerInterface $container) { /** * @var PQueueConsumerFactory $factory */ $factory = $container->get(PQueueConsumerFactory::class); return $factory->createConsumer(); } ]; } public function getParameters(): array { return [ 'pqueue.transport.class' => FilesystemTransport::class, 'pqueue.transport.options' => function (ContainerInterface $container) { return [ 'directory' => $container->get('michel.project_dir').DIRECTORY_SEPARATOR.'var/pqueue' ]; }, 'pqueue.handlers.sources' => function (ContainerInterface $container) { return [ $container->get('michel.project_dir').DIRECTORY_SEPARATOR.'src/MessageHandler' ]; }, 'pqueue.handlers.classes' => [], 'pqueue.handlers.cache_dir' => function (ContainerInterface $container) { return $container->get('michel.cache_dir'); }, ]; } public function getRoutes(): array { return []; } public function getControllerSources(): array { return []; } public function getListeners(): array { return []; } public function getCommandSources(): array { return [ PQueueWorkerRunCommand::class ]; } }