Updated functions with TSRM macros for ZTS support

pull/6621/head
Michael Bausor 9 years ago committed by Stanley Cheung
parent 312040d5c7
commit ada376cf9e
  1. 10
      src/php/ext/grpc/call.c
  2. 4
      src/php/ext/grpc/call.h
  3. 12
      src/php/ext/grpc/call_credentials.c
  4. 4
      src/php/ext/grpc/channel.c
  5. 2
      src/php/ext/grpc/channel.h
  6. 8
      src/php/ext/grpc/channel_credentials.c
  7. 8
      src/php/ext/grpc/server.c
  8. 4
      src/php/ext/grpc/server_credentials.c
  9. 14
      src/php/ext/grpc/timeval.c
  10. 2
      src/php/ext/grpc/timeval.h

@ -89,7 +89,7 @@ zend_object_value create_wrapped_grpc_call(zend_class_entry *class_type
/* Wraps a grpc_call struct in a PHP object. Owned indicates whether the struct /* Wraps a grpc_call struct in a PHP object. Owned indicates whether the struct
should be destroyed at the end of the object's lifecycle */ should be destroyed at the end of the object's lifecycle */
zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned) { zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned TSRMLS_DC) {
zval *call_object; zval *call_object;
MAKE_STD_ZVAL(call_object); MAKE_STD_ZVAL(call_object);
object_init_ex(call_object, grpc_ce_call); object_init_ex(call_object, grpc_ce_call);
@ -101,7 +101,7 @@ zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned) {
/* Creates and returns a PHP array object with the data in a /* Creates and returns a PHP array object with the data in a
* grpc_metadata_array. Returns NULL on failure */ * grpc_metadata_array. Returns NULL on failure */
zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array) { zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array TSRMLS_DC) {
int count = metadata_array->count; int count = metadata_array->count;
grpc_metadata *elements = metadata_array->metadata; grpc_metadata *elements = metadata_array->metadata;
int i; int i;
@ -126,7 +126,7 @@ zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array) {
if (zend_hash_find(array_hash, str_key, key_len, (void **)data) == if (zend_hash_find(array_hash, str_key, key_len, (void **)data) ==
SUCCESS) { SUCCESS) {
if (Z_TYPE_P(*data) != IS_ARRAY) { if (Z_TYPE_P(*data) != IS_ARRAY) {
zend_throw_exception(zend_exception_get_default(), zend_throw_exception(zend_exception_get_default(TSRMLS_C),
"Metadata hash somehow contains wrong types.", "Metadata hash somehow contains wrong types.",
1 TSRMLS_CC); 1 TSRMLS_CC);
efree(str_key); efree(str_key);
@ -453,7 +453,7 @@ PHP_METHOD(Call, startBatch) {
add_property_bool(result, "send_status", true); add_property_bool(result, "send_status", true);
break; break;
case GRPC_OP_RECV_INITIAL_METADATA: case GRPC_OP_RECV_INITIAL_METADATA:
array = grpc_parse_metadata_array(&recv_metadata); array = grpc_parse_metadata_array(&recv_metadata TSRMLS_CC);
add_property_zval(result, "metadata", array); add_property_zval(result, "metadata", array);
Z_DELREF_P(array); Z_DELREF_P(array);
break; break;
@ -469,7 +469,7 @@ PHP_METHOD(Call, startBatch) {
case GRPC_OP_RECV_STATUS_ON_CLIENT: case GRPC_OP_RECV_STATUS_ON_CLIENT:
MAKE_STD_ZVAL(recv_status); MAKE_STD_ZVAL(recv_status);
object_init(recv_status); object_init(recv_status);
array = grpc_parse_metadata_array(&recv_trailing_metadata); array = grpc_parse_metadata_array(&recv_trailing_metadata TSRMLS_CC);
add_property_zval(recv_status, "metadata", array); add_property_zval(recv_status, "metadata", array);
Z_DELREF_P(array); Z_DELREF_P(array);
add_property_long(recv_status, "code", status); add_property_long(recv_status, "code", status);

@ -60,11 +60,11 @@ typedef struct wrapped_grpc_call {
void grpc_init_call(TSRMLS_D); void grpc_init_call(TSRMLS_D);
/* Creates a Call object that wraps the given grpc_call struct */ /* Creates a Call object that wraps the given grpc_call struct */
zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned); zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned TSRMLS_DC);
/* Creates and returns a PHP associative array of metadata from a C array of /* Creates and returns a PHP associative array of metadata from a C array of
* call metadata */ * call metadata */
zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array); zval *grpc_parse_metadata_array(grpc_metadata_array *metadata_array TSRMLS_DC);
/* Populates a grpc_metadata_array with the data in a PHP array object. /* Populates a grpc_metadata_array with the data in a PHP array object.
Returns true on success and false on failure */ Returns true on success and false on failure */

@ -83,7 +83,7 @@ zend_object_value create_wrapped_grpc_call_credentials(
return retval; return retval;
} }
zval *grpc_php_wrap_call_credentials(grpc_call_credentials *wrapped) { zval *grpc_php_wrap_call_credentials(grpc_call_credentials *wrapped TSRMLS_DC) {
zval *credentials_object; zval *credentials_object;
MAKE_STD_ZVAL(credentials_object); MAKE_STD_ZVAL(credentials_object);
object_init_ex(credentials_object, grpc_ce_call_credentials); object_init_ex(credentials_object, grpc_ce_call_credentials);
@ -122,7 +122,7 @@ PHP_METHOD(CallCredentials, createComposite) {
grpc_call_credentials *creds = grpc_call_credentials *creds =
grpc_composite_call_credentials_create(cred1->wrapped, cred2->wrapped, grpc_composite_call_credentials_create(cred1->wrapped, cred2->wrapped,
NULL); NULL);
zval *creds_object = grpc_php_wrap_call_credentials(creds); zval *creds_object = grpc_php_wrap_call_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }
@ -141,7 +141,7 @@ PHP_METHOD(CallCredentials, createFromPlugin) {
memset(fci_cache, 0, sizeof(zend_fcall_info_cache)); memset(fci_cache, 0, sizeof(zend_fcall_info_cache));
/* "f" == 1 function */ /* "f" == 1 function */
if (zend_parse_parameters(ZEND_NUM_ARGS(), "f", fci, if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "f", fci,
fci_cache, fci_cache,
fci->params, fci->params,
fci->param_count) == FAILURE) { fci->param_count) == FAILURE) {
@ -167,7 +167,7 @@ PHP_METHOD(CallCredentials, createFromPlugin) {
grpc_call_credentials *creds = grpc_metadata_credentials_create_from_plugin( grpc_call_credentials *creds = grpc_metadata_credentials_create_from_plugin(
plugin, NULL); plugin, NULL);
zval *creds_object = grpc_php_wrap_call_credentials(creds); zval *creds_object = grpc_php_wrap_call_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }
@ -175,6 +175,8 @@ PHP_METHOD(CallCredentials, createFromPlugin) {
void plugin_get_metadata(void *ptr, grpc_auth_metadata_context context, void plugin_get_metadata(void *ptr, grpc_auth_metadata_context context,
grpc_credentials_plugin_metadata_cb cb, grpc_credentials_plugin_metadata_cb cb,
void *user_data) { void *user_data) {
TSRMLS_FETCH();
plugin_state *state = (plugin_state *)ptr; plugin_state *state = (plugin_state *)ptr;
/* prepare to call the user callback function with info from the /* prepare to call the user callback function with info from the
@ -192,7 +194,7 @@ void plugin_get_metadata(void *ptr, grpc_auth_metadata_context context,
state->fci->retval_ptr_ptr = &retval; state->fci->retval_ptr_ptr = &retval;
/* call the user callback function */ /* call the user callback function */
zend_call_function(state->fci, state->fci_cache); zend_call_function(state->fci, state->fci_cache TSRMLS_CC);
if (Z_TYPE_P(retval) != IS_ARRAY) { if (Z_TYPE_P(retval) != IS_ARRAY) {
zend_throw_exception(spl_ce_InvalidArgumentException, zend_throw_exception(spl_ce_InvalidArgumentException,

@ -84,7 +84,7 @@ zend_object_value create_wrapped_grpc_channel(zend_class_entry *class_type
return retval; return retval;
} }
void php_grpc_read_args_array(zval *args_array, grpc_channel_args *args) { void php_grpc_read_args_array(zval *args_array, grpc_channel_args *args TSRMLS_DC) {
HashTable *array_hash; HashTable *array_hash;
HashPosition array_pointer; HashPosition array_pointer;
int args_index; int args_index;
@ -168,7 +168,7 @@ PHP_METHOD(Channel, __construct) {
zend_hash_del(array_hash, "credentials", 12); zend_hash_del(array_hash, "credentials", 12);
} }
} }
php_grpc_read_args_array(args_array, &args); php_grpc_read_args_array(args_array, &args TSRMLS_CC);
if (creds == NULL) { if (creds == NULL) {
channel->wrapped = grpc_insecure_channel_create(target, &args, NULL); channel->wrapped = grpc_insecure_channel_create(target, &args, NULL);
} else { } else {

@ -59,6 +59,6 @@ typedef struct wrapped_grpc_channel {
void grpc_init_channel(TSRMLS_D); void grpc_init_channel(TSRMLS_D);
/* Iterates through a PHP array and populates args with the contents */ /* Iterates through a PHP array and populates args with the contents */
void php_grpc_read_args_array(zval *args_array, grpc_channel_args *args); void php_grpc_read_args_array(zval *args_array, grpc_channel_args *args TSRMLS_DC);
#endif /* NET_GRPC_PHP_GRPC_CHANNEL_H_ */ #endif /* NET_GRPC_PHP_GRPC_CHANNEL_H_ */

@ -82,7 +82,7 @@ zend_object_value create_wrapped_grpc_channel_credentials(
return retval; return retval;
} }
zval *grpc_php_wrap_channel_credentials(grpc_channel_credentials *wrapped) { zval *grpc_php_wrap_channel_credentials(grpc_channel_credentials *wrapped TSRMLS_DC) {
zval *credentials_object; zval *credentials_object;
MAKE_STD_ZVAL(credentials_object); MAKE_STD_ZVAL(credentials_object);
object_init_ex(credentials_object, grpc_ce_channel_credentials); object_init_ex(credentials_object, grpc_ce_channel_credentials);
@ -99,7 +99,7 @@ zval *grpc_php_wrap_channel_credentials(grpc_channel_credentials *wrapped) {
*/ */
PHP_METHOD(ChannelCredentials, createDefault) { PHP_METHOD(ChannelCredentials, createDefault) {
grpc_channel_credentials *creds = grpc_google_default_credentials_create(); grpc_channel_credentials *creds = grpc_google_default_credentials_create();
zval *creds_object = grpc_php_wrap_channel_credentials(creds); zval *creds_object = grpc_php_wrap_channel_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }
@ -134,7 +134,7 @@ PHP_METHOD(ChannelCredentials, createSsl) {
grpc_channel_credentials *creds = grpc_ssl_credentials_create( grpc_channel_credentials *creds = grpc_ssl_credentials_create(
pem_root_certs, pem_root_certs,
pem_key_cert_pair.private_key == NULL ? NULL : &pem_key_cert_pair, NULL); pem_key_cert_pair.private_key == NULL ? NULL : &pem_key_cert_pair, NULL);
zval *creds_object = grpc_php_wrap_channel_credentials(creds); zval *creds_object = grpc_php_wrap_channel_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }
@ -165,7 +165,7 @@ PHP_METHOD(ChannelCredentials, createComposite) {
grpc_channel_credentials *creds = grpc_channel_credentials *creds =
grpc_composite_channel_credentials_create(cred1->wrapped, cred2->wrapped, grpc_composite_channel_credentials_create(cred1->wrapped, cred2->wrapped,
NULL); NULL);
zval *creds_object = grpc_php_wrap_channel_credentials(creds); zval *creds_object = grpc_php_wrap_channel_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }

@ -111,7 +111,7 @@ PHP_METHOD(Server, __construct) {
if (args_array == NULL) { if (args_array == NULL) {
server->wrapped = grpc_server_create(NULL, NULL); server->wrapped = grpc_server_create(NULL, NULL);
} else { } else {
php_grpc_read_args_array(args_array, &args); php_grpc_read_args_array(args_array, &args TSRMLS_CC);
server->wrapped = grpc_server_create(&args, NULL); server->wrapped = grpc_server_create(&args, NULL);
efree(args.args); efree(args.args);
} }
@ -154,12 +154,12 @@ PHP_METHOD(Server, requestCall) {
1 TSRMLS_CC); 1 TSRMLS_CC);
goto cleanup; goto cleanup;
} }
add_property_zval(result, "call", grpc_php_wrap_call(call, true)); add_property_zval(result, "call", grpc_php_wrap_call(call, true TSRMLS_CC));
add_property_string(result, "method", details.method, true); add_property_string(result, "method", details.method, true);
add_property_string(result, "host", details.host, true); add_property_string(result, "host", details.host, true);
add_property_zval(result, "absolute_deadline", add_property_zval(result, "absolute_deadline",
grpc_php_wrap_timeval(details.deadline)); grpc_php_wrap_timeval(details.deadline TSRMLS_CC));
add_property_zval(result, "metadata", grpc_parse_metadata_array(&metadata)); add_property_zval(result, "metadata", grpc_parse_metadata_array(&metadata TSRMLS_CC));
cleanup: cleanup:
grpc_call_details_destroy(&details); grpc_call_details_destroy(&details);
grpc_metadata_array_destroy(&metadata); grpc_metadata_array_destroy(&metadata);

@ -81,7 +81,7 @@ zend_object_value create_wrapped_grpc_server_credentials(
return retval; return retval;
} }
zval *grpc_php_wrap_server_credentials(grpc_server_credentials *wrapped) { zval *grpc_php_wrap_server_credentials(grpc_server_credentials *wrapped TSRMLS_DC) {
zval *server_credentials_object; zval *server_credentials_object;
MAKE_STD_ZVAL(server_credentials_object); MAKE_STD_ZVAL(server_credentials_object);
object_init_ex(server_credentials_object, grpc_ce_server_credentials); object_init_ex(server_credentials_object, grpc_ce_server_credentials);
@ -120,7 +120,7 @@ PHP_METHOD(ServerCredentials, createSsl) {
grpc_server_credentials *creds = grpc_ssl_server_credentials_create_ex( grpc_server_credentials *creds = grpc_ssl_server_credentials_create_ex(
pem_root_certs, &pem_key_cert_pair, 1, pem_root_certs, &pem_key_cert_pair, 1,
GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE, NULL); GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE, NULL);
zval *creds_object = grpc_php_wrap_server_credentials(creds); zval *creds_object = grpc_php_wrap_server_credentials(creds TSRMLS_CC);
RETURN_DESTROY_ZVAL(creds_object); RETURN_DESTROY_ZVAL(creds_object);
} }

@ -72,7 +72,7 @@ zend_object_value create_wrapped_grpc_timeval(zend_class_entry *class_type
return retval; return retval;
} }
zval *grpc_php_wrap_timeval(gpr_timespec wrapped) { zval *grpc_php_wrap_timeval(gpr_timespec wrapped TSRMLS_DC) {
zval *timeval_object; zval *timeval_object;
MAKE_STD_ZVAL(timeval_object); MAKE_STD_ZVAL(timeval_object);
object_init_ex(timeval_object, grpc_ce_timeval); object_init_ex(timeval_object, grpc_ce_timeval);
@ -122,7 +122,7 @@ PHP_METHOD(Timeval, add) {
wrapped_grpc_timeval *other = wrapped_grpc_timeval *other =
(wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC); (wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC);
zval *sum = zval *sum =
grpc_php_wrap_timeval(gpr_time_add(self->wrapped, other->wrapped)); grpc_php_wrap_timeval(gpr_time_add(self->wrapped, other->wrapped) TSRMLS_CC);
RETURN_DESTROY_ZVAL(sum); RETURN_DESTROY_ZVAL(sum);
} }
@ -146,7 +146,7 @@ PHP_METHOD(Timeval, subtract) {
wrapped_grpc_timeval *other = wrapped_grpc_timeval *other =
(wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC); (wrapped_grpc_timeval *)zend_object_store_get_object(other_obj TSRMLS_CC);
zval *diff = zval *diff =
grpc_php_wrap_timeval(gpr_time_sub(self->wrapped, other->wrapped)); grpc_php_wrap_timeval(gpr_time_sub(self->wrapped, other->wrapped) TSRMLS_CC);
RETURN_DESTROY_ZVAL(diff); RETURN_DESTROY_ZVAL(diff);
} }
@ -208,7 +208,7 @@ PHP_METHOD(Timeval, similar) {
* @return Timeval The current time * @return Timeval The current time
*/ */
PHP_METHOD(Timeval, now) { PHP_METHOD(Timeval, now) {
zval *now = grpc_php_wrap_timeval(gpr_now(GPR_CLOCK_REALTIME)); zval *now = grpc_php_wrap_timeval(gpr_now(GPR_CLOCK_REALTIME) TSRMLS_CC);
RETURN_DESTROY_ZVAL(now); RETURN_DESTROY_ZVAL(now);
} }
@ -218,7 +218,7 @@ PHP_METHOD(Timeval, now) {
*/ */
PHP_METHOD(Timeval, zero) { PHP_METHOD(Timeval, zero) {
zval *grpc_php_timeval_zero = zval *grpc_php_timeval_zero =
grpc_php_wrap_timeval(gpr_time_0(GPR_CLOCK_REALTIME)); grpc_php_wrap_timeval(gpr_time_0(GPR_CLOCK_REALTIME) TSRMLS_CC);
RETURN_ZVAL(grpc_php_timeval_zero, RETURN_ZVAL(grpc_php_timeval_zero,
false, /* Copy original before returning? */ false, /* Copy original before returning? */
true /* Destroy original before returning */); true /* Destroy original before returning */);
@ -230,7 +230,7 @@ PHP_METHOD(Timeval, zero) {
*/ */
PHP_METHOD(Timeval, infFuture) { PHP_METHOD(Timeval, infFuture) {
zval *grpc_php_timeval_inf_future = zval *grpc_php_timeval_inf_future =
grpc_php_wrap_timeval(gpr_inf_future(GPR_CLOCK_REALTIME)); grpc_php_wrap_timeval(gpr_inf_future(GPR_CLOCK_REALTIME) TSRMLS_CC);
RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_future); RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_future);
} }
@ -240,7 +240,7 @@ PHP_METHOD(Timeval, infFuture) {
*/ */
PHP_METHOD(Timeval, infPast) { PHP_METHOD(Timeval, infPast) {
zval *grpc_php_timeval_inf_past = zval *grpc_php_timeval_inf_past =
grpc_php_wrap_timeval(gpr_inf_past(GPR_CLOCK_REALTIME)); grpc_php_wrap_timeval(gpr_inf_past(GPR_CLOCK_REALTIME) TSRMLS_CC);
RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_past); RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_past);
} }

@ -63,6 +63,6 @@ void grpc_init_timeval(TSRMLS_D);
void grpc_shutdown_timeval(TSRMLS_D); void grpc_shutdown_timeval(TSRMLS_D);
/* Creates a Timeval object that wraps the given timeval struct */ /* Creates a Timeval object that wraps the given timeval struct */
zval *grpc_php_wrap_timeval(gpr_timespec wrapped); zval *grpc_php_wrap_timeval(gpr_timespec wrapped TSRMLS_DC);
#endif /* NET_GRPC_PHP_GRPC_TIMEVAL_H_ */ #endif /* NET_GRPC_PHP_GRPC_TIMEVAL_H_ */

Loading…
Cancel
Save