![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework-message-queue/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\MessageQueue; /** * Factory class for @see \Magento\Framework\MessageQueue\ExchangeInterface * * @api * @since 103.0.0 */ class ExchangeFactory implements ExchangeFactoryInterface { /** * @var ExchangeFactoryInterface[] */ private $exchangeFactories; /** * @var ConnectionTypeResolver */ private $connectionTypeResolver; /** * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface * @since 103.0.0 */ protected $objectManager = null; /** * Initialize dependencies. * * @param ConnectionTypeResolver $connectionTypeResolver * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param ExchangeFactoryInterface[] $exchangeFactories */ public function __construct( ConnectionTypeResolver $connectionTypeResolver, \Magento\Framework\ObjectManagerInterface $objectManager, array $exchangeFactories = [] ) { $this->objectManager = $objectManager; $this->exchangeFactories = $exchangeFactories; $this->connectionTypeResolver = $connectionTypeResolver; } /** * {@inheritdoc} * @since 103.0.0 */ public function create($connectionName, array $data = []) { $connectionType = $this->connectionTypeResolver->getConnectionType($connectionName); if (!isset($this->exchangeFactories[$connectionType])) { throw new \LogicException("Not found exchange for connection name '{$connectionName}' in config"); } $factory = $this->exchangeFactories[$connectionType]; $exchange = $factory->create($connectionName, $data); if (!$exchange instanceof ExchangeInterface) { $exchangeInterface = \Magento\Framework\MessageQueue\ExchangeInterface::class; throw new \LogicException( "Exchange for connection name '{$connectionName}' " . "does not implement interface '{$exchangeInterface}'" ); } return $exchange; } }