Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9ed2baf

Browse files
tanlisualcaeusjmikola
committed
PHPC-1805 and PHPC-1910: Implement ServerDescription class and Server::getServerDescription() (#1239)
Co-authored-by: Andreas Braun <git@alcaeus.org> Co-authored-by: Jeremy Mikola <jmikola@gmail.com>
1 parent 6f080aa commit 9ed2baf

18 files changed

+569
-1
lines changed

‎config.m4‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ if test "$PHP_MONGODB" != "no"; then
146146
src/MongoDB/ReadPreference.c \
147147
src/MongoDB/Server.c \
148148
src/MongoDB/ServerApi.c \
149+
src/MongoDB/ServerDescription.c \
149150
src/MongoDB/Session.c \
150151
src/MongoDB/WriteConcern.c \
151152
src/MongoDB/WriteConcernError.c \

‎config.w32‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ if (PHP_MONGODB != "no") {
120120
EXTENSION("mongodb", "php_phongo.c phongo_compat.c", null, PHP_MONGODB_CFLAGS);
121121
MONGODB_ADD_SOURCES("/src", "bson.c bson-encode.c phongo_apm.c phongo_ini.c");
122122
MONGODB_ADD_SOURCES("/src/BSON", "Binary.c BinaryInterface.c DBPointer.c Decimal128.c Decimal128Interface.c Int64.c Javascript.c JavascriptInterface.c MaxKey.c MaxKeyInterface.c MinKey.c MinKeyInterface.c ObjectId.c ObjectIdInterface.c Persistable.c Regex.c RegexInterface.c Serializable.c Symbol.c Timestamp.c TimestampInterface.c Type.c Undefined.c Unserializable.c UTCDateTime.c UTCDateTimeInterface.c functions.c");
123-
MONGODB_ADD_SOURCES("/src/MongoDB", "BulkWrite.c ClientEncryption.c Command.c Cursor.c CursorId.c CursorInterface.c Manager.c Query.c ReadConcern.c ReadPreference.c Server.c ServerApi.c Session.c WriteConcern.c WriteConcernError.c WriteError.c WriteResult.c");
123+
MONGODB_ADD_SOURCES("/src/MongoDB", "BulkWrite.c ClientEncryption.c Command.c Cursor.c CursorId.c CursorInterface.c Manager.c Query.c ReadConcern.c ReadPreference.c Server.c ServerApi.c ServerDescription.c Session.c WriteConcern.c WriteConcernError.c WriteError.c WriteResult.c");
124124
MONGODB_ADD_SOURCES("/src/MongoDB/Exception", "AuthenticationException.c BulkWriteException.c CommandException.c ConnectionException.c ConnectionTimeoutException.c EncryptionException.c Exception.c ExecutionTimeoutException.c InvalidArgumentException.c LogicException.c RuntimeException.c ServerException.c SSLConnectionException.c UnexpectedValueException.c WriteException.c");
125125
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c Subscriber.c functions.c");
126126
MONGODB_ADD_SOURCES("/src/libmongoc/src/common", PHP_MONGODB_COMMON_SOURCES);

‎php_phongo.c‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,17 @@ void phongo_server_init(zval* return_value, zval* manager, uint32_t server_id) /
358358
}
359359
/* }}} */
360360

361+
void phongo_serverdescription_init(zval* return_value, mongoc_server_description_t* server_description) /* {{{ */
362+
{
363+
php_phongo_serverdescription_t* intern;
364+
365+
object_init_ex(return_value, php_phongo_serverdescription_ce);
366+
367+
intern = Z_SERVERDESCRIPTION_OBJ_P(return_value);
368+
intern->server_description = server_description;
369+
}
370+
/* }}} */
371+
361372
void phongo_session_init(zval* return_value, zval* manager, mongoc_client_session_t* client_session) /* {{{ */
362373
{
363374
php_phongo_session_t* session;
@@ -3600,6 +3611,7 @@ PHP_MINIT_FUNCTION(mongodb)
36003611
php_phongo_readpreference_init_ce(INIT_FUNC_ARGS_PASSTHRU);
36013612
php_phongo_server_init_ce(INIT_FUNC_ARGS_PASSTHRU);
36023613
php_phongo_serverapi_init_ce(INIT_FUNC_ARGS_PASSTHRU);
3614+
php_phongo_serverdescription_init_ce(INIT_FUNC_ARGS_PASSTHRU);
36033615
php_phongo_session_init_ce(INIT_FUNC_ARGS_PASSTHRU);
36043616
php_phongo_writeconcern_init_ce(INIT_FUNC_ARGS_PASSTHRU);
36053617
php_phongo_writeconcernerror_init_ce(INIT_FUNC_ARGS_PASSTHRU);

‎php_phongo.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ zend_object_handlers* phongo_get_std_object_handlers(void);
117117

118118
void phongo_clientencryption_init(php_phongo_clientencryption_t* ce_obj, zval* manager, zval* options);
119119
void phongo_server_init(zval* return_value, zval* manager, uint32_t server_id);
120+
void phongo_serverdescription_init(zval* return_value, mongoc_server_description_t* serverDescription);
120121
void phongo_session_init(zval* return_value, zval* manager, mongoc_client_session_t* client_session);
121122
void phongo_objectid_init(zval* return_value, const bson_oid_t* oid);
122123
void phongo_readconcern_init(zval* return_value, const mongoc_read_concern_t* read_concern);
@@ -144,6 +145,7 @@ void php_phongo_read_preference_prep_tagsets(zval* tagSets);
144145
bool php_phongo_read_preference_tags_are_valid(const bson_t* tags);
145146

146147
bool php_phongo_server_to_zval(zval* retval, mongoc_client_t* client, mongoc_server_description_t* sd);
148+
bool php_phongo_server_description_to_zval(zval* retval, mongoc_server_description_t* sd);
147149
void php_phongo_read_concern_to_zval(zval* retval, const mongoc_read_concern_t* read_concern);
148150
void php_phongo_write_concern_to_zval(zval* retval, const mongoc_write_concern_t* write_concern);
149151

‎php_phongo_classes.h‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ static inline php_phongo_server_t* php_server_fetch_object(zend_object* obj)
6363
{
6464
return (php_phongo_server_t*) ((char*) obj - XtOffsetOf(php_phongo_server_t, std));
6565
}
66+
static inline php_phongo_serverdescription_t* php_serverdescription_fetch_object(zend_object* obj)
67+
{
68+
return (php_phongo_serverdescription_t*) ((char*) obj - XtOffsetOf(php_phongo_serverdescription_t, std));
69+
}
6670
static inline php_phongo_serverapi_t* php_serverapi_fetch_object(zend_object* obj)
6771
{
6872
return (php_phongo_serverapi_t*) ((char*) obj - XtOffsetOf(php_phongo_serverapi_t, std));
@@ -162,6 +166,7 @@ static inline php_phongo_commandsucceededevent_t* php_commandsucceededevent_fetc
162166
#define Z_READPREFERENCE_OBJ_P(zv) (php_readpreference_fetch_object(Z_OBJ_P(zv)))
163167
#define Z_SERVER_OBJ_P(zv) (php_server_fetch_object(Z_OBJ_P(zv)))
164168
#define Z_SERVERAPI_OBJ_P(zv) (php_serverapi_fetch_object(Z_OBJ_P(zv)))
169+
#define Z_SERVERDESCRIPTION_OBJ_P(zv) (php_serverdescription_fetch_object(Z_OBJ_P(zv)))
165170
#define Z_SESSION_OBJ_P(zv) (php_session_fetch_object(Z_OBJ_P(zv)))
166171
#define Z_BULKWRITE_OBJ_P(zv) (php_bulkwrite_fetch_object(Z_OBJ_P(zv)))
167172
#define Z_WRITECONCERN_OBJ_P(zv) (php_writeconcern_fetch_object(Z_OBJ_P(zv)))
@@ -195,6 +200,7 @@ static inline php_phongo_commandsucceededevent_t* php_commandsucceededevent_fetc
195200
#define Z_OBJ_READPREFERENCE(zo) (php_readpreference_fetch_object(zo))
196201
#define Z_OBJ_SERVER(zo) (php_server_fetch_object(zo))
197202
#define Z_OBJ_SERVERAPI(zo) (php_serverapi_fetch_object(zo))
203+
#define Z_OBJ_SERVERDESCRIPTION(zo) (php_serverdescription_fetch_object(zo))
198204
#define Z_OBJ_SESSION(zo) (php_session_fetch_object(zo))
199205
#define Z_OBJ_BULKWRITE(zo) (php_bulkwrite_fetch_object(zo))
200206
#define Z_OBJ_WRITECONCERN(zo) (php_writeconcern_fetch_object(zo))
@@ -228,6 +234,7 @@ extern zend_class_entry* php_phongo_readconcern_ce;
228234
extern zend_class_entry* php_phongo_readpreference_ce;
229235
extern zend_class_entry* php_phongo_server_ce;
230236
extern zend_class_entry* php_phongo_serverapi_ce;
237+
extern zend_class_entry* php_phongo_serverdescription_ce;
231238
extern zend_class_entry* php_phongo_session_ce;
232239
extern zend_class_entry* php_phongo_bulkwrite_ce;
233240
extern zend_class_entry* php_phongo_writeconcern_ce;
@@ -326,6 +333,7 @@ extern void php_phongo_readconcern_init_ce(INIT_FUNC_ARGS);
326333
extern void php_phongo_readpreference_init_ce(INIT_FUNC_ARGS);
327334
extern void php_phongo_server_init_ce(INIT_FUNC_ARGS);
328335
extern void php_phongo_serverapi_init_ce(INIT_FUNC_ARGS);
336+
extern void php_phongo_serverdescription_init_ce(INIT_FUNC_ARGS);
329337
extern void php_phongo_session_init_ce(INIT_FUNC_ARGS);
330338
extern void php_phongo_writeconcern_init_ce(INIT_FUNC_ARGS);
331339
extern void php_phongo_writeconcernerror_init_ce(INIT_FUNC_ARGS);

‎php_phongo_structs.h‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ typedef struct {
114114
zend_object std;
115115
} php_phongo_serverapi_t;
116116

117+
typedef struct {
118+
mongoc_server_description_t* server_description;
119+
HashTable* properties;
120+
zend_object std;
121+
} php_phongo_serverdescription_t;
122+
117123
typedef struct {
118124
mongoc_client_session_t* client_session;
119125
zval manager;

‎src/MongoDB/Server.c‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,20 @@ static PHP_METHOD(Server, getPort)
403403
phongo_throw_exception(PHONGO_ERROR_RUNTIME, "Failed to get server description");
404404
} /* }}} */
405405

406+
/* {{{ proto MongoDB\Driver\ServerDescription MongoDB\Driver\Server::getServerDescription()
407+
Returns the server description for this Server */
408+
static PHP_METHOD(Server, getServerDescription)
409+
{
410+
mongoc_server_description_t* server_description;
411+
php_phongo_server_t* intern = Z_SERVER_OBJ_P(getThis());
412+
413+
PHONGO_PARSE_PARAMETERS_NONE();
414+
415+
server_description = mongoc_client_get_server_description(Z_MANAGER_OBJ_P(&intern->manager)->client, intern->server_id);
416+
417+
phongo_serverdescription_init(return_value, server_description);
418+
} /* }}} */
419+
406420
/* {{{ proto integer MongoDB\Driver\Server::getType()
407421
Returns the node type of this Server */
408422
static PHP_METHOD(Server, getType)
@@ -604,6 +618,7 @@ static zend_function_entry php_phongo_server_me[] = {
604618
PHP_ME(Server, getInfo, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
605619
PHP_ME(Server, getLatency, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
606620
PHP_ME(Server, getPort, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
621+
PHP_ME(Server, getServerDescription, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
607622
PHP_ME(Server, getType, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
608623
PHP_ME(Server, isPrimary, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
609624
PHP_ME(Server, isSecondary, ai_Server_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /