Lines Matching full:channel
20 * class Channel
21 * @see https://github.com/grpc/grpc/tree/master/src/php/ext/grpc/channel.c
24 #include "channel.h"
48 void free_grpc_channel_wrapper(grpc_channel_wrapper* channel, bool free_channel) { in free_grpc_channel_wrapper() argument
49 if (free_channel && channel->wrapped) { in free_grpc_channel_wrapper()
50 grpc_channel_destroy(channel->wrapped); in free_grpc_channel_wrapper()
51 channel->wrapped = NULL; in free_grpc_channel_wrapper()
53 free(channel->target); in free_grpc_channel_wrapper()
54 free(channel->args_hashstr); in free_grpc_channel_wrapper()
55 free(channel->creds_hashstr); in free_grpc_channel_wrapper()
56 free(channel->key); in free_grpc_channel_wrapper()
57 channel->target = NULL; in free_grpc_channel_wrapper()
58 channel->args_hashstr = NULL; in free_grpc_channel_wrapper()
59 channel->creds_hashstr = NULL; in free_grpc_channel_wrapper()
60 channel->key = NULL; in free_grpc_channel_wrapper()
84 // In_persistent_list is used when the user don't close the channel,
187 // Find the channel sharing the same target. in php_grpc_persistent_list_delete_unused_channel()
188 if (strcmp(le->channel->target, target) == 0) { in php_grpc_persistent_list_delete_unused_channel()
189 // ref_count=1 means that only the map holds the reference to the channel. in php_grpc_persistent_list_delete_unused_channel()
190 if (le->channel->ref_count == 1) { in php_grpc_persistent_list_delete_unused_channel()
191 php_grpc_delete_persistent_list_entry(le->channel->key, in php_grpc_persistent_list_delete_unused_channel()
192 strlen(le->channel->key) in php_grpc_persistent_list_delete_unused_channel()
218 // Init current_count with 1. It should be add 1 when the channel is successfully in update_and_get_target_upper_bound()
239 wrapped_grpc_channel *channel, in create_channel() argument
245 channel->wrapper->wrapped = grpc_channel_create(target, insecure_creds, &args); in create_channel()
248 channel->wrapper->wrapped = in create_channel()
251 // There is an Grpc\Channel object refer to it. in create_channel()
252 php_grpc_channel_ref(channel->wrapper); in create_channel()
257 wrapped_grpc_channel *channel, in create_and_add_channel_to_persistent_list() argument
271 // If no channel can be deleted from the persistent map, in create_and_add_channel_to_persistent_list()
273 create_channel(channel, target, args, creds); in create_and_add_channel_to_persistent_list()
274 gpr_log(GPR_INFO, "[Warning] The number of channel for the" in create_and_add_channel_to_persistent_list()
290 create_channel(channel, target, args, creds); in create_and_add_channel_to_persistent_list()
293 le->channel = channel->wrapper; in create_and_add_channel_to_persistent_list()
299 php_grpc_channel_ref(channel->wrapper); in create_and_add_channel_to_persistent_list()
304 * Construct an instance of the Channel class.
311 * ChannelCredentials object, a secure channel will be created with those
318 * @param string $target The hostname to associate with this channel
319 * @param array $args_array The arguments to pass to the Channel
321 PHP_METHOD(Channel, __construct) { in PHP_METHOD() argument
322 wrapped_grpc_channel *channel = in PHP_METHOD() local
340 "Channel expects a string and an array", 1 TSRMLS_CC); in PHP_METHOD()
377 // parse the rest of the channel args array in PHP_METHOD()
383 // Construct a hashkey for the persistent channel in PHP_METHOD()
386 // 2. hash value of the channel args (args_array excluding "credentials", in PHP_METHOD()
422 channel->wrapper = malloc(sizeof(grpc_channel_wrapper)); in PHP_METHOD()
423 channel->wrapper->ref_count = 0; in PHP_METHOD()
424 channel->wrapper->key = key; in PHP_METHOD()
425 channel->wrapper->target = strdup(target); in PHP_METHOD()
426 channel->wrapper->args_hashstr = strdup(sha1str); in PHP_METHOD()
427 channel->wrapper->creds_hashstr = NULL; in PHP_METHOD()
428 channel->wrapper->creds = creds; in PHP_METHOD()
429 channel->wrapper->args = args; in PHP_METHOD()
434 channel->wrapper->creds_hashstr = channel_creds_hashstr; in PHP_METHOD()
437 gpr_mu_init(&channel->wrapper->mu); in PHP_METHOD()
442 create_channel(channel, target, args, creds); in PHP_METHOD()
446 channel, target, args, creds, key, key_len, target_upper_bound TSRMLS_CC); in PHP_METHOD()
448 // Found a previously stored channel in the persistent list in PHP_METHOD()
450 if (strcmp(target, le->channel->target) != 0 || in PHP_METHOD()
451 strcmp(sha1str, le->channel->args_hashstr) != 0 || in PHP_METHOD()
453 strcmp(creds->hashstr, le->channel->creds_hashstr) != 0)) { in PHP_METHOD()
456 channel, target, args, creds, key, key_len, target_upper_bound TSRMLS_CC); in PHP_METHOD()
459 free_grpc_channel_wrapper(channel->wrapper, false); in PHP_METHOD()
460 gpr_mu_destroy(&channel->wrapper->mu); in PHP_METHOD()
461 free(channel->wrapper); in PHP_METHOD()
462 channel->wrapper = NULL; in PHP_METHOD()
463 channel->wrapper = le->channel; in PHP_METHOD()
464 // One more Grpc\Channel object refer to it. in PHP_METHOD()
465 php_grpc_channel_ref(channel->wrapper); in PHP_METHOD()
475 PHP_METHOD(Channel, getTarget) { in PHP_METHOD() argument
476 wrapped_grpc_channel *channel = in PHP_METHOD() local
478 if (channel->wrapper == NULL) { in PHP_METHOD()
481 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
484 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
485 char *target = grpc_channel_get_target(channel->wrapper->wrapped); in PHP_METHOD()
486 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
492 * Get the connectivity state of the channel
493 * @param bool $try_to_connect Try to connect on the channel (optional)
496 PHP_METHOD(Channel, getConnectivityState) { in PHP_METHOD() argument
497 wrapped_grpc_channel *channel = in PHP_METHOD() local
499 if (channel->wrapper == NULL) { in PHP_METHOD()
502 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
505 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
512 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
515 int state = grpc_channel_check_connectivity_state(channel->wrapper->wrapped, in PHP_METHOD()
517 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
522 * Watch the connectivity state of the channel until it changed
523 * @param long $last_state The previous connectivity state of the channel
528 PHP_METHOD(Channel, watchConnectivityState) { in PHP_METHOD() argument
529 wrapped_grpc_channel *channel = in PHP_METHOD() local
531 if (channel->wrapper == NULL) { in PHP_METHOD()
534 "Channel is already closed.", 1 TSRMLS_CC); in PHP_METHOD()
537 gpr_mu_lock(&channel->wrapper->mu); in PHP_METHOD()
548 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
554 grpc_channel_watch_connectivity_state(channel->wrapper->wrapped, in PHP_METHOD()
561 gpr_mu_unlock(&channel->wrapper->mu); in PHP_METHOD()
566 * Close the channel
569 PHP_METHOD(Channel, close) { in PHP_METHOD() argument
570 wrapped_grpc_channel *channel = in PHP_METHOD() local
572 if (channel->wrapper != NULL) { in PHP_METHOD()
573 php_grpc_channel_unref(channel->wrapper); in PHP_METHOD()
574 channel->wrapper = NULL; in PHP_METHOD()
598 if (le->channel != NULL) { in php_grpc_channel_plink_dtor()
599 php_grpc_channel_unref(le->channel); in php_grpc_channel_plink_dtor()
600 le->channel = NULL; in php_grpc_channel_plink_dtor()
623 PHP_METHOD(Channel, cleanPersistentList) { in PHP_METHOD() argument
645 * Return the info about the current channel. Test only.
648 PHP_METHOD(Channel, getChannelInfo) { in PHP_METHOD() argument
649 wrapped_grpc_channel *channel = in PHP_METHOD() local
654 sizeof("target"), channel->wrapper->target, true); in PHP_METHOD()
657 update_and_get_target_upper_bound(channel->wrapper->target, -1); in PHP_METHOD()
664 sizeof("key"), channel->wrapper->key, true); in PHP_METHOD()
665 // Info about persistent channel ref_count in PHP_METHOD()
667 sizeof("ref_count"), channel->wrapper->ref_count); in PHP_METHOD()
670 grpc_channel_check_connectivity_state(channel->wrapper->wrapped, (int)0); in PHP_METHOD()
677 // Info about the channel is closed or not in PHP_METHOD()
679 sizeof("is_valid"), (channel->wrapper == NULL)); in PHP_METHOD()
686 PHP_METHOD(Channel, getPersistentList) { in PHP_METHOD() argument
701 sizeof("target"), le->channel->target, true); in PHP_METHOD()
704 update_and_get_target_upper_bound(le->channel->target, -1); in PHP_METHOD()
711 sizeof("key"), le->channel->key, true); in PHP_METHOD()
712 // Info about persistent channel ref_count in PHP_METHOD()
714 sizeof("ref_count"), le->channel->ref_count); in PHP_METHOD()
717 grpc_channel_check_connectivity_state(le->channel->wrapped, (int)0); in PHP_METHOD()
724 add_assoc_zval(return_value, le->channel->key, ret_arr); in PHP_METHOD()
764 PHP_ME(Channel, __construct, arginfo_construct,
766 PHP_ME(Channel, getTarget, arginfo_getTarget,
768 PHP_ME(Channel, getConnectivityState, arginfo_getConnectivityState,
770 PHP_ME(Channel, watchConnectivityState, arginfo_watchConnectivityState,
772 PHP_ME(Channel, close, arginfo_close,
775 PHP_ME(Channel, getChannelInfo, arginfo_getChannelInfo,
777 PHP_ME(Channel, cleanPersistentList, arginfo_cleanPersistentList,
779 PHP_ME(Channel, getPersistentList, arginfo_getPersistentList,
785 GRPC_STARTUP_FUNCTION(channel) { in GRPC_STARTUP_FUNCTION() argument
787 INIT_CLASS_ENTRY(ce, "Grpc\\Channel", channel_methods); in GRPC_STARTUP_FUNCTION()
792 NULL, php_grpc_channel_plink_dtor, "Persistent Channel", module_number); in GRPC_STARTUP_FUNCTION()