29
29
#include <mongoc.h>
30
30
#include <mongoc-client-private.h>
31
31
#include <mongoc-host-list-private.h>
32
- #include <mongoc-server-description-private.h>
33
32
34
33
/* PHP Core stuff */
35
34
#include <php.h>
@@ -201,8 +200,8 @@ PHP_METHOD(Manager, getReadPreference)
201
200
PHP_METHOD (Manager , getServers )
202
201
{
203
202
php_phongo_manager_t * intern ;
204
- mongoc_set_t * set ;
205
- size_t i ;
203
+ mongoc_server_description_t * * sds ;
204
+ size_t i , n = 0 ;
206
205
SUPPRESS_UNUSED_WARNING (return_value_ptr ) SUPPRESS_UNUSED_WARNING (return_value_used )
207
206
208
207
@@ -212,31 +211,25 @@ PHP_METHOD(Manager, getServers)
212
211
return ;
213
212
}
214
213
215
- array_init (return_value );
216
- set = intern -> client -> topology -> description .servers ;
217
- for (i = 0 ; i < set -> items_len ; i ++ ) {
214
+ sds = mongoc_client_get_server_descriptions (intern -> client , & n );
215
+ array_init_size (return_value , n );
216
+
217
+ for (i = 0 ; i < n ; i ++ ) {
218
218
#if PHP_VERSION_ID >= 70000
219
219
zval obj ;
220
- #else
221
- zval * obj = NULL ;
222
- #endif
223
-
224
- mongoc_server_description_t * sd = (mongoc_server_description_t * ) set -> items [i ].item ;
225
220
226
- if (sd -> type == MONGOC_SERVER_UNKNOWN ) {
227
- continue ;
228
- }
229
-
230
- #if PHP_VERSION_ID >= 70000
231
- phongo_server_init (& obj , intern -> client , ((mongoc_server_description_t * )set -> items [i ].item )-> id TSRMLS_CC );
221
+ phongo_server_init (& obj , intern -> client , mongoc_server_description_id (sds [i ]) TSRMLS_CC );
232
222
add_next_index_zval (return_value , & obj );
233
223
#else
234
- MAKE_STD_ZVAL ( obj ) ;
224
+ zval * obj = NULL ;
235
225
236
- phongo_server_init (obj , intern -> client , sd -> id TSRMLS_CC );
226
+ MAKE_STD_ZVAL (obj );
227
+ phongo_server_init (obj , intern -> client , mongoc_server_description_id (sds [i ]) TSRMLS_CC );
237
228
add_next_index_zval (return_value , obj );
238
229
#endif
239
230
}
231
+
232
+ mongoc_server_descriptions_destroy_all (sds , n );
240
233
}
241
234
/* }}} */
242
235
/* {{{ proto MongoDB\Driver\WriteConcern Manager::getWriteConcern()
@@ -416,62 +409,57 @@ phongo_create_object_retval php_phongo_manager_create_object(zend_class_entry *c
416
409
#endif
417
410
} /* }}} */
418
411
419
- bool phongo_add_server_debug (void * item , void * ctx ) /* {{{ */
420
- {
421
- mongoc_server_description_t * server = item ;
422
- zval * retval = ctx ;
423
- #if PHP_VERSION_ID >= 70000
424
- zval entry ;
425
-
426
- php_phongo_server_to_zval (& entry , server );
427
- add_next_index_zval (retval , & entry );
428
- #else
429
- zval * entry = NULL ;
430
-
431
- MAKE_STD_ZVAL (entry );
432
- php_phongo_server_to_zval (entry , server );
433
- add_next_index_zval (retval , entry );
434
- #endif
435
-
436
- return true;
437
- } /* }}} */
438
-
439
412
HashTable * php_phongo_manager_get_debug_info (zval * object , int * is_temp TSRMLS_DC ) /* {{{ */
440
413
{
441
- php_phongo_manager_t * intern ;
414
+ php_phongo_manager_t * intern ;
415
+ mongoc_server_description_t * * sds ;
416
+ size_t i , n = 0 ;
442
417
#if PHP_VERSION_ID >= 70000
443
- zval retval ;
418
+ zval retval , cluster ;
444
419
#else
445
- zval retval = zval_used_for_init ;
420
+ zval retval = zval_used_for_init ;
421
+ zval * cluster = NULL ;
446
422
#endif
447
423
448
424
449
425
* is_temp = 1 ;
450
426
intern = Z_MANAGER_OBJ_P (object );
451
427
452
428
453
- array_init (& retval );
429
+ array_init_size (& retval , 2 );
454
430
455
431
ADD_ASSOC_STRING (& retval , "uri" , (char * )mongoc_uri_get_string (intern -> client -> uri ));
456
432
433
+ sds = mongoc_client_get_server_descriptions (intern -> client , & n );
457
434
458
- {
459
435
#if PHP_VERSION_ID >= 70000
460
- zval cluster ;
436
+ array_init_size (& cluster , n );
437
+
438
+ for (i = 0 ; i < n ; i ++ ) {
439
+ zval obj ;
461
440
462
- array_init (& cluster );
463
- mongoc_set_for_each (intern -> client -> topology -> description .servers , phongo_add_server_debug , & cluster );
464
- ADD_ASSOC_ZVAL_EX (& retval , "cluster" , & cluster );
441
+ php_phongo_server_to_zval (& obj , sds [i ]);
442
+ add_next_index_zval (& cluster , & obj );
443
+ }
444
+
445
+ ADD_ASSOC_ZVAL_EX (& retval , "cluster" , & cluster );
465
446
#else
466
- zval * cluster = NULL ;
447
+ MAKE_STD_ZVAL (cluster );
448
+ array_init_size (cluster , n );
467
449
468
- MAKE_STD_ZVAL (cluster );
469
- array_init (cluster );
470
- mongoc_set_for_each (intern -> client -> topology -> description .servers , phongo_add_server_debug , cluster );
471
- ADD_ASSOC_ZVAL_EX (& retval , "cluster" , cluster );
472
- #endif
450
+ for (i = 0 ; i < n ; i ++ ) {
451
+ zval * obj = NULL ;
452
+
453
+ MAKE_STD_ZVAL (obj );
454
+ php_phongo_server_to_zval (obj , sds [i ]);
455
+ add_next_index_zval (cluster , obj );
473
456
}
474
457
458
+ ADD_ASSOC_ZVAL_EX (& retval , "cluster" , cluster );
459
+ #endif
460
+
461
+ mongoc_server_descriptions_destroy_all (sds , n );
462
+
475
463
return Z_ARRVAL (retval );
476
464
} /* }}} */
477
465
/* }}} */
0 commit comments