Lines Matching full:channel
19 #include "channel.h"
46 void free_grpc_channel_wrapper(grpc_channel_wrapper* channel, bool free_channel) { in free_grpc_channel_wrapper() argument
48 grpc_channel_destroy(channel->wrapped); in free_grpc_channel_wrapper()
49 channel->wrapped = NULL; in free_grpc_channel_wrapper()
51 free(channel->target); in free_grpc_channel_wrapper()
52 free(channel->args_hashstr); in free_grpc_channel_wrapper()
53 free(channel->creds_hashstr); in free_grpc_channel_wrapper()
54 free(channel->key); in free_grpc_channel_wrapper()
55 channel->target = NULL; in free_grpc_channel_wrapper()
56 channel->args_hashstr = NULL; in free_grpc_channel_wrapper()
57 channel->creds_hashstr = NULL; in free_grpc_channel_wrapper()
58 channel->key = NULL; in free_grpc_channel_wrapper()
82 // In_persistent_list is used when the user don't close the channel,
164 // Find the channel sharing the same target. in php_grpc_persistent_list_delete_unused_channel()
165 if (strcmp(le->channel->target, target) == 0) { in php_grpc_persistent_list_delete_unused_channel()
166 // ref_count=1 means that only the map holds the reference to the channel. in php_grpc_persistent_list_delete_unused_channel()
167 if (le->channel->ref_count == 1) { in php_grpc_persistent_list_delete_unused_channel()
168 php_grpc_delete_persistent_list_entry(le->channel->key, in php_grpc_persistent_list_delete_unused_channel()
169 strlen(le->channel->key) in php_grpc_persistent_list_delete_unused_channel()
195 // Init current_count with 1. It should be add 1 when the channel is successfully in update_and_get_target_upper_bound()
216 wrapped_grpc_channel *channel, in create_channel() argument
221 channel->wrapper->wrapped = grpc_insecure_channel_create(target, &args, in create_channel()
224 channel->wrapper->wrapped = in create_channel()
227 // There is an Grpc\Channel object refer to it. in create_channel()
228 php_grpc_channel_ref(channel->wrapper); in create_channel()
233 wrapped_grpc_channel *channel, in create_and_add_channel_to_persistent_list() argument
247 // If no channel can be deleted from the persistent map, in create_and_add_channel_to_persistent_list()
249 create_channel(channel, target, args, creds); in create_and_add_channel_to_persistent_list()
250 php_printf("[Warning] The number of channel for the" in create_and_add_channel_to_persistent_list()
266 create_channel(channel, target, args, creds); in create_and_add_channel_to_persistent_list()
269 le->channel = channel->wrapper; in create_and_add_channel_to_persistent_list()
275 php_grpc_channel_ref(channel->wrapper); in create_and_add_channel_to_persistent_list()
280 * Construct an instance of the Channel class.
287 * ChannelCredentials object, a secure channel will be created with those
294 * @param string $target The hostname to associate with this channel
295 * @param array $args_array The arguments to pass to the Channel
297 PHP_METHOD(Channel, __construct) { in PHP_METHOD() argument
298 wrapped_grpc_channel *channel = in PHP_METHOD() local
316 "Channel expects a string and an array", 1 TSRMLS_CC); in PHP_METHOD()
358 // parse the rest of the channel args array in PHP_METHOD()
364 // Construct a hashkey for the persistent channel in PHP_METHOD()
367 // 2. hash value of the channel args array (excluding "credentials" in PHP_METHOD()
390 channel->wrapper = malloc(sizeof(grpc_channel_wrapper)); in PHP_METHOD()
391 channel->wrapper->ref_count = 0; in PHP_METHOD()
392 channel->wrapper->key = key; in PHP_METHOD()
393 channel->wrapper->target = strdup(target); in PHP_METHOD()
394 channel->wrapper->args_hashstr = strdup(sha1str); in PHP_METHOD()
395 channel->wrapper->creds_hashstr = NULL; in PHP_METHOD()
400 channel->wrapper->creds_hashstr = channel_creds_hashstr; in PHP_METHOD()
403 gpr_mu_init(&channel->wrapper->mu); in PHP_METHOD()
409 create_channel(channel, target, args, creds); in PHP_METHOD()
413 channel, target, args, creds, key, key_len, target_upper_bound TSRMLS_CC); in PHP_METHOD()
415 // Found a previously stored channel in the persistent list in PHP_METHOD()
417 if (strcmp(target, le->channel->target) != 0 || in PHP_METHOD()
418 strcmp(sha1str, le->channel->args_hashstr) != 0 || in PHP_METHOD()
420 strcmp(creds->hashstr, le->channel->creds_hashstr) != 0)) { in PHP_METHOD()
423 channel, target, args, creds, key, key_len, target_upper_bound TSRMLS_CC); in PHP_METHOD()
426 free_grpc_channel_wrapper(channel->wrapper, false); in PHP_METHOD()
427 gpr_mu_destroy(&channel->wrapper->mu); in PHP_METHOD()
428 free(channel->wrapper); in PHP_METHOD()
429 channel->wrapper = NULL; in PHP_METHOD()
430 channel->wrapper = le->channel; in PHP_METHOD()
431 // One more Grpc\Channel object refer to it. in PHP_METHOD()
432 php_grpc_channel_ref(channel->wrapper); in PHP_METHOD()
442 PHP_METHOD(Channel, getTarget) { in PHP_METHOD() argument
443 wrapped_grpc_channel *channel = in PHP_METHOD() local
445 if (channel->wrapper == NULL) { in PHP_METHOD()
448 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
451 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
452 char *target = grpc_channel_get_target(channel->wrapper->wrapped); in PHP_METHOD()
453 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
459 * Get the connectivity state of the channel
460 * @param bool $try_to_connect Try to connect on the channel (optional)
463 PHP_METHOD(Channel, getConnectivityState) { in PHP_METHOD() argument
464 wrapped_grpc_channel *channel = in PHP_METHOD() local
466 if (channel->wrapper == NULL) { in PHP_METHOD()
469 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
472 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
479 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
482 int state = grpc_channel_check_connectivity_state(channel->wrapper->wrapped, in PHP_METHOD()
484 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
489 * Watch the connectivity state of the channel until it changed
490 * @param long $last_state The previous connectivity state of the channel
495 PHP_METHOD(Channel, watchConnectivityState) { in PHP_METHOD() argument
496 wrapped_grpc_channel *channel = in PHP_METHOD() local
498 if (channel->wrapper == NULL) { in PHP_METHOD()
501 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
504 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
515 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
521 grpc_channel_watch_connectivity_state(channel->wrapper->wrapped, in PHP_METHOD()
528 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
533 * Close the channel
536 PHP_METHOD(Channel, close) { in PHP_METHOD() argument
537 wrapped_grpc_channel *channel = in PHP_METHOD() local
539 if (channel->wrapper != NULL) { in PHP_METHOD()
540 php_grpc_channel_unref(channel->wrapper); in PHP_METHOD()
541 channel->wrapper = NULL; in PHP_METHOD()
565 if (le->channel != NULL) { in php_grpc_channel_plink_dtor()
566 php_grpc_channel_unref(le->channel); in php_grpc_channel_plink_dtor()
567 le->channel = NULL; in php_grpc_channel_plink_dtor()
590 PHP_METHOD(Channel, cleanPersistentList) { in PHP_METHOD() argument
612 * Return the info about the current channel. Test only.
615 PHP_METHOD(Channel, getChannelInfo) { in PHP_METHOD() argument
616 wrapped_grpc_channel *channel = in PHP_METHOD() local
621 sizeof("target"), channel->wrapper->target, true); in PHP_METHOD()
624 update_and_get_target_upper_bound(channel->wrapper->target, -1); in PHP_METHOD()
631 sizeof("key"), channel->wrapper->key, true); in PHP_METHOD()
632 // Info about persistent channel ref_count in PHP_METHOD()
634 sizeof("ref_count"), channel->wrapper->ref_count); in PHP_METHOD()
637 grpc_channel_check_connectivity_state(channel->wrapper->wrapped, (int)0); in PHP_METHOD()
644 // Info about the channel is closed or not in PHP_METHOD()
646 sizeof("is_valid"), (channel->wrapper == NULL)); in PHP_METHOD()
653 PHP_METHOD(Channel, getPersistentList) { in PHP_METHOD() argument
668 sizeof("target"), le->channel->target, true); in PHP_METHOD()
671 update_and_get_target_upper_bound(le->channel->target, -1); in PHP_METHOD()
678 sizeof("key"), le->channel->key, true); in PHP_METHOD()
679 // Info about persistent channel ref_count in PHP_METHOD()
681 sizeof("ref_count"), le->channel->ref_count); in PHP_METHOD()
684 grpc_channel_check_connectivity_state(le->channel->wrapped, (int)0); in PHP_METHOD()
691 add_assoc_zval(return_value, le->channel->key, ret_arr); in PHP_METHOD()
731 PHP_ME(Channel, __construct, arginfo_construct,
733 PHP_ME(Channel, getTarget, arginfo_getTarget,
735 PHP_ME(Channel, getConnectivityState, arginfo_getConnectivityState,
737 PHP_ME(Channel, watchConnectivityState, arginfo_watchConnectivityState,
739 PHP_ME(Channel, close, arginfo_close,
742 PHP_ME(Channel, getChannelInfo, arginfo_getChannelInfo,
744 PHP_ME(Channel, cleanPersistentList, arginfo_cleanPersistentList,
746 PHP_ME(Channel, getPersistentList, arginfo_getPersistentList,
752 GRPC_STARTUP_FUNCTION(channel) { in GRPC_STARTUP_FUNCTION() argument
754 INIT_CLASS_ENTRY(ce, "Grpc\\Channel", channel_methods); in GRPC_STARTUP_FUNCTION()
759 NULL, php_grpc_channel_plink_dtor, "Persistent Channel", module_number); in GRPC_STARTUP_FUNCTION()