From 150795f999b552f1f8cc024d9aacfb399f95c247 Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Thu, 5 May 2011 15:06:00 +0200 Subject: [PATCH] Remove the key_distribution option and allow user-defined callbacks to initialize a cluster connection. --- examples/CustomDistributionStrategy.php | 5 ++- lib/Predis/Client.php | 3 +- lib/Predis/ClientOptions.php | 6 ++-- lib/Predis/Options/ClientClusterType.php | 33 -------------------- lib/Predis/Options/ClientKeyDistribution.php | 25 --------------- 5 files changed, 7 insertions(+), 65 deletions(-) delete mode 100644 lib/Predis/Options/ClientClusterType.php delete mode 100644 lib/Predis/Options/ClientKeyDistribution.php diff --git a/examples/CustomDistributionStrategy.php b/examples/CustomDistributionStrategy.php index 3845a022..03631aad 100644 --- a/examples/CustomDistributionStrategy.php +++ b/examples/CustomDistributionStrategy.php @@ -7,6 +7,7 @@ require 'SharedConfigurations.php'; // that implements the Predis\Distribution\IDistributionStrategy interface. use Predis\Distribution\IDistributionStrategy; +use Predis\Network\ConnectionCluster; class NaiveDistributionStrategy implements IDistributionStrategy { private $_nodes, $_nodesCount; @@ -42,7 +43,9 @@ class NaiveDistributionStrategy implements IDistributionStrategy { } $options = array( - 'key_distribution' => new NaiveDistributionStrategy(), + 'cluster' => function() { + return new ConnectionCluster(new NaiveDistributionStrategy()); + }, ); $redis = new Predis\Client($multiple_servers, $options); diff --git a/lib/Predis/Client.php b/lib/Predis/Client.php index ee1001a1..42f5b87a 100644 --- a/lib/Predis/Client.php +++ b/lib/Predis/Client.php @@ -46,8 +46,7 @@ class Client { } if (is_array($parameters)) { if (isset($parameters[0])) { - $clusterClass = $this->_options->cluster; - $cluster = new $clusterClass($this->_options->key_distribution); + $cluster = $this->_options->cluster; foreach ($parameters as $single) { $cluster->add($single instanceof IConnectionSingle ? $single : $this->createConnection($single) diff --git a/lib/Predis/ClientOptions.php b/lib/Predis/ClientOptions.php index 82b60d45..018cf89c 100644 --- a/lib/Predis/ClientOptions.php +++ b/lib/Predis/ClientOptions.php @@ -4,8 +4,7 @@ namespace Predis; use Predis\Options\IOption; use Predis\Options\ClientProfile; -use Predis\Options\ClientClusterType; -use Predis\Options\ClientKeyDistribution; +use Predis\Options\ClientCluster; use Predis\Options\ClientConnectionFactory; class ClientOptions { @@ -22,9 +21,8 @@ class ClientOptions { } self::$_sharedOptions = array( 'profile' => new ClientProfile(), - 'key_distribution' => new ClientKeyDistribution(), 'connections' => new ClientConnectionFactory(), - 'cluster' => new ClientClusterType(), + 'cluster' => new ClientCluster(), ); return self::$_sharedOptions; } diff --git a/lib/Predis/Options/ClientClusterType.php b/lib/Predis/Options/ClientClusterType.php deleted file mode 100644 index 4e8c8d0f..00000000 --- a/lib/Predis/Options/ClientClusterType.php +++ /dev/null @@ -1,33 +0,0 @@ -checkClass($value); - } - } - - private function checkClass($class) { - $reflection = new \ReflectionClass($class); - if (!$reflection->isSubclassOf(self::CLUSTER_INTERFACE)) { - throw new ClientException( - "The class $class is not a valid cluster connection" - ); - } - return $class; - } - - public function getDefault() { - return self::CLUSTER_PREDIS; - } -} diff --git a/lib/Predis/Options/ClientKeyDistribution.php b/lib/Predis/Options/ClientKeyDistribution.php deleted file mode 100644 index ed261394..00000000 --- a/lib/Predis/Options/ClientKeyDistribution.php +++ /dev/null @@ -1,25 +0,0 @@ -isSubclassOf('\Predis\Distribution\IDistributionStrategy')) { - return new $value; - } - } - throw new \InvalidArgumentException('Invalid value for key distribution'); - } - - public function getDefault() { - return new HashRing(); - } -}