@@ -134,6 +134,7 @@ PHP_METHOD(Server, getHost)
134
134
{
135
135
php_phongo_server_t * intern ;
136
136
mongoc_server_description_t * sd ;
137
+ bson_error_t error ;
137
138
(void )return_value_ptr ; (void )return_value_used ;
138
139
139
140
intern = (php_phongo_server_t * )zend_object_store_get_object (getThis () TSRMLS_CC );
@@ -142,11 +143,11 @@ PHP_METHOD(Server, getHost)
142
143
return ;
143
144
}
144
145
145
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
146
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
146
147
RETURN_STRING (sd -> host .host , 1 );
147
148
}
148
149
149
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
150
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
150
151
}
151
152
/* }}} */
152
153
/* {{{ proto array Server::getTags()
@@ -155,6 +156,7 @@ PHP_METHOD(Server, getTags)
155
156
{
156
157
php_phongo_server_t * intern ;
157
158
mongoc_server_description_t * sd ;
159
+ bson_error_t error ;
158
160
(void )return_value_ptr ; (void )return_value_used ;
159
161
160
162
@@ -165,7 +167,7 @@ PHP_METHOD(Server, getTags)
165
167
}
166
168
167
169
168
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
170
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
169
171
php_phongo_bson_state state = PHONGO_BSON_STATE_INITIALIZER ;
170
172
state .map .root_type = PHONGO_TYPEMAP_NATIVE_ARRAY ;
171
173
state .map .document_type = PHONGO_TYPEMAP_NATIVE_ARRAY ;
@@ -175,7 +177,7 @@ PHP_METHOD(Server, getTags)
175
177
RETURN_ZVAL (state .zchild , 0 , 1 );
176
178
}
177
179
178
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
180
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
179
181
}
180
182
/* }}} */
181
183
/* {{{ proto array Server::getInfo()
@@ -184,6 +186,7 @@ PHP_METHOD(Server, getInfo)
184
186
{
185
187
php_phongo_server_t * intern ;
186
188
mongoc_server_description_t * sd ;
189
+ bson_error_t error ;
187
190
(void )return_value_ptr ; (void )return_value_used ;
188
191
189
192
@@ -194,7 +197,7 @@ PHP_METHOD(Server, getInfo)
194
197
}
195
198
196
199
197
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
200
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
198
201
php_phongo_bson_state state = PHONGO_BSON_STATE_INITIALIZER ;
199
202
state .map .root_type = PHONGO_TYPEMAP_NATIVE_ARRAY ;
200
203
state .map .document_type = PHONGO_TYPEMAP_NATIVE_ARRAY ;
@@ -204,7 +207,7 @@ PHP_METHOD(Server, getInfo)
204
207
RETURN_ZVAL (state .zchild , 0 , 1 );
205
208
}
206
209
207
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
210
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
208
211
}
209
212
/* }}} */
210
213
/* {{{ proto integer Server::getLatency()
@@ -213,6 +216,7 @@ PHP_METHOD(Server, getLatency)
213
216
{
214
217
php_phongo_server_t * intern ;
215
218
mongoc_server_description_t * sd ;
219
+ bson_error_t error ;
216
220
(void )return_value_ptr ; (void )return_value_used ;
217
221
218
222
@@ -222,11 +226,11 @@ PHP_METHOD(Server, getLatency)
222
226
return ;
223
227
}
224
228
225
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
229
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
226
230
RETURN_LONG (sd -> round_trip_time );
227
231
}
228
232
229
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
233
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
230
234
}
231
235
/* }}} */
232
236
/* {{{ proto integer Server::getPort()
@@ -235,6 +239,7 @@ PHP_METHOD(Server, getPort)
235
239
{
236
240
php_phongo_server_t * intern ;
237
241
mongoc_server_description_t * sd ;
242
+ bson_error_t error ;
238
243
(void )return_value_ptr ; (void )return_value_used ;
239
244
240
245
@@ -244,11 +249,11 @@ PHP_METHOD(Server, getPort)
244
249
return ;
245
250
}
246
251
247
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
252
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
248
253
RETURN_LONG (sd -> host .port );
249
254
}
250
255
251
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
256
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
252
257
}
253
258
/* }}} */
254
259
/* {{{ proto integer Server::getType()
@@ -257,6 +262,7 @@ PHP_METHOD(Server, getType)
257
262
{
258
263
php_phongo_server_t * intern ;
259
264
mongoc_server_description_t * sd ;
265
+ bson_error_t error ;
260
266
(void )return_value_ptr ; (void )return_value_used ;
261
267
262
268
@@ -266,11 +272,11 @@ PHP_METHOD(Server, getType)
266
272
return ;
267
273
}
268
274
269
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
275
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
270
276
RETURN_LONG (sd -> type );
271
277
}
272
278
273
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
279
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
274
280
}
275
281
/* }}} */
276
282
/* {{{ proto bool Server::isPrimary()
@@ -279,6 +285,7 @@ PHP_METHOD(Server, isPrimary)
279
285
{
280
286
php_phongo_server_t * intern ;
281
287
mongoc_server_description_t * sd ;
288
+ bson_error_t error ;
282
289
(void )return_value_ptr ; (void )return_value_used ;
283
290
284
291
@@ -288,11 +295,11 @@ PHP_METHOD(Server, isPrimary)
288
295
return ;
289
296
}
290
297
291
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
298
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
292
299
RETURN_BOOL (sd -> type == MONGOC_SERVER_RS_PRIMARY );
293
300
}
294
301
295
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
302
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
296
303
}
297
304
/* }}} */
298
305
/* {{{ proto bool Server::isSecondary()
@@ -301,6 +308,7 @@ PHP_METHOD(Server, isSecondary)
301
308
{
302
309
php_phongo_server_t * intern ;
303
310
mongoc_server_description_t * sd ;
311
+ bson_error_t error ;
304
312
(void )return_value_ptr ; (void )return_value_used ;
305
313
306
314
@@ -310,11 +318,11 @@ PHP_METHOD(Server, isSecondary)
310
318
return ;
311
319
}
312
320
313
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
321
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
314
322
RETURN_BOOL (sd -> type == MONGOC_SERVER_RS_SECONDARY );
315
323
}
316
324
317
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
325
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
318
326
}
319
327
/* }}} */
320
328
/* {{{ proto bool Server::isArbiter()
@@ -323,6 +331,7 @@ PHP_METHOD(Server, isArbiter)
323
331
{
324
332
php_phongo_server_t * intern ;
325
333
mongoc_server_description_t * sd ;
334
+ bson_error_t error ;
326
335
(void )return_value_ptr ; (void )return_value_used ;
327
336
328
337
@@ -332,11 +341,11 @@ PHP_METHOD(Server, isArbiter)
332
341
return ;
333
342
}
334
343
335
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
344
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
336
345
RETURN_BOOL (sd -> type == MONGOC_SERVER_RS_ARBITER );
337
346
}
338
347
339
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
348
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
340
349
}
341
350
/* }}} */
342
351
/* {{{ proto bool Server::isHidden()
@@ -345,6 +354,7 @@ PHP_METHOD(Server, isHidden)
345
354
{
346
355
php_phongo_server_t * intern ;
347
356
mongoc_server_description_t * sd ;
357
+ bson_error_t error ;
348
358
(void )return_value_ptr ; (void )return_value_used ;
349
359
350
360
@@ -354,13 +364,13 @@ PHP_METHOD(Server, isHidden)
354
364
return ;
355
365
}
356
366
357
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
367
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
358
368
bson_iter_t iter ;
359
369
360
370
RETURN_BOOL (bson_iter_init_find_case (& iter , & sd -> last_is_master , "hidden" ) && bson_iter_as_bool (& iter ));
361
371
}
362
372
363
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
373
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
364
374
}
365
375
/* }}} */
366
376
/* {{{ proto bool Server::isPassive()
@@ -369,6 +379,7 @@ PHP_METHOD(Server, isPassive)
369
379
{
370
380
php_phongo_server_t * intern ;
371
381
mongoc_server_description_t * sd ;
382
+ bson_error_t error ;
372
383
(void )return_value_ptr ; (void )return_value_used ;
373
384
374
385
@@ -378,13 +389,13 @@ PHP_METHOD(Server, isPassive)
378
389
return ;
379
390
}
380
391
381
- if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
392
+ if ((sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
382
393
bson_iter_t iter ;
383
394
384
395
RETURN_BOOL (bson_iter_init_find_case (& iter , & sd -> last_is_master , "passive" ) && bson_iter_as_bool (& iter ));
385
396
}
386
397
387
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
398
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
388
399
}
389
400
/* }}} */
390
401
@@ -475,8 +486,8 @@ static int php_phongo_server_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{
475
486
intern1 = (php_phongo_server_t * )zend_object_store_get_object (o1 TSRMLS_CC );
476
487
intern2 = (php_phongo_server_t * )zend_object_store_get_object (o2 TSRMLS_CC );
477
488
478
- sd1 = mongoc_topology_description_server_by_id (& intern1 -> client -> topology -> description , intern1 -> server_id );
479
- sd2 = mongoc_topology_description_server_by_id (& intern2 -> client -> topology -> description , intern2 -> server_id );
489
+ sd1 = mongoc_topology_description_server_by_id (& intern1 -> client -> topology -> description , intern1 -> server_id , NULL );
490
+ sd2 = mongoc_topology_description_server_by_id (& intern2 -> client -> topology -> description , intern2 -> server_id , NULL );
480
491
481
492
if (!sd1 || !sd2 ) {
482
493
phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
@@ -517,14 +528,14 @@ HashTable *php_phongo_server_get_debug_info(zval *object, int *is_temp TSRMLS_DC
517
528
php_phongo_server_t * intern = NULL ;
518
529
zval retval = zval_used_for_init ;
519
530
mongoc_server_description_t * sd ;
520
-
531
+ bson_error_t error ;
521
532
522
533
* is_temp = 1 ;
523
534
intern = (php_phongo_server_t * )zend_object_store_get_object (object TSRMLS_CC );
524
535
525
536
526
- if (!(sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id ))) {
527
- phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s" , "Failed to get server description, server likely gone" );
537
+ if (!(sd = mongoc_topology_description_server_by_id (& intern -> client -> topology -> description , intern -> server_id , & error ))) {
538
+ phongo_throw_exception (PHONGO_ERROR_RUNTIME TSRMLS_CC , "%s: %s " , "Failed to get server description, server likely gone" , error . message );
528
539
return NULL ;
529
540
}
530
541
0 commit comments