diff options
Diffstat (limited to 'vendor/ruflin/elastica/lib/Elastica/Node.php')
-rw-r--r-- | vendor/ruflin/elastica/lib/Elastica/Node.php | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/vendor/ruflin/elastica/lib/Elastica/Node.php b/vendor/ruflin/elastica/lib/Elastica/Node.php new file mode 100644 index 00000000..1453418d --- /dev/null +++ b/vendor/ruflin/elastica/lib/Elastica/Node.php @@ -0,0 +1,161 @@ +<?php +namespace Elastica; + +use Elastica\Node\Info; +use Elastica\Node\Stats; + +/** + * Elastica cluster node object. + * + * @author Nicolas Ruflin <spam@ruflin.com> + */ +class Node +{ + /** + * Client. + * + * @var \Elastica\Client + */ + protected $_client = null; + + /** + * @var string Unique node id + */ + protected $_id = ''; + + /** + * Node name. + * + * @var string Node name + */ + protected $_name = ''; + + /** + * Node stats. + * + * @var \Elastica\Node\Stats Node Stats + */ + protected $_stats = null; + + /** + * Node info. + * + * @var \Elastica\Node\Info Node info + */ + protected $_info = null; + + /** + * Create a new node object. + * + * @param string $id Node id or name + * @param \Elastica\Client $client Node object + */ + public function __construct($id, Client $client) + { + $this->_client = $client; + $this->setId($id); + } + + /** + * @return string Unique node id. Can also be name if id not exists. + */ + public function getId() + { + return $this->_id; + } + + /** + * @param string $id Node id + * + * @return $this Refreshed object + */ + public function setId($id) + { + $this->_id = $id; + + return $this->refresh(); + } + + /** + * Get the name of the node. + * + * @return string Node name + */ + public function getName() + { + if (empty($this->_name)) { + $this->_name = $this->getInfo()->getName(); + } + + return $this->_name; + } + + /** + * Returns the current client object. + * + * @return \Elastica\Client Client + */ + public function getClient() + { + return $this->_client; + } + + /** + * Return stats object of the current node. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html + * + * @return \Elastica\Node\Stats Node stats + */ + public function getStats() + { + if (!$this->_stats) { + $this->_stats = new Stats($this); + } + + return $this->_stats; + } + + /** + * Return info object of the current node. + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-info.html + * + * @return \Elastica\Node\Info Node info object + */ + public function getInfo() + { + if (!$this->_info) { + $this->_info = new Info($this); + } + + return $this->_info; + } + + /** + * Refreshes all node information. + * + * This should be called after updating a node to refresh all information + */ + public function refresh() + { + $this->_stats = null; + $this->_info = null; + } + + /** + * Shuts this node down. + * + * @param string $delay OPTIONAL Delay after which node is shut down (default = 1s) + * + * @return \Elastica\Response + * + * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-shutdown.html + */ + public function shutdown($delay = '1s') + { + $path = '_cluster/nodes/'.$this->getId().'/_shutdown?delay='.$delay; + + return $this->_client->request($path, Request::POST); + } +} |