| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- namespace Elastica\Connection;
- use Elastica\Client;
- use Elastica\Connection;
- use Elastica\Connection\Strategy\StrategyInterface;
- use Exception;
- /**
- * Description of ConnectionPool.
- *
- * @author chabior
- */
- class ConnectionPool
- {
- /**
- * @var array|\Elastica\Connection[] Connections array
- */
- protected $_connections;
- /**
- * @var \Elastica\Connection\Strategy\StrategyInterface Strategy for connection
- */
- protected $_strategy;
- /**
- * @var callback Function called on connection fail
- */
- protected $_callback;
- /**
- * @param array $connections
- * @param \Elastica\Connection\Strategy\StrategyInterface $strategy
- * @param callback $callback
- */
- public function __construct(array $connections, StrategyInterface $strategy, $callback = null)
- {
- $this->_connections = $connections;
- $this->_strategy = $strategy;
- $this->_callback = $callback;
- }
- /**
- * @param \Elastica\Connection $connection
- *
- * @return $this
- */
- public function addConnection(Connection $connection)
- {
- $this->_connections[] = $connection;
- return $this;
- }
- /**
- * @param array|\Elastica\Connection[] $connections
- *
- * @return $this
- */
- public function setConnections(array $connections)
- {
- $this->_connections = $connections;
- return $this;
- }
- /**
- * @return bool
- */
- public function hasConnection()
- {
- foreach ($this->_connections as $connection) {
- if ($connection->isEnabled()) {
- return true;
- }
- }
- return false;
- }
- /**
- * @return array
- */
- public function getConnections()
- {
- return $this->_connections;
- }
- /**
- * @throws \Elastica\Exception\ClientException
- *
- * @return \Elastica\Connection
- */
- public function getConnection()
- {
- return $this->_strategy->getConnection($this->getConnections());
- }
- /**
- * @param \Elastica\Connection $connection
- * @param \Exception $e
- * @param Client $client
- */
- public function onFail(Connection $connection, Exception $e, Client $client)
- {
- $connection->setEnabled(false);
- if ($this->_callback) {
- call_user_func($this->_callback, $connection, $e, $client);
- }
- }
- /**
- * @return \Elastica\Connection\Strategy\StrategyInterface
- */
- public function getStrategy()
- {
- return $this->_strategy;
- }
- }
|