4040#include "php_zookeeper.h"
4141#include "php_zookeeper_private.h"
4242#include "php_zookeeper_session.h"
43+ #include "php_zookeeper_exceptions.h"
4344
4445/****************************************
4546 Helper macros
5152#define ZK_METHOD_FETCH_OBJECT \
5253 i_obj = (php_zk_t *) zend_object_store_get_object( object TSRMLS_CC ); \
5354 if (!i_obj->zk) { \
54- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Zookeeper connect was not called"); \
55+ php_zk_throw_exception(PHPZK_CONNECT_NOT_CALLED TSRMLS_CC); \
5556 return; \
5657 } \
5758
@@ -115,6 +116,7 @@ static void php_zookeeper_connect_impl(INTERNAL_FUNCTION_PARAMETERS, char *host,
115116 php_cb_data_t * cb_data = NULL ;
116117
117118 if (recv_timeout <= 0 ) {
119+ php_zk_throw_exception (ZBADARGUMENTS TSRMLS_CC );
118120 php_error_docref (NULL TSRMLS_CC , E_WARNING , "recv_timeout parameter has to be greater than 0" );
119121 ZVAL_NULL (object );
120122 return ;
@@ -129,7 +131,7 @@ static void php_zookeeper_connect_impl(INTERNAL_FUNCTION_PARAMETERS, char *host,
129131 recv_timeout , 0 , cb_data , 0 );
130132
131133 if (zk == NULL ) {
132- php_error_docref ( NULL TSRMLS_CC , E_ERROR , "could not init zookeeper instance" );
134+ php_zk_throw_exception ( PHPZK_CONNECTION_FAILURE TSRMLS_CC );
133135 /* not reached */
134136 ZVAL_NULL (object );
135137 return ;
@@ -220,7 +222,7 @@ static PHP_METHOD(Zookeeper, create)
220222 realpath , realpath_max );
221223 if (status != ZOK ) {
222224 efree (realpath );
223- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
225+ php_zk_throw_exception ( status TSRMLS_CC );
224226 return ;
225227 }
226228
@@ -248,7 +250,7 @@ static PHP_METHOD(Zookeeper, delete)
248250
249251 status = zoo_delete (i_obj -> zk , path , version );
250252 if (status != ZOK ) {
251- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
253+ php_zk_throw_exception ( status TSRMLS_CC );
252254 return ;
253255 }
254256
@@ -284,7 +286,7 @@ static PHP_METHOD(Zookeeper, getChildren)
284286 cb_data , & strings );
285287 if (status != ZOK ) {
286288 php_cb_data_destroy (& cb_data );
287- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
289+ php_zk_throw_exception ( status TSRMLS_CC );
288290 return ;
289291 }
290292
@@ -328,7 +330,7 @@ static PHP_METHOD(Zookeeper, get)
328330
329331 if (status != ZOK ) {
330332 php_cb_data_destroy (& cb_data );
331- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
333+ php_zk_throw_exception ( status TSRMLS_CC );
332334 return ;
333335 }
334336 length = stat .dataLength ;
@@ -347,7 +349,7 @@ static PHP_METHOD(Zookeeper, get)
347349 if (status != ZOK ) {
348350 efree (buffer );
349351 php_cb_data_destroy (& cb_data );
350- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
352+ php_zk_throw_exception ( status TSRMLS_CC );
351353
352354 /* Indicate data marshalling failure with boolean false so that user can retry */
353355 if (status == ZMARSHALLINGERROR ) {
@@ -397,7 +399,7 @@ static PHP_METHOD(Zookeeper, exists)
397399 cb_data , & stat );
398400 if (status != ZOK && status != ZNONODE ) {
399401 php_cb_data_destroy (& cb_data );
400- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
402+ php_zk_throw_exception ( status TSRMLS_CC );
401403 return ;
402404 }
403405
@@ -437,7 +439,7 @@ static PHP_METHOD(Zookeeper, set)
437439 }
438440 status = zoo_set2 (i_obj -> zk , path , value , value_len , version , stat_ptr );
439441 if (status != ZOK ) {
440- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
442+ php_zk_throw_exception ( status TSRMLS_CC );
441443 return ;
442444 }
443445
@@ -490,7 +492,7 @@ static PHP_METHOD(Zookeeper, getAcl)
490492
491493 status = zoo_get_acl (i_obj -> zk , path , & aclv , & stat );
492494 if (status != ZOK ) {
493- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
495+ php_zk_throw_exception ( status TSRMLS_CC );
494496 return ;
495497 }
496498
@@ -527,7 +529,7 @@ static PHP_METHOD(Zookeeper, setAcl)
527529 status = zoo_set_acl (i_obj -> zk , path , version , & aclv );
528530 php_aclv_destroy (& aclv );
529531 if (status != ZOK ) {
530- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
532+ php_zk_throw_exception ( status TSRMLS_CC );
531533 return ;
532534 }
533535 RETURN_TRUE ;
@@ -640,7 +642,7 @@ static PHP_METHOD(Zookeeper, addAuth)
640642 status = zoo_add_auth (i_obj -> zk , scheme , cert , cert_len ,
641643 (fci .size != 0 ) ? php_zk_completion_marshal : NULL , cb_data );
642644 if (status != ZOK ) {
643- php_error_docref ( NULL TSRMLS_CC , E_WARNING , "error: %s" , zerror ( status ) );
645+ php_zk_throw_exception ( status TSRMLS_CC );
644646 return ;
645647 }
646648
@@ -1232,6 +1234,9 @@ PHP_MINIT_FUNCTION(zookeeper)
12321234#ifdef HAVE_ZOOKEEPER_SESSION
12331235 php_session_register_module (ps_zookeeper_ptr );
12341236#endif
1237+
1238+ php_zk_register_exceptions (TSRMLS_C );
1239+
12351240 return SUCCESS ;
12361241}
12371242/* }}} */
0 commit comments