Skip to content

Commit 8b1624b

Browse files
committed
PHPC-189: Implement Manager->getServers()
1 parent 4da65af commit 8b1624b

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

src/MongoDB/Manager.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,10 @@ PHP_METHOD(Manager, executeDelete)
255255
Returns the Servers associated with this Manager */
256256
PHP_METHOD(Manager, getServers)
257257
{
258-
php_phongo_manager_t *intern;
258+
php_phongo_manager_t *intern;
259+
mongoc_set_t *set;
260+
size_t i;
261+
(void)return_value_ptr; (void)return_value_used;
259262

260263

261264
intern = (php_phongo_manager_t *)zend_object_store_get_object(getThis() TSRMLS_CC);
@@ -264,6 +267,16 @@ PHP_METHOD(Manager, getServers)
264267
return;
265268
}
266269

270+
array_init(return_value);
271+
set = intern->client->topology->description.servers;
272+
for(i=0; i<set->items_len; i++) {
273+
zval *obj = NULL;
274+
275+
MAKE_STD_ZVAL(obj);
276+
277+
phongo_server_init(obj, intern->client, ((mongoc_server_description_t *)set->items[i].item)->id);
278+
add_next_index_zval(return_value, obj);
279+
}
267280
}
268281
/* }}} */
269282

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
--TEST--
2+
MongoDB\Driver\Manager: getServers()
3+
--SKIPIF--
4+
<?php require "tests/utils/basic-skipif.inc"?>
5+
--FILE--
6+
<?php
7+
require_once "tests/utils/basic.inc";
8+
9+
$manager = new MongoDB\Driver\Manager(REPLICASET);
10+
11+
12+
$doc = array("example" => "document");
13+
$bulk = new \MongoDB\Driver\BulkWrite();
14+
$bulk->insert($doc);
15+
$wresult = $manager->executeBulkWrite(NS, $bulk);
16+
17+
18+
var_dump($manager->getServers());
19+
$servers = $manager->getServers();
20+
21+
foreach($servers as $server) {
22+
printf("%s:%d - primary: %d, secondary: %d, arbiter: %d\n", $server->getHost(), $server->getPort(), $server->isPrimary(), $server->isSecondary(), $server->isArbiter());
23+
}
24+
?>
25+
===DONE===
26+
<?php exit(0); ?>
27+
--EXPECTF--
28+
array(3) {
29+
[0]=>
30+
object(MongoDB\Driver\Server)#5 (0) {
31+
}
32+
[1]=>
33+
object(MongoDB\Driver\Server)#6 (0) {
34+
}
35+
[2]=>
36+
object(MongoDB\Driver\Server)#7 (0) {
37+
}
38+
}
39+
192.168.112.10:3000 - primary: 1, secondary: 0, arbiter: 0
40+
192.168.112.10:3001 - primary: 0, secondary: 1, arbiter: 0
41+
192.168.112.10:3002 - primary: 0, secondary: 0, arbiter: 1
42+
===DONE===

0 commit comments

Comments
 (0)