diff --git a/src/MongoDB/ReadConcern.c b/src/MongoDB/ReadConcern.c index 0faf04a1f..e14c85433 100644 --- a/src/MongoDB/ReadConcern.c +++ b/src/MongoDB/ReadConcern.c @@ -79,6 +79,23 @@ static PHP_METHOD(ReadConcern, getLevel) RETURN_NULL(); } /* }}} */ +/* {{{ proto boolean MongoDB\Driver\ReadConcern::isDefault() + Returns whether the read concern has not been modified (i.e. constructed + without a level or from a Manager with no read concern URI options). */ +static PHP_METHOD(ReadConcern, isDefault) +{ + php_phongo_readconcern_t *intern; + SUPPRESS_UNUSED_WARNING(return_value_ptr) SUPPRESS_UNUSED_WARNING(return_value_used) + + intern = Z_READCONCERN_OBJ_P(getThis()); + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + RETURN_BOOL(mongoc_read_concern_is_default(intern->read_concern)); +} /* }}} */ + /* {{{ proto array MongoDB\Driver\ReadConcern::bsonSerialize() */ static PHP_METHOD(ReadConcern, bsonSerialize) @@ -104,6 +121,7 @@ ZEND_END_ARG_INFO() static zend_function_entry php_phongo_readconcern_me[] = { PHP_ME(ReadConcern, __construct, ai_ReadConcern___construct, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(ReadConcern, getLevel, ai_ReadConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) + PHP_ME(ReadConcern, isDefault, ai_ReadConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(ReadConcern, bsonSerialize, ai_ReadConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_FE_END }; diff --git a/src/MongoDB/WriteConcern.c b/src/MongoDB/WriteConcern.c index 746eac016..730d37076 100644 --- a/src/MongoDB/WriteConcern.c +++ b/src/MongoDB/WriteConcern.c @@ -158,6 +158,23 @@ static PHP_METHOD(WriteConcern, getJournal) RETURN_NULL(); } /* }}} */ +/* {{{ proto boolean MongoDB\Driver\WriteConcern::isDefault() + Returns whether the write concern has not been modified (i.e. from a Manager + with no write concern URI options). */ +static PHP_METHOD(WriteConcern, isDefault) +{ + php_phongo_writeconcern_t *intern; + SUPPRESS_UNUSED_WARNING(return_value_ptr) SUPPRESS_UNUSED_WARNING(return_value_used) + + intern = Z_WRITECONCERN_OBJ_P(getThis()); + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + RETURN_BOOL(mongoc_write_concern_is_default(intern->write_concern)); +} /* }}} */ + /* {{{ proto array MongoDB\Driver\WriteConcern::bsonSerialize() */ static PHP_METHOD(WriteConcern, bsonSerialize) @@ -187,6 +204,7 @@ static zend_function_entry php_phongo_writeconcern_me[] = { PHP_ME(WriteConcern, getW, ai_WriteConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(WriteConcern, getWtimeout, ai_WriteConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(WriteConcern, getJournal, ai_WriteConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) + PHP_ME(WriteConcern, isDefault, ai_WriteConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_ME(WriteConcern, bsonSerialize, ai_WriteConcern_void, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) PHP_FE_END }; diff --git a/src/libmongoc b/src/libmongoc index 9d1873fa8..8f7ac9829 160000 --- a/src/libmongoc +++ b/src/libmongoc @@ -1 +1 @@ -Subproject commit 9d1873fa87a4b6b4a11db30a44eebd35891532c6 +Subproject commit 8f7ac98294ecb22d244e29f7b9fab3997d1caf31 diff --git a/tests/readConcern/readconcern-isdefault-001.phpt b/tests/readConcern/readconcern-isdefault-001.phpt new file mode 100644 index 000000000..a63346ab4 --- /dev/null +++ b/tests/readConcern/readconcern-isdefault-001.phpt @@ -0,0 +1,38 @@ +--TEST-- +MongoDB\Driver\ReadConcern::isDefault() +--SKIPIF-- + +--FILE-- +getReadConcern(), + (new MongoDB\Driver\Manager(null, ['readconcernlevel' => 'local']))->getReadConcern(), + (new MongoDB\Driver\Manager(null, ['readconcernlevel' => '']))->getReadConcern(), + (new MongoDB\Driver\Manager)->getReadConcern(), +); + +foreach ($tests as $rc) { + var_dump($rc->isDefault()); +} + +?> +===DONE=== + +--EXPECT-- +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(true) +===DONE=== diff --git a/tests/writeConcern/writeconcern-isdefault-001.phpt b/tests/writeConcern/writeconcern-isdefault-001.phpt new file mode 100644 index 000000000..96c433478 --- /dev/null +++ b/tests/writeConcern/writeconcern-isdefault-001.phpt @@ -0,0 +1,28 @@ +--TEST-- +MongoDB\Driver\WriteConcern::isDefault() +--SKIPIF-- + +--FILE-- +getWriteConcern(), + (new MongoDB\Driver\Manager(null, ['w' => 1]))->getWriteConcern(), + (new MongoDB\Driver\Manager)->getWriteConcern(), +); + +foreach ($tests as $wc) { + var_dump($wc->isDefault()); +} + +?> +===DONE=== + +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(true) +===DONE===