Add the ability to get a connection by alias from aggregated connections.

Previously it was possible to create a new instance of Predis\Client using
the alias of a single connection in a cluster of connections. Now we added
the ability to do this also when using master/slave replication.
This commit is contained in:
Daniele Alessandri
2011-12-18 15:07:21 +01:00
parent 5148ce16c6
commit bdbbe18e6c
3 changed files with 15 additions and 3 deletions
+2 -2
View File
@@ -196,8 +196,8 @@ class Client
public function getConnection($id = null)
{
if (isset($id)) {
if (!Helpers::isCluster($this->connection)) {
$message = 'Retrieving connections by alias is supported only with clustered connections';
if (!Helpers::isAggregated($this->connection)) {
$message = 'Retrieving connections by alias is supported only with aggregated connections (cluster or replication)';
throw new NotSupportedException($message);
}
return $this->connection->getConnectionById($id);
+12
View File
@@ -13,6 +13,7 @@ namespace Predis;
use Predis\Network\IConnection;
use Predis\Network\IConnectionCluster;
use Predis\Network\IConnectionReplication;
/**
* Defines a few helper methods.
@@ -21,6 +22,17 @@ use Predis\Network\IConnectionCluster;
*/
class Helpers
{
/**
* Checks if the specified connection represents an aggregation of connections.
*
* @param IConnection $connection Connection object.
* @return Boolean
*/
public static function isAggregated(IConnection $connection)
{
return $connection instanceof IConnectionCluster || $connection instanceof IConnectionReplication;
}
/**
* Checks if the specified connection represents a cluster.
*
+1 -1
View File
@@ -385,7 +385,7 @@ class ClientTest extends StandardTestCase
/**
* @group disconnected
* @expectedException Predis\NotSupportedException
* @expectedExceptionMessage Retrieving connections by alias is supported only with clustered connections
* @expectedExceptionMessage Retrieving connections by alias is supported only with aggregated connections (cluster or replication)
*/
public function testGetConnectionWithAliasWorksOnlyWithCluster()
{