Explorar el Código

Report correct state in getHosts()

Andreas Braun hace 10 años
padre
commit
36e6897451
Se han modificado 2 ficheros con 24 adiciones y 11 borrados
  1. 23 10
      lib/Mongo/MongoClient.php
  2. 1 1
      tests/Alcaeus/MongoDbAdapter/MongoClientTest.php

+ 23 - 10
lib/Mongo/MongoClient.php

@@ -180,21 +180,34 @@ class MongoClient
     public function getHosts()
     public function getHosts()
     {
     {
         $this->forceConnect();
         $this->forceConnect();
-        $servers = $this->manager->getServers();
-        $results = [];
-        foreach ($servers as $server) {
+
+        $servers = [];
+        foreach ($this->manager->getServers() as $server) {
             $key = sprintf('%s:%d', $server->getHost(), $server->getPort());
             $key = sprintf('%s:%d', $server->getHost(), $server->getPort());
             $info = $server->getInfo();
             $info = $server->getInfo();
-            $results[$key] = [
-                'host'     => $server->getHost(),
-                'port'     => $server->getPort(),
-                'health'   => (int)$info['ok'], // Not totally sure about this
-                'state'    => $server->getType(),
-                'ping'     => $server->getLatency(),
+
+            switch ($server->getType()) {
+                case \MongoDB\Driver\Server::TYPE_RS_PRIMARY:
+                    $state = 1;
+                    break;
+                case \MongoDB\Driver\Server::TYPE_RS_SECONDARY:
+                    $state = 2;
+                    break;
+                default:
+                    $state = 0;
+            }
+
+            $servers[$key] = [
+                'host' => $server->getHost(),
+                'port' => $server->getPort(),
+                'health' => (int) $info['ok'],
+                'state' => $state,
+                'ping' => $server->getLatency(),
                 'lastPing' => null,
                 'lastPing' => null,
             ];
             ];
         }
         }
-        return $results;
+
+        return $servers;
     }
     }
 
 
     /**
     /**

+ 1 - 1
tests/Alcaeus/MongoDbAdapter/MongoClientTest.php

@@ -55,7 +55,7 @@ class MongoClientTest extends TestCase
                     'host' => 'localhost',
                     'host' => 'localhost',
                     'port' => 27017,
                     'port' => 27017,
                     'health' => 1,
                     'health' => 1,
-                    'state' => 1,
+                    'state' => 0,
                 ],
                 ],
             ],
             ],
             $client->getHosts()
             $client->getHosts()