@@ -196,6 +196,28 @@ static bool php_phongo_readpreference_init_from_hash(php_phongo_readpreference_t
196
196
return false;
197
197
} /* }}} */
198
198
199
+ static const char * php_phongo_readpreference_get_mode_string (mongoc_read_mode_t mode TSRMLS_DC ) /* {{{ */
200
+ {
201
+ switch (mode ) {
202
+ case MONGOC_READ_PRIMARY :
203
+ return PHONGO_READ_PRIMARY ;
204
+ case MONGOC_READ_PRIMARY_PREFERRED :
205
+ return PHONGO_READ_PRIMARY_PREFERRED ;
206
+ case MONGOC_READ_SECONDARY :
207
+ return PHONGO_READ_SECONDARY ;
208
+ case MONGOC_READ_SECONDARY_PREFERRED :
209
+ return PHONGO_READ_SECONDARY_PREFERRED ;
210
+ case MONGOC_READ_NEAREST :
211
+ return PHONGO_READ_NEAREST ;
212
+ default :
213
+ /* Should never happen, but if it does: exception */
214
+ phongo_throw_exception (PHONGO_ERROR_LOGIC TSRMLS_CC , "Mode '%d' should never have been passed to php_phongo_readpreference_get_mode_string, please file a bug report" , mode );
215
+ break ;
216
+ }
217
+
218
+ return NULL ;
219
+ } /* }}} */
220
+
199
221
/* {{{ proto void MongoDB\Driver\ReadPreference::__construct(int|string $mode[, array $tagSets = array()[, array $options = array()]])
200
222
Constructs a new ReadPreference */
201
223
static PHP_METHOD (ReadPreference , __construct )
@@ -349,6 +371,28 @@ static PHP_METHOD(ReadPreference, getMode)
349
371
RETURN_LONG (mongoc_read_prefs_get_mode (intern -> read_preference ));
350
372
} /* }}} */
351
373
374
+ /* {{{ proto string MongoDB\Driver\ReadPreference::getModeString()
375
+ Returns the ReadPreference mode as string */
376
+ static PHP_METHOD (ReadPreference , getModeString )
377
+ {
378
+ php_phongo_readpreference_t * intern ;
379
+ const char * mode_string ;
380
+
381
+ intern = Z_READPREFERENCE_OBJ_P (getThis ());
382
+
383
+ if (zend_parse_parameters_none () == FAILURE ) {
384
+ return ;
385
+ }
386
+
387
+ mode_string = php_phongo_readpreference_get_mode_string (mongoc_read_prefs_get_mode (intern -> read_preference ) TSRMLS_CC );
388
+ if (!mode_string ) {
389
+ /* Exception already thrown */
390
+ return ;
391
+ }
392
+
393
+ PHONGO_RETURN_STRING (mode_string );
394
+ } /* }}} */
395
+
352
396
/* {{{ proto array MongoDB\Driver\ReadPreference::getTagSets()
353
397
Returns the ReadPreference tag sets */
354
398
static PHP_METHOD (ReadPreference , getTagSets )
@@ -384,26 +428,6 @@ static PHP_METHOD(ReadPreference, getTagSets)
384
428
}
385
429
} /* }}} */
386
430
387
- static const char * php_phongo_readpreference_get_mode_string (mongoc_read_mode_t mode ) /* {{{ */
388
- {
389
- switch (mode ) {
390
- case MONGOC_READ_PRIMARY :
391
- return PHONGO_READ_PRIMARY ;
392
- case MONGOC_READ_PRIMARY_PREFERRED :
393
- return PHONGO_READ_PRIMARY_PREFERRED ;
394
- case MONGOC_READ_SECONDARY :
395
- return PHONGO_READ_SECONDARY ;
396
- case MONGOC_READ_SECONDARY_PREFERRED :
397
- return PHONGO_READ_SECONDARY_PREFERRED ;
398
- case MONGOC_READ_NEAREST :
399
- return PHONGO_READ_NEAREST ;
400
- default : /* Do nothing */
401
- break ;
402
- }
403
-
404
- return NULL ;
405
- } /* }}} */
406
-
407
431
static HashTable * php_phongo_readpreference_get_properties_hash (zval * object , bool is_debug TSRMLS_DC ) /* {{{ */
408
432
{
409
433
php_phongo_readpreference_t * intern ;
@@ -422,7 +446,7 @@ static HashTable* php_phongo_readpreference_get_properties_hash(zval* object, bo
422
446
423
447
tags = mongoc_read_prefs_get_tags (intern -> read_preference );
424
448
mode = mongoc_read_prefs_get_mode (intern -> read_preference );
425
- modeString = php_phongo_readpreference_get_mode_string (mode );
449
+ modeString = php_phongo_readpreference_get_mode_string (mode TSRMLS_CC );
426
450
427
451
if (modeString ) {
428
452
#if PHP_VERSION_ID >= 70000
@@ -516,7 +540,7 @@ static PHP_METHOD(ReadPreference, serialize)
516
540
517
541
tags = mongoc_read_prefs_get_tags (intern -> read_preference );
518
542
mode = mongoc_read_prefs_get_mode (intern -> read_preference );
519
- modeString = php_phongo_readpreference_get_mode_string (mode );
543
+ modeString = php_phongo_readpreference_get_mode_string (mode TSRMLS_CC );
520
544
maxStalenessSeconds = mongoc_read_prefs_get_max_staleness_seconds (intern -> read_preference );
521
545
522
546
#if PHP_VERSION_ID >= 70000
@@ -644,6 +668,7 @@ static zend_function_entry php_phongo_readpreference_me[] = {
644
668
PHP_ME (ReadPreference , __set_state , ai_ReadPreference___set_state , ZEND_ACC_PUBLIC | ZEND_ACC_STATIC )
645
669
PHP_ME (ReadPreference , getMaxStalenessSeconds , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
646
670
PHP_ME (ReadPreference , getMode , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
671
+ PHP_ME (ReadPreference , getModeString , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
647
672
PHP_ME (ReadPreference , getTagSets , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
648
673
PHP_ME (ReadPreference , bsonSerialize , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
649
674
PHP_ME (ReadPreference , serialize , ai_ReadPreference_void , ZEND_ACC_PUBLIC | ZEND_ACC_FINAL )
0 commit comments