• Home
  • Raw
  • Download

Lines Matching full:doc

178 #[doc = " The various compression algorithms supported by gRPC (not sorted by"]
179 #[doc = " compression level)"]
188 #[doc = " Compression levels allow a party with knowledge of its peer's accepted"]
189 #[doc = " encodings to request compression in an abstract way. The level-algorithm"]
190 #[doc = " mapping is performed internally and depends on the peer's supported"]
191 #[doc = " compression algorithms."]
203 #[doc = " All algs are enabled by default. This option corresponds to the channel"]
204 #[doc = " argument key behind \\a GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET"]
209 #[doc = " The default compression level. It'll be used in the absence of call"]
210 #[doc = " specific settings. This option corresponds to the channel"]
211 #[doc = " argument key behind \\a GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL. If present,"]
212 #[doc = " takes precedence over \\a default_algorithm."]
213 #[doc = " TODO(dgq): currently only available for server channels."]
220 #[doc = " The default message compression algorithm. It'll be used in the absence of"]
221 #[doc = " call specific settings. This option corresponds to the channel argument key"]
222 #[doc = " behind \\a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM."]
234 #[doc = " A grpc_slice s, if initialized, represents the byte range"]
235 #[doc = "s.bytes[0..s.length-1]."]
236 #[doc = ""]
237 #[doc = "It can have an associated ref count which has a destruction routine to be run"]
238 #[doc = "when the ref count reaches zero (see grpc_slice_new() and grp_slice_unref())."]
239 #[doc = "Multiple grpc_slice values may share a ref count."]
240 #[doc = ""]
241 #[doc = "If the slice does not have a refcount, it represents an inlined small piece"]
242 #[doc = "of data that is copied by value."]
243 #[doc = ""]
244 #[doc = "As a special case, a slice can be given refcount == uintptr_t(1), meaning"]
245 #[doc = "that the slice represents external data that is not refcounted."]
284 #[doc = " Represents an expandable array of slices, to be interpreted as a"]
285 #[doc = "single item."]
289 #[doc = " This is for internal use only. External users (i.e any code outside grpc"]
290 #[doc = " core) MUST NOT use this field"]
292 #[doc = " slices in the array (Points to the first valid grpc_slice in the array)"]
294 #[doc = " the number of slices in the array"]
296 #[doc = " the number of slices allocated in the array. External users (i.e any code"]
297 #[doc = " outside grpc core) MUST NOT use this field"]
299 #[doc = " the combined length of all slices in the array"]
301 #[doc = " inlined elements to avoid allocations"]
314 #[doc = " The clocks we support."]
317 #[doc = " Monotonic clock. Epoch undefined. Always moves forwards."]
319 #[doc = " Realtime clock. May jump forwards or backwards. Settable by"]
320 #[doc = "the system administrator. Has its epoch at 0:00:00 UTC 1 Jan 1970."]
322 #[doc = " CPU cycle time obtained by rdtsc instruction on x86 platforms. Epoch"]
323 #[doc = "undefined. Degrades to GPR_CLOCK_REALTIME on other platforms."]
325 #[doc = " Unmeasurable clock type: no base, created by taking the difference"]
326 #[doc = "between two times"]
329 #[doc = " Analogous to struct timespec. On some machines, absolute times may be in"]
330 #[doc = " local time."]
336 #[doc = " Against which clock was this time measured? (or GPR_TIMESPAN if"]
337 #[doc = "this is a relative time measure)"]
341 #[doc = " Time constants. */"]
345 #[doc = " The far future"]
349 #[doc = " The far past."]
353 #[doc = " initialize time subsystem"]
357 #[doc = " Return the current time measured from the given clocks epoch."]
361 #[doc = " Convert a timespec from one clock to another"]
365 #[doc = " Return -ve, 0, or +ve according to whether a < b, a == b, or a > b"]
366 #[doc = "respectively."]
376 #[doc = " Add and subtract times. Calculations saturate at infinities."]
383 #[doc = " Return a timespec representing a given number of time units. INT64_MIN is"]
384 #[doc = "interpreted as gpr_inf_past, and INT64_MAX as gpr_inf_future."]
406 #[doc = " Return 1 if two times are equal or within threshold of each other,"]
407 #[doc = "0 otherwise"]
415 #[doc = " Sleep until at least 'until' - an absolute timeout"]
423 #[doc = " Adds \\a delta to \\a *value, clamping the result to the range specified"]
424 #[doc = "by \\a min and \\a max. Returns the new value."]
448 #[doc = " Initialize *ev."]
452 #[doc = " Set *ev so that gpr_event_get() and gpr_event_wait() will return value."]
453 #[doc = "Requires: *ev initialized; value != NULL; no prior or concurrent calls to"]
454 #[doc = "gpr_event_set(ev, ...) since initialization."]
458 #[doc = " Return the value set by gpr_event_set(ev, ...), or NULL if no such call has"]
459 #[doc = "completed. If the result is non-NULL, all operations that occurred prior to"]
460 #[doc = "the gpr_event_set(ev, ...) set will be visible after this call returns."]
461 #[doc = "Requires: *ev initialized. This operation is faster than acquiring a mutex"]
462 #[doc = "on most platforms."]
466 #[doc = " Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is"]
467 #[doc = "exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use"]
468 #[doc = "abs_deadline==gpr_inf_future for no deadline. When the event has been"]
469 #[doc = "signalled before the call, this operation is faster than acquiring a mutex"]
470 #[doc = "on most platforms."]
477 #[doc = " Initialize *r to value n."]
481 #[doc = " Increment the reference count *r. Requires *r initialized."]
485 #[doc = " Increment the reference count *r. Requires *r initialized."]
486 #[doc = "Crashes if refcount is zero"]
490 #[doc = " Increment the reference count *r by n. Requires *r initialized, n > 0."]
494 #[doc = " Decrement the reference count *r and return non-zero iff it has reached"]
495 #[doc = "zero. . Requires *r initialized."]
499 #[doc = " Return non-zero iff the reference count of *r is one, and thus is owned"]
500 #[doc = "by exactly one object."]
504 #[doc = " Initialize *c to the value n."]
508 #[doc = " *c += inc. Requires: *c initialized."]
512 #[doc = " Return *c. Requires: *c initialized."]
516 #[doc = " Increment the refcount of s. Requires slice is initialized."]
517 #[doc = "Returns s."]
521 #[doc = " Decrement the ref count of s. If the ref count of s reaches zero, all"]
522 #[doc = "slices sharing the ref count are destroyed, and considered no longer"]
523 #[doc = "initialized. If s is ultimately derived from a call to grpc_slice_new(start,"]
524 #[doc = "len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is"]
525 #[doc = "ultimately derived from a call to grpc_slice_new_with_len(start, len, dest)"]
526 #[doc = "where dest!=NULL , then (*dest)(start, len). Requires s initialized."]
530 #[doc = " Copy slice - create a new slice that contains the same data as s"]
534 #[doc = " Create a slice pointing at some data. Calls malloc to allocate a refcount"]
535 #[doc = "for the object, and arranges that destroy will be called with the pointer"]
536 #[doc = "passed in at destruction."]
544 #[doc = " Equivalent to grpc_slice_new, but with a separate pointer that is"]
545 #[doc = "passed to the destroy function. This function can be useful when"]
546 #[doc = "the data is part of a larger structure that must be destroyed when"]
547 #[doc = "the data is no longer needed."]
556 #[doc = " Equivalent to grpc_slice_new, but with a two argument destroy function that"]
557 #[doc = "also takes the slice length."]
567 #[doc = " Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc()"]
568 #[doc = "call."]
569 #[doc = "Aborts if malloc() fails."]
576 #[doc = " Create a slice by copying a string."]
577 #[doc = "Does not preserve null terminators."]
578 #[doc = "Equivalent to:"]
579 #[doc = "size_t len = strlen(source);"]
580 #[doc = "grpc_slice slice = grpc_slice_malloc(len);"]
581 #[doc = "memcpy(slice->data, source, len);"]
585 #[doc = " Create a slice by copying a buffer."]
586 #[doc = "Equivalent to:"]
587 #[doc = "grpc_slice slice = grpc_slice_malloc(len);"]
588 #[doc = "memcpy(slice->data, source, len);"]
595 #[doc = " Create a slice pointing to constant memory"]
599 #[doc = " Create a slice pointing to constant memory"]
606 #[doc = " Return a result slice derived from s, which shares a ref count with \\a s,"]
607 #[doc = "where result.data==s.data+begin, and result.length==end-begin. The ref count"]
608 #[doc = "of \\a s is increased by one. Do not assign result back to \\a s."]
609 #[doc = "Requires s initialized, begin <= end, begin <= s.length, and"]
610 #[doc = "end <= source->length."]
614 #[doc = " The same as grpc_slice_sub, but without altering the ref count"]
618 #[doc = " Splits s into two: modifies s to be s[0:split], and returns a new slice,"]
619 #[doc = "sharing a refcount with s, that contains s[split:s.length]."]
620 #[doc = "Requires s initialized, split <= s.length"]
631 #[doc = " The same as grpc_slice_split_tail, but with an option to skip altering"]
632 #[doc = " refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to"]
633 #[doc = " grpc_slice_split_tail(...))"]
641 #[doc = " Splits s into two: modifies s to be s[split:s.length], and returns a new"]
642 #[doc = "slice, sharing a refcount with s, that contains s[0:split]."]
643 #[doc = "Requires s initialized, split <= s.length"]
653 #[doc = " Returns <0 if a < b, ==0 if a == b, >0 if a > b"]
654 #[doc = "The order is arbitrary, and is not guaranteed to be stable across different"]
655 #[doc = "versions of the API."]
665 #[doc = " return non-zero if the first blen bytes of a are equal to b"]
673 #[doc = " return the index of the last instance of \\a c in \\a s, or -1 if not found"]
680 #[doc = " return the index of the first occurrence of \\a needle in \\a haystack, or -1"]
681 #[doc = "if it's not found"]
685 #[doc = " Do two slices point at the same memory, with the same length"]
686 #[doc = "If a or b is inlined, actually compares data"]
690 #[doc = " Return a slice pointing to newly allocated memory that has the same contents"]
691 #[doc = " as \\a s"]
695 #[doc = " Return a copy of slice as a C string. Offers no protection against embedded"]
696 #[doc = "NULL's. Returned string must be freed with gpr_free."]
701 #[doc = " Not an error; returned on success"]
703 #[doc = " The operation was cancelled (typically by the caller)."]
705 #[doc = " Unknown error. An example of where this error may be returned is"]
706 #[doc = "if a Status value received from another address space belongs to"]
707 #[doc = "an error-space that is not known in this address space. Also"]
708 #[doc = "errors raised by APIs that do not return enough error information"]
709 #[doc = "may be converted to this error."]
711 #[doc = " Client specified an invalid argument. Note that this differs"]
712 #[doc = "from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments"]
713 #[doc = "that are problematic regardless of the state of the system"]
714 #[doc = "(e.g., a malformed file name)."]
716 #[doc = " Deadline expired before operation could complete. For operations"]
717 #[doc = "that change the state of the system, this error may be returned"]
718 #[doc = "even if the operation has completed successfully. For example, a"]
719 #[doc = "successful response from a server could have been delayed long"]
720 #[doc = "enough for the deadline to expire."]
722 #[doc = " Some requested entity (e.g., file or directory) was not found."]
724 #[doc = " Some entity that we attempted to create (e.g., file or directory)"]
725 #[doc = "already exists."]
727 #[doc = " The caller does not have permission to execute the specified"]
728 #[doc = "operation. PERMISSION_DENIED must not be used for rejections"]
729 #[doc = "caused by exhausting some resource (use RESOURCE_EXHAUSTED"]
730 #[doc = "instead for those errors). PERMISSION_DENIED must not be"]
731 #[doc = "used if the caller can not be identified (use UNAUTHENTICATED"]
732 #[doc = "instead for those errors)."]
734 #[doc = " The request does not have valid authentication credentials for the"]
735 #[doc = "operation."]
737 #[doc = " Some resource has been exhausted, perhaps a per-user quota, or"]
738 #[doc = "perhaps the entire file system is out of space."]
740 #[doc = " Operation was rejected because the system is not in a state"]
741 #[doc = "required for the operation's execution. For example, directory"]
742 #[doc = "to be deleted may be non-empty, an rmdir operation is applied to"]
743 #[doc = "a non-directory, etc."]
744 #[doc = ""]
745 #[doc = "A litmus test that may help a service implementor in deciding"]
746 #[doc = "between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:"]
747 #[doc = "(a) Use UNAVAILABLE if the client can retry just the failing call."]
748 #[doc = "(b) Use ABORTED if the client should retry at a higher-level"]
749 #[doc = "(e.g., restarting a read-modify-write sequence)."]
750 #[doc = "(c) Use FAILED_PRECONDITION if the client should not retry until"]
751 #[doc = "the system state has been explicitly fixed. E.g., if an \"rmdir\""]
752 #[doc = "fails because the directory is non-empty, FAILED_PRECONDITION"]
753 #[doc = "should be returned since the client should not retry unless"]
754 #[doc = "they have first fixed up the directory by deleting files from it."]
755 #[doc = "(d) Use FAILED_PRECONDITION if the client performs conditional"]
756 #[doc = "REST Get/Update/Delete on a resource and the resource on the"]
757 #[doc = "server does not match the condition. E.g., conflicting"]
758 #[doc = "read-modify-write on the same resource."]
760 #[doc = " The operation was aborted, typically due to a concurrency issue"]
761 #[doc = "like sequencer check failures, transaction aborts, etc."]
762 #[doc = ""]
763 #[doc = "See litmus test above for deciding between FAILED_PRECONDITION,"]
764 #[doc = "ABORTED, and UNAVAILABLE."]
766 #[doc = " Operation was attempted past the valid range. E.g., seeking or"]
767 #[doc = "reading past end of file."]
768 #[doc = ""]
769 #[doc = "Unlike INVALID_ARGUMENT, this error indicates a problem that may"]
770 #[doc = "be fixed if the system state changes. For example, a 32-bit file"]
771 #[doc = "system will generate INVALID_ARGUMENT if asked to read at an"]
772 #[doc = "offset that is not in the range [0,2^32-1], but it will generate"]
773 #[doc = "OUT_OF_RANGE if asked to read from an offset past the current"]
774 #[doc = "file size."]
775 #[doc = ""]
776 #[doc = "There is a fair bit of overlap between FAILED_PRECONDITION and"]
777 #[doc = "OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific"]
778 #[doc = "error) when it applies so that callers who are iterating through"]
779 #[doc = "a space can easily look for an OUT_OF_RANGE error to detect when"]
780 #[doc = "they are done."]
782 #[doc = " Operation is not implemented or not supported/enabled in this service."]
784 #[doc = " Internal errors. Means some invariants expected by underlying"]
785 #[doc = "system has been broken. If you see one of these errors,"]
786 #[doc = "something is very broken."]
788 #[doc = " The service is currently unavailable. This is a most likely a"]
789 #[doc = "transient condition and may be corrected by retrying with"]
790 #[doc = "a backoff. Note that it is not always safe to retry non-idempotent"]
791 #[doc = "operations."]
792 #[doc = ""]
793 #[doc = "WARNING: Although data MIGHT not have been transmitted when this"]
794 #[doc = "status occurs, there is NOT A GUARANTEE that the server has not seen"]
795 #[doc = "anything. So in general it is unsafe to retry on this status code"]
796 #[doc = "if the call is non-idempotent."]
797 #[doc = ""]
798 #[doc = "See litmus test above for deciding between FAILED_PRECONDITION,"]
799 #[doc = "ABORTED, and UNAVAILABLE."]
801 #[doc = " Unrecoverable data loss or corruption."]
803 #[doc = " Force users to include a default branch:"]
885 #[doc = " Type specifier for grpc_arg"]
906 #[doc = " A single argument... each argument has a key and a value"]
907 #[doc = ""]
908 #[doc = "A note on naming keys:"]
909 #[doc = "Keys are namespaced into groups, usually grouped by library, and are"]
910 #[doc = "keys for module XYZ are named XYZ.key1, XYZ.key2, etc. Module names must"]
911 #[doc = "be restricted to the regex [A-Za-z][_A-Za-z0-9]{,15}."]
912 #[doc = "Key names must be restricted to the regex [A-Za-z][_A-Za-z0-9]{,47}."]
913 #[doc = ""]
914 #[doc = "GRPC core library keys are prefixed by grpc."]
915 #[doc = ""]
916 #[doc = "Library authors are strongly encouraged to \\#define symbolic constants for"]
917 #[doc = "their keys so that it's possible to change them in the future."]
952 #[doc = " An array of arguments that can be passed around."]
953 #[doc = ""]
954 #[doc = "Used to set optional channel-level configuration."]
955 #[doc = "These configuration options are modelled as key-value pairs as defined"]
956 #[doc = "by grpc_arg; keys are strings to allow easy backwards-compatible extension"]
957 #[doc = "by arbitrary parties. All evaluation is performed at channel creation"]
958 #[doc = "time (i.e. the keys and values in this structure need only live through the"]
959 #[doc = "creation invocation)."]
960 #[doc = ""]
961 #[doc = "However, if one of the args has grpc_arg_type==GRPC_ARG_POINTER, then the"]
962 #[doc = "grpc_arg_pointer_vtable must live until the channel args are done being"]
963 #[doc = "used by core (i.e. when the object for use with which they were passed"]
964 #[doc = "is destroyed)."]
965 #[doc = ""]
966 #[doc = "See the description of the \\ref grpc_arg_keys \"available args\" for more"]
967 #[doc = "details."]
975 #[doc = " Result of a grpc call. If the caller satisfies the prerequisites of a"]
976 #[doc = "particular operation, the grpc_call_error returned will be GRPC_CALL_OK."]
977 #[doc = "Receiving any other value listed here is an indication of a bug in the"]
978 #[doc = "caller."]
981 #[doc = " everything went ok"]
983 #[doc = " something failed, we don't know what"]
985 #[doc = " this method is not available on the server"]
987 #[doc = " this method is not available on the client"]
989 #[doc = " this method must be called before server_accept"]
991 #[doc = " this method must be called before invoke"]
993 #[doc = " this method must be called after invoke"]
995 #[doc = " this call is already finished"]
996 #[doc = "(writes_done or write_status has already been called)"]
998 #[doc = " there is already an outstanding read/write operation on the call"]
1000 #[doc = " the flags value was illegal for this call"]
1002 #[doc = " invalid metadata was passed to this call"]
1004 #[doc = " invalid message was passed to this call"]
1006 #[doc = " completion queue for notification has not been registered"]
1007 #[doc = " with the server"]
1009 #[doc = " this batch of operations leads to more operations than allowed"]
1011 #[doc = " payload type requested is not the type registered"]
1013 #[doc = " completion queue has been shutdown"]
1016 #[doc = " A single metadata element"]
1020 #[doc = " the key, value values are expected to line up with grpc_mdelem: if"]
1021 #[doc = "changing them, update metadata.h at the same time."]
1026 #[doc = " The following fields are reserved for grpc internal use."]
1027 #[doc = "There is no need to initialize them, and they will be set to garbage"]
1028 #[doc = "during calls to grpc."]
1044 #[doc = " The type of completion (for grpc_event)"]
1047 #[doc = " Shutting down"]
1049 #[doc = " No event before timeout"]
1051 #[doc = " Operation completion"]
1054 #[doc = " The result of an operation."]
1055 #[doc = ""]
1056 #[doc = "Returned by a completion queue when the operation started with tag."]
1060 #[doc = " The type of the completion."]
1062 #[doc = " If the grpc_completion_type is GRPC_OP_COMPLETE, this field indicates"]
1063 #[doc = "whether the operation was successful or not; 0 in case of failure and"]
1064 #[doc = "non-zero in case of success."]
1065 #[doc = "If grpc_completion_type is GRPC_QUEUE_SHUTDOWN or GRPC_QUEUE_TIMEOUT, this"]
1066 #[doc = "field is guaranteed to be 0"]
1068 #[doc = " The tag passed to grpc_call_start_batch etc to start this operation."]
1069 #[doc = "Only* GRPC_OP_COMPLETE has a tag. For all other grpc_completion_type"]
1070 #[doc = "values, tag is uninitialized."]
1099 #[doc = " Send initial metadata: one and only one instance MUST be sent for each"]
1100 #[doc = "call, unless the call was cancelled - in which case this can be skipped."]
1101 #[doc = "This op completes after all bytes of metadata have been accepted by"]
1102 #[doc = "outgoing flow control."]
1104 #[doc = " Send a message: 0 or more of these operations can occur for each call."]
1105 #[doc = "This op completes after all bytes for the message have been accepted by"]
1106 #[doc = "outgoing flow control."]
1108 #[doc = " Send a close from the client: one and only one instance MUST be sent from"]
1109 #[doc = "the client, unless the call was cancelled - in which case this can be"]
1110 #[doc = "skipped. This op completes after all bytes for the call"]
1111 #[doc = "(including the close) have passed outgoing flow control."]
1113 #[doc = " Send status from the server: one and only one instance MUST be sent from"]
1114 #[doc = "the server unless the call was cancelled - in which case this can be"]
1115 #[doc = "skipped. This op completes after all bytes for the call"]
1116 #[doc = "(including the status) have passed outgoing flow control."]
1118 #[doc = " Receive initial metadata: one and only one MUST be made on the client,"]
1119 #[doc = "must not be made on the server."]
1120 #[doc = "This op completes after all initial metadata has been read from the"]
1121 #[doc = "peer."]
1123 #[doc = " Receive a message: 0 or more of these operations can occur for each call."]
1124 #[doc = "This op completes after all bytes of the received message have been"]
1125 #[doc = "read, or after a half-close has been received on this call."]
1127 #[doc = " Receive status on the client: one and only one must be made on the client."]
1128 #[doc = "This operation always succeeds, meaning ops paired with this operation"]
1129 #[doc = "will also appear to succeed, even though they may not have. In that case"]
1130 #[doc = "the status will indicate some failure."]
1131 #[doc = "This op completes after all activity on the call has completed."]
1133 #[doc = " Receive close on the server: one and only one must be made on the"]
1134 #[doc = "server. This op completes after the close has been received by the"]
1135 #[doc = "server. This operation always succeeds, meaning ops paired with"]
1136 #[doc = "this operation will also appear to succeed, even though they may not"]
1137 #[doc = "have."]
1140 #[doc = " Operation data: one field for each op type (except SEND_CLOSE_FROM_CLIENT"]
1141 #[doc = "which has no arguments)"]
1145 #[doc = " Operation type, as defined by grpc_op_type"]
1147 #[doc = " Write flags bitset for grpc_begin_messages"]
1149 #[doc = " Reserved for future usage"]
1165 #[doc = " Reserved for future usage"]
1174 #[doc = " If \\a is_set, \\a compression_level will be used for the call."]
1175 #[doc = " Otherwise, \\a compression_level won't be considered"]
1186 #[doc = " This op takes ownership of the slices in send_message. After"]
1187 #[doc = " a call completes, the contents of send_message are not guaranteed"]
1188 #[doc = " and likely empty. The original owner should still call"]
1189 #[doc = " grpc_byte_buffer_destroy() on this object however."]
1198 #[doc = " optional: set to NULL if no details need sending, non-NULL if they do"]
1199 #[doc = " pointer will not be retained past the start_batch call"]
1202 #[doc = " ownership of the array is with the caller, but ownership of the elements"]
1203 #[doc = "stays with the call object (ie key, value members are owned by the call"]
1204 #[doc = "object, recv_initial_metadata->array is owned by the caller)."]
1205 #[doc = "After the operation completes, call grpc_metadata_array_destroy on this"]
1206 #[doc = "value, or reuse it in a future op."]
1212 #[doc = " ownership of the byte buffer is moved to the caller; the caller must"]
1213 #[doc = "call grpc_byte_buffer_destroy on this value, or reuse it in a future op."]
1214 #[doc = "The returned byte buffer will be NULL if trailing metadata was"]
1215 #[doc = "received instead of a message."]
1224 #[doc = " ownership of the array is with the caller, but ownership of the"]
1225 #[doc = "elements stays with the call object (ie key, value members are owned"]
1226 #[doc = "by the call object, trailing_metadata->array is owned by the caller)."]
1227 #[doc = "After the operation completes, call grpc_metadata_array_destroy on"]
1228 #[doc = "this value, or reuse it in a future op."]
1232 #[doc = " If this is not nullptr, it will be populated with the full fidelity"]
1233 #[doc = " error string for debugging purposes. The application is responsible"]
1234 #[doc = " for freeing the data by using gpr_free()."]
1240 #[doc = " out argument, set to 1 if the call failed at the server for"]
1241 #[doc = "a reason other than a non-OK status (cancel, deadline"]
1242 #[doc = "exceeded, network failure, etc.), 0 otherwise (RPC processing ran to"]
1243 #[doc = "completion and was able to provide any status from the server)"]
1260 #[doc = " Information requested from the channel."]
1264 #[doc = " If non-NULL, will be set to point to a string indicating the LB"]
1265 #[doc = " policy name. Caller takes ownership."]
1267 #[doc = " If non-NULL, will be set to point to a string containing the"]
1268 #[doc = " service config used by the channel in JSON form."]
1277 #[doc = " Completion queues internally MAY maintain a set of file descriptors in a"]
1278 #[doc = "structure called 'pollset'. This enum specifies if a completion queue has an"]
1279 #[doc = "associated pollset and any restrictions on the type of file descriptors that"]
1280 #[doc = "can be present in the pollset."]
1281 #[doc = ""]
1282 #[doc = "I/O progress can only be made when grpc_completion_queue_next() or"]
1283 #[doc = "grpc_completion_queue_pluck() are called on the completion queue (unless the"]
1284 #[doc = "grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important"]
1285 #[doc = "to actively call these APIs"]
1288 #[doc = " The completion queue will have an associated pollset and there is no"]
1289 #[doc = "restriction on the type of file descriptors the pollset may contain"]
1291 #[doc = " Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will"]
1292 #[doc = "not contain any 'listening file descriptors' (i.e file descriptors used to"]
1293 #[doc = "listen to incoming channels)"]
1295 #[doc = " The completion queue will not have an associated pollset. Note that"]
1296 #[doc = "grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still"]
1297 #[doc = "be called to pop events from the completion queue; it is not required to"]
1298 #[doc = "call them actively to make I/O progress"]
1302 #[doc = " Specifies the type of APIs to use to pop events from the completion queue"]
1305 #[doc = " Events are popped out by calling grpc_completion_queue_next() API ONLY"]
1307 #[doc = " Events are popped out by calling grpc_completion_queue_pluck() API ONLY"]
1309 #[doc = " Events trigger a callback specified as the tag"]
1312 #[doc = " Specifies an interface class to be used as a tag for callback-based"]
1313 #[doc = " completion queues. This can be used directly, as the first element of a"]
1314 #[doc = " struct in C, or as a base class in C++. Its \"run\" value should be assigned to"]
1315 #[doc = " some non-member function, such as a static method."]
1319 #[doc = " The run member specifies a function that will be called when this"]
1320 #[doc = "tag is extracted from the completion queue. Its arguments will be a"]
1321 #[doc = "pointer to this functor and a boolean that indicates whether the"]
1322 #[doc = "operation succeeded (non-zero) or failed (zero)"]
1326 #[doc = " The inlineable member specifies whether this functor can be run inline."]
1327 #[doc = "This should only be used for trivial internally-defined functors."]
1329 #[doc = " The following fields are not API. They are meant for internal use."]
1336 #[doc = " The version number of this structure. More fields might be added to this"]
1337 #[doc = "structure in future."]
1339 #[doc = " Set to GRPC_CQ_CURRENT_VERSION"]
1342 #[doc = " When creating a callbackable CQ, pass in a functor to get invoked when"]
1343 #[doc = " shutdown is complete"]
1352 #[doc = " initialize a slice buffer"]
1356 #[doc = " destroy a slice buffer - unrefs any held elements"]
1360 #[doc = " Add an element to a slice buffer - takes ownership of the slice."]
1361 #[doc = "This function is allowed to concatenate the passed in slice to the end of"]
1362 #[doc = "some other slice if desired by the slice buffer."]
1366 #[doc = " add an element to a slice buffer - takes ownership of the slice and returns"]
1367 #[doc = "the index of the slice."]
1368 #[doc = "Guarantees that the slice will not be concatenated at the end of another"]
1369 #[doc = "slice (i.e. the data for this slice will begin at the first byte of the"]
1370 #[doc = "slice at the returned index in sb->slices)"]
1371 #[doc = "The implementation MAY decide to concatenate data at the end of a small"]
1372 #[doc = "slice added in this fashion."]
1379 #[doc = " add a very small (less than 8 bytes) amount of data to the end of a slice"]
1380 #[doc = "buffer: returns a pointer into which to add the data"]
1384 #[doc = " pop the last buffer, but don't unref it"]
1388 #[doc = " clear a slice buffer, unref all elements"]
1392 #[doc = " swap the contents of two slice buffers"]
1396 #[doc = " move all of the elements of src into dst"]
1400 #[doc = " remove n bytes from the end of a slice buffer"]
1408 #[doc = " move the first n bytes of src into dst"]
1416 #[doc = " move the first n bytes of src into dst without adding references"]
1424 #[doc = " move the first n bytes of src into dst (copying them)"]
1432 #[doc = " take the first slice in the slice buffer"]
1436 #[doc = " undo the above with (a possibly different) \\a slice"]
1440 #[doc = " Returns a RAW byte buffer instance over the given slices (up to \\a nslices)."]
1441 #[doc = ""]
1442 #[doc = " Increases the reference count for all \\a slices processed. The user is"]
1443 #[doc = " responsible for invoking grpc_byte_buffer_destroy on the returned instance."]
1450 #[doc = " Returns a *compressed* RAW byte buffer instance over the given slices (up to"]
1451 #[doc = " \\a nslices). The \\a compression argument defines the compression algorithm"]
1452 #[doc = " used to generate the data in \\a slices."]
1453 #[doc = ""]
1454 #[doc = " Increases the reference count for all \\a slices processed. The user is"]
1455 #[doc = " responsible for invoking grpc_byte_buffer_destroy on the returned instance."]
1463 #[doc = " Copies input byte buffer \\a bb."]
1464 #[doc = ""]
1465 #[doc = " Increases the reference count of all the source slices. The user is"]
1466 #[doc = " responsible for calling grpc_byte_buffer_destroy over the returned copy."]
1470 #[doc = " Returns the size of the given byte buffer, in bytes."]
1474 #[doc = " Destroys \\a byte_buffer deallocating all its memory."]
1478 #[doc = " Initialize \\a reader to read over \\a buffer."]
1479 #[doc = " Returns 1 upon success, 0 otherwise."]
1486 #[doc = " Cleanup and destroy \\a reader"]
1490 #[doc = " Updates \\a slice with the next piece of data from from \\a reader and returns"]
1491 #[doc = " 1. Returns 0 at the end of the stream. Caller is responsible for calling"]
1492 #[doc = " grpc_slice_unref on the result."]
1499 #[doc = " EXPERIMENTAL API - This function may be removed and changed, in the future."]
1500 #[doc = ""]
1501 #[doc = " Updates \\a slice with the next piece of data from from \\a reader and returns"]
1502 #[doc = " 1. Returns 0 at the end of the stream. Caller is responsible for making sure"]
1503 #[doc = " the slice pointer remains valid when accessed."]
1504 #[doc = ""]
1505 #[doc = " NOTE: Do not use this function unless the caller can guarantee that the"]
1506 #[doc = " underlying grpc_byte_buffer outlasts the use of the slice. This is only"]
1507 #[doc = " safe when the underlying grpc_byte_buffer remains immutable while slice"]
1508 #[doc = " is being accessed."]
1515 #[doc = " Merge all data from \\a reader into single slice"]
1519 #[doc = " Returns a RAW byte buffer instance from the output of \\a reader."]
1525 #[doc = " Return if an algorithm is message compression algorithm."]
1531 #[doc = " Return if an algorithm is stream compression algorithm."]
1537 #[doc = " Parses the \\a slice as a grpc_compression_algorithm instance and updating \\a"]
1538 #[doc = " algorithm. Returns 1 upon success, 0 otherwise."]
1545 #[doc = " Updates \\a name with the encoding name corresponding to a valid \\a"]
1546 #[doc = " algorithm. Note that \\a name is statically allocated and must *not* be freed."]
1547 #[doc = " Returns 1 upon success, 0 otherwise."]
1554 #[doc = " Returns the compression algorithm corresponding to \\a level for the"]
1555 #[doc = " compression algorithms encoded in the \\a accepted_encodings bitset."]
1565 #[doc = " Mark \\a algorithm as enabled in \\a opts."]
1572 #[doc = " Mark \\a algorithm as disabled in \\a opts."]
1579 #[doc = " Returns true if \\a algorithm is marked as enabled in \\a opts."]
1586 #[doc = " Connectivity state of a channel."]
1589 #[doc = " channel is idle"]
1591 #[doc = " channel is connecting"]
1593 #[doc = " channel is ready for work"]
1595 #[doc = " channel has seen a failure but expects to recover"]
1597 #[doc = " channel has seen a failure that it cannot recover from"]
1601 #[doc = " \\mainpage GRPC Core"]
1602 #[doc = ""]
1603 #[doc = " The GRPC Core library is a low-level library designed to be wrapped by higher"]
1604 #[doc = " level libraries. The top-level API is provided in grpc.h. Security related"]
1605 #[doc = " functionality lives in grpc_security.h."]
1618 #[doc = " Initialize the grpc library."]
1619 #[doc = ""]
1620 #[doc = "After it's called, a matching invocation to grpc_shutdown() is expected."]
1621 #[doc = ""]
1622 #[doc = "It is not safe to call any other grpc functions before calling this."]
1623 #[doc = "(To avoid overhead, little checking is done, and some things may work. We"]
1624 #[doc = "do not warrant that they will continue to do so in future revisions of this"]
1625 #[doc = "library)."]
1629 #[doc = " Shut down the grpc library."]
1630 #[doc = ""]
1631 #[doc = "Before it's called, there should haven been a matching invocation to"]
1632 #[doc = "grpc_init()."]
1633 #[doc = ""]
1634 #[doc = "The last call to grpc_shutdown will initiate cleaning up of grpc library"]
1635 #[doc = "internals, which can happen in another thread. Once the clean-up is done,"]
1636 #[doc = "no memory is used by grpc, nor are any instructions executing within the"]
1637 #[doc = "grpc library. Prior to calling, all application owned grpc objects must"]
1638 #[doc = "have been destroyed."]
1642 #[doc = " EXPERIMENTAL. Returns 1 if the grpc library has been initialized."]
1643 #[doc = "TODO(ericgribkoff) Decide if this should be promoted to non-experimental as"]
1644 #[doc = "part of stabilizing the fork support API, as tracked in"]
1645 #[doc = "https://github.com/grpc/grpc/issues/15334"]
1649 #[doc = " DEPRECATED. Recommend to use grpc_shutdown only"]
1653 #[doc = " Return a string representing the current version of grpc"]
1657 #[doc = " Return a string specifying what the 'g' in gRPC stands for"]
1661 #[doc = " Returns the completion queue factory based on the attributes. MAY return a"]
1662 #[doc = "NULL if no factory can be found"]
1668 #[doc = " Helper function to create a completion queue with grpc_cq_completion_type"]
1669 #[doc = "of GRPC_CQ_NEXT and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING"]
1675 #[doc = " Helper function to create a completion queue with grpc_cq_completion_type"]
1676 #[doc = "of GRPC_CQ_PLUCK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING"]
1682 #[doc = " Helper function to create a completion queue with grpc_cq_completion_type"]
1683 #[doc = "of GRPC_CQ_CALLBACK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING."]
1684 #[doc = "This function is experimental."]
1691 #[doc = " Create a completion queue"]
1699 #[doc = " Blocks until an event is available, the completion queue is being shut down,"]
1700 #[doc = "or deadline is reached."]
1701 #[doc = ""]
1702 #[doc = "Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout,"]
1703 #[doc = "otherwise a grpc_event describing the event that occurred."]
1704 #[doc = ""]
1705 #[doc = "Callers must not call grpc_completion_queue_next and"]
1706 #[doc = "grpc_completion_queue_pluck simultaneously on the same completion queue."]
1714 #[doc = " Blocks until an event with tag 'tag' is available, the completion queue is"]
1715 #[doc = "being shutdown or deadline is reached."]
1716 #[doc = ""]
1717 #[doc = "Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout,"]
1718 #[doc = "otherwise a grpc_event describing the event that occurred."]
1719 #[doc = ""]
1720 #[doc = "Callers must not call grpc_completion_queue_next and"]
1721 #[doc = "grpc_completion_queue_pluck simultaneously on the same completion queue."]
1722 #[doc = ""]
1723 #[doc = "Completion queues support a maximum of GRPC_MAX_COMPLETION_QUEUE_PLUCKERS"]
1724 #[doc = "concurrently executing plucks at any time."]
1733 #[doc = " Begin destruction of a completion queue. Once all possible events are"]
1734 #[doc = "drained then grpc_completion_queue_next will start to produce"]
1735 #[doc = "GRPC_QUEUE_SHUTDOWN events only. At that point it's safe to call"]
1736 #[doc = "grpc_completion_queue_destroy."]
1737 #[doc = ""]
1738 #[doc = "After calling this function applications should ensure that no"]
1739 #[doc = "NEW work is added to be published on this completion queue."]
1743 #[doc = " Destroy a completion queue. The caller must ensure that the queue is"]
1744 #[doc = "drained and no threads are executing grpc_completion_queue_next"]
1748 #[doc = " EXPERIMENTAL API ************/"]
1749 #[doc = " grpc_flush_cq_tls_cache() MUST be called on the same thread,"]
1750 #[doc = " with the same cq."]
1754 #[doc = " EXPERIMENTAL API ************/"]
1755 #[doc = " Returns 1 if there was contents in the cache. If there was an event"]
1756 #[doc = " in \\a cq tls cache, its tag is placed in tag, and ok is set to the"]
1757 #[doc = " event success."]
1765 #[doc = " Check the connectivity state of a channel."]
1772 #[doc = " Number of active \"external connectivity state watchers\" attached to a"]
1773 #[doc = " channel."]
1774 #[doc = " Useful for testing."]
1780 #[doc = " Watch for a change in connectivity state."]
1781 #[doc = "Once the channel connectivity state is different from last_observed_state,"]
1782 #[doc = "tag will be enqueued on cq with success=1."]
1783 #[doc = "If deadline expires BEFORE the state is changed, tag will be enqueued on cq"]
1784 #[doc = "with success=0."]
1794 #[doc = " Check whether a grpc channel supports connectivity watcher"]
1800 #[doc = " Create a call given a grpc_channel, in order to call 'method'. All"]
1801 #[doc = "completions are sent to 'completion_queue'. 'method' and 'host' need only"]
1802 #[doc = "live through the invocation of this function."]
1803 #[doc = "If parent_call is non-NULL, it must be a server-side call. It will be used"]
1804 #[doc = "to propagate properties from the server call to this new client call,"]
1805 #[doc = "depending on the value of \\a propagation_mask (see propagation_bits.h for"]
1806 #[doc = "possible values)."]
1819 #[doc = " Pre-register a method/host pair on a channel."]
1820 #[doc = "method and host are not owned and must remain alive while the channel is"]
1821 #[doc = "alive."]
1830 #[doc = " Create a call given a handle returned from grpc_channel_register_call."]
1831 #[doc = "\\sa grpc_channel_create_call."]
1843 #[doc = " Allocate memory in the grpc_call arena: this memory is automatically"]
1844 #[doc = "discarded at call completion"]
1848 #[doc = " Start a batch of operations defined in the array ops; when complete, post a"]
1849 #[doc = "completion of type 'tag' to the completion queue bound to the call."]
1850 #[doc = "The order of ops specified in the batch has no significance."]
1851 #[doc = "Only one operation of each type can be active at once in any given"]
1852 #[doc = "batch."]
1853 #[doc = "If a call to grpc_call_start_batch returns GRPC_CALL_OK you must call"]
1854 #[doc = "grpc_completion_queue_next or grpc_completion_queue_pluck on the completion"]
1855 #[doc = "queue associated with 'call' for work to be performed. If a call to"]
1856 #[doc = "grpc_call_start_batch returns any value other than GRPC_CALL_OK it is"]
1857 #[doc = "guaranteed that no state associated with 'call' is changed and it is not"]
1858 #[doc = "appropriate to call grpc_completion_queue_next or"]
1859 #[doc = "grpc_completion_queue_pluck consequent to the failed grpc_call_start_batch"]
1860 #[doc = "call."]
1861 #[doc = "If a call to grpc_call_start_batch with an empty batch returns"]
1862 #[doc = "GRPC_CALL_OK, the tag is put in the completion queue immediately."]
1863 #[doc = "THREAD SAFETY: access to grpc_call_start_batch in multi-threaded environment"]
1864 #[doc = "needs to be synchronized. As an optimization, you may synchronize batches"]
1865 #[doc = "containing just send operations independently from batches containing just"]
1866 #[doc = "receive operations. Access to grpc_call_start_batch with an empty batch is"]
1867 #[doc = "thread-compatible."]
1877 #[doc = " Returns a newly allocated string representing the endpoint to which this"]
1878 #[doc = "call is communicating with. The string is in the uri format accepted by"]
1879 #[doc = "grpc_channel_create."]
1880 #[doc = "The returned string should be disposed of with gpr_free()."]
1881 #[doc = ""]
1882 #[doc = "WARNING: this value is never authenticated or subject to any security"]
1883 #[doc = "related code. It must not be used for any authentication related"]
1884 #[doc = "functionality. Instead, use grpc_auth_context."]
1893 #[doc = " Set census context for a call; Must be called before first call to"]
1894 #[doc = "grpc_call_start_batch()."]
1898 #[doc = " Retrieve the calls current census context."]
1902 #[doc = " Return a newly allocated string representing the target a channel was"]
1903 #[doc = "created for."]
1907 #[doc = " Request info about the channel."]
1908 #[doc = "\\a channel_info indicates what information is being requested and"]
1909 #[doc = "how that information will be returned."]
1910 #[doc = "\\a channel_info is owned by the caller."]
1917 #[doc = " EXPERIMENTAL. Resets the channel's connect backoff."]
1918 #[doc = "TODO(roth): When we see whether this proves useful, either promote"]
1919 #[doc = "to non-experimental or remove it."]
1928 #[doc = " Releases a channel credentials object."]
1929 #[doc = "The creator of the credentials object is responsible for its release."]
1938 #[doc = " Releases a server_credentials object."]
1939 #[doc = "The creator of the server_credentials object is responsible for its release."]
1943 #[doc = " Creates a secure channel using the passed-in credentials. Additional"]
1944 #[doc = "channel level configuration MAY be provided by grpc_channel_args, though"]
1945 #[doc = "the expectation is that most clients will want to simply pass NULL. The"]
1946 #[doc = "user data in 'args' need only live through the invocation of this function."]
1947 #[doc = "However, if any args of the 'pointer' type are passed, then the referenced"]
1948 #[doc = "vtable must be maintained by the caller until grpc_channel_destroy"]
1949 #[doc = "terminates. See grpc_channel_args definition for more on this."]
1957 #[doc = " Create a lame client: this client fails every operation attempted on it."]
1965 #[doc = " Close and destroy a grpc channel"]
1969 #[doc = " Cancel an RPC."]
1970 #[doc = "Can be called multiple times, from any thread."]
1971 #[doc = "THREAD-SAFETY grpc_call_cancel and grpc_call_cancel_with_status"]
1972 #[doc = "are thread-safe, and can be called at any point before grpc_call_unref"]
1973 #[doc = "is called."]
1980 #[doc = " Cancel an RPC."]
1981 #[doc = "Can be called multiple times, from any thread."]
1982 #[doc = "If a status has not been received for the call, set it to the status code"]
1983 #[doc = "and description passed in."]
1984 #[doc = "Importantly, this function does not send status nor description to the"]
1985 #[doc = "remote endpoint."]
1986 #[doc = "Note that \\a description doesn't need be a static string."]
1987 #[doc = "It doesn't need to be alive after the call to"]
1988 #[doc = "grpc_call_cancel_with_status completes."]
2000 #[doc = " Ref a call."]
2001 #[doc = "THREAD SAFETY: grpc_call_ref is thread-compatible"]
2005 #[doc = " Unref a call."]
2006 #[doc = "THREAD SAFETY: grpc_call_unref is thread-compatible"]
2010 #[doc = " Request notification of a new call."]
2011 #[doc = "Once a call is received, a notification tagged with \\a tag_new is added to"]
2012 #[doc = "\\a cq_for_notification. \\a call, \\a details and \\a request_metadata are"]
2013 #[doc = "updated with the appropriate call information. \\a cq_bound_to_call is bound"]
2014 #[doc = "to \\a call, and batch operation notifications for that call will be posted"]
2015 #[doc = "to \\a cq_bound_to_call."]
2016 #[doc = "Note that \\a cq_for_notification must have been registered to the server via"]
2017 #[doc = "\\a grpc_server_register_completion_queue."]
2029 #[doc = " How to handle payloads for a registered method"]
2032 #[doc = " Don't try to read the payload"]
2034 #[doc = " Read the initial payload as a byte buffer"]
2038 #[doc = " Registers a method in the server."]
2039 #[doc = "Methods to this (host, method) pair will not be reported by"]
2040 #[doc = "grpc_server_request_call, but instead be reported by"]
2041 #[doc = "grpc_server_request_registered_call when passed the appropriate"]
2042 #[doc = "registered_method (as returned by this function)."]
2043 #[doc = "Must be called before grpc_server_start."]
2044 #[doc = "Returns NULL on failure."]
2054 #[doc = " Request notification of a new pre-registered call. 'cq_for_notification'"]
2055 #[doc = "must have been registered to the server via"]
2056 #[doc = "grpc_server_register_completion_queue."]
2070 #[doc = " Create a server. Additional configuration for each incoming channel can"]
2071 #[doc = "be specified with args. If no additional configuration is needed, args can"]
2072 #[doc = "be NULL. The user data in 'args' need only live through the invocation of"]
2073 #[doc = "this function. However, if any args of the 'pointer' type are passed, then"]
2074 #[doc = "the referenced vtable must be maintained by the caller until"]
2075 #[doc = "grpc_server_destroy terminates. See grpc_channel_args definition for more"]
2076 #[doc = "on this."]
2083 #[doc = " Register a completion queue with the server. Must be done for any"]
2084 #[doc = "notification completion queue that is passed to grpc_server_request_*_call"]
2085 #[doc = "and to grpc_server_shutdown_and_notify. Must be performed prior to"]
2086 #[doc = "grpc_server_start."]
2117 #[doc = " EXPERIMENTAL. Creates an xDS config fetcher."]
2124 #[doc = " EXPERIMENTAL. Destroys a config fetcher."]
2128 #[doc = " EXPERIMENTAL. Sets the server's config fetcher. Takes ownership."]
2129 #[doc = "Must be called before adding ports"]
2136 #[doc = " Add a HTTP2 over an encrypted link over tcp listener."]
2137 #[doc = "Returns bound port number on success, 0 on failure."]
2138 #[doc = "REQUIRES: server not started"]
2146 #[doc = " Start a server - tells all listeners to start listening"]
2150 #[doc = " Begin shutting down a server."]
2151 #[doc = "After completion, no new calls or connections will be admitted."]
2152 #[doc = "Existing calls will be allowed to complete."]
2153 #[doc = "Send a GRPC_OP_COMPLETE event when there are no more calls being serviced."]
2154 #[doc = "Shutdown is idempotent, and all tags will be notified at once if multiple"]
2155 #[doc = "grpc_server_shutdown_and_notify calls are made. 'cq' must have been"]
2156 #[doc = "registered to this server via grpc_server_register_completion_queue."]
2164 #[doc = " Cancel all in-progress calls."]
2165 #[doc = "Only usable after shutdown."]
2169 #[doc = " Destroy a server."]
2170 #[doc = "Shutdown must have completed beforehand (i.e. all tags generated by"]
2171 #[doc = "grpc_server_shutdown_and_notify must have been received, and at least"]
2172 #[doc = "one call to grpc_server_shutdown_and_notify must have been made)."]
2176 #[doc = " Enable or disable a tracer."]
2177 #[doc = ""]
2178 #[doc = "Tracers (usually controlled by the environment variable GRPC_TRACE)"]
2179 #[doc = "allow printf-style debugging on GRPC internals, and are useful for"]
2180 #[doc = "tracking down problems in the field."]
2181 #[doc = ""]
2182 #[doc = "Use of this function is not strictly thread-safe, but the"]
2183 #[doc = "thread-safety issues raised by it should not be of concern."]
2190 #[doc = " Check whether a metadata key is legal (will be accepted by core)"]
2194 #[doc = " Check whether a non-binary metadata value is legal (will be accepted by"]
2195 #[doc = "core)"]
2199 #[doc = " Check whether a metadata key corresponds to a binary value"]
2203 #[doc = " Convert grpc_call_error values to a string"]
2207 #[doc = " Create a buffer pool"]
2213 #[doc = " Add a reference to a buffer pool"]
2217 #[doc = " Drop a reference to a buffer pool"]
2221 #[doc = " Update the size of a buffer pool"]
2225 #[doc = " Update the size of the maximum number of threads allowed"]
2232 #[doc = " EXPERIMENTAL. Dumps xDS configs as a serialized ClientConfig proto."]
2233 #[doc = "The full name of the proto is envoy.service.status.v3.ClientConfig."]
2237 #[doc = " Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota"]
2241 #[doc = " CHANNELZ API *************/"]
2242 #[doc = "churn as the feature is implemented. This comment will be removed once"]
2243 #[doc = "channelz is officially supported, and these APIs become stable. For now"]
2244 #[doc = "you may track the progress by following this github issue:"]
2245 #[doc = "https://github.com/grpc/grpc/issues/15340"]
2246 #[doc = ""]
2247 #[doc = "the following APIs return allocated JSON strings that match the response"]
2248 #[doc = "objects from the channelz proto, found here:"]
2249 #[doc = "https://github.com/grpc/grpc/blob/master/src/proto/grpc/channelz/channelz.proto."]
2250 #[doc = ""]
2251 #[doc = "For easy conversion to protobuf, The JSON is formatted according to:"]
2252 #[doc = "https://developers.google.com/protocol-buffers/docs/proto3#json."]
2278 #[doc = " EXPERIMENTAL - Subject to change."]
2279 #[doc = " Fetch a vtable for grpc_channel_arg that points to"]
2280 #[doc = " grpc_authorization_policy_provider."]
2292 #[doc = " Create a secure channel to 'target' using file descriptor 'fd' and passed-in"]
2293 #[doc = "credentials. The 'target' argument will be used to indicate the name for"]
2294 #[doc = "this channel. Note that this API currently only supports insecure channel"]
2295 #[doc = "credentials. Using other types of credentials will result in a failure."]
2304 #[doc = " Add the connected secure communication channel based on file descriptor 'fd'"]
2305 #[doc = "to the 'server' and server credentials 'creds'. The 'fd' must be an open file"]
2306 #[doc = "descriptor corresponding to a connected socket. Events from the file"]
2307 #[doc = "descriptor may come on any of the server completion queues (i.e completion"]
2308 #[doc = "queues registered via the grpc_server_register_completion_queue API)."]
2309 #[doc = "Note that this API currently only supports inseure server credentials"]
2310 #[doc = "Using other types of credentials will result in a failure."]
2311 #[doc = "TODO(hork): add channel_args to this API to allow endpoints and transports"]
2312 #[doc = "created in this function to participate in the resource quota feature."]
2320 #[doc = " Results for the SSL roots override callback."]
2325 #[doc = " Do not try fallback options."]
2329 #[doc = " Callback results for dynamically loading a SSL certificate config."]
2339 #[doc = " Server does not request client certificate."]
2340 #[doc = "The certificate presented by the client is not checked by the server at"]
2341 #[doc = "all. (A client may present a self signed or signed certificate or not"]
2342 #[doc = "present a certificate at all and any of those option would be accepted)"]
2344 #[doc = " Server requests client certificate but does not enforce that the client"]
2345 #[doc = "presents a certificate."]
2346 #[doc = ""]
2347 #[doc = "If the client presents a certificate, the client authentication is left to"]
2348 #[doc = "the application (the necessary metadata will be available to the"]
2349 #[doc = "application via authentication context properties, see grpc_auth_context)."]
2350 #[doc = ""]
2351 #[doc = "The client's key certificate pair must be valid for the SSL connection to"]
2352 #[doc = "be established."]
2354 #[doc = " Server requests client certificate but does not enforce that the client"]
2355 #[doc = "presents a certificate."]
2356 #[doc = ""]
2357 #[doc = "If the client presents a certificate, the client authentication is done by"]
2358 #[doc = "the gRPC framework. (For a successful connection the client needs to either"]
2359 #[doc = "present a certificate that can be verified against the root certificate"]
2360 #[doc = "configured by the server or not present a certificate at all)"]
2361 #[doc = ""]
2362 #[doc = "The client's key certificate pair must be valid for the SSL connection to"]
2363 #[doc = "be established."]
2365 #[doc = " Server requests client certificate and enforces that the client presents a"]
2366 #[doc = "certificate."]
2367 #[doc = ""]
2368 #[doc = "If the client presents a certificate, the client authentication is left to"]
2369 #[doc = "the application (the necessary metadata will be available to the"]
2370 #[doc = "application via authentication context properties, see grpc_auth_context)."]
2371 #[doc = ""]
2372 #[doc = "The client's key certificate pair must be valid for the SSL connection to"]
2373 #[doc = "be established."]
2375 #[doc = " Server requests client certificate and enforces that the client presents a"]
2376 #[doc = "certificate."]
2377 #[doc = ""]
2378 #[doc = "The certificate presented by the client is verified by the gRPC framework."]
2379 #[doc = "(For a successful connection the client needs to present a certificate that"]
2380 #[doc = "can be verified against the root certificate configured by the server)"]
2381 #[doc = ""]
2382 #[doc = "The client's key certificate pair must be valid for the SSL connection to"]
2383 #[doc = "be established."]
2401 #[doc = " Type of local connections for which local channel/server credentials will be"]
2402 #[doc = " applied. It supports UDS and local TCP connections."]
2409 #[doc = " The TLS versions that are supported by the SSL stack."]
2427 #[doc = " value, if not NULL, is guaranteed to be NULL terminated."]
2436 #[doc = " Returns NULL when the iterator is at the end."]
2442 #[doc = " Iterates over the auth context."]
2448 #[doc = " Gets the peer identity. Returns an empty iterator (first _next will return"]
2449 #[doc = "NULL) if the peer is not authenticated."]
2455 #[doc = " Finds a property in the context. May return an empty iterator (first _next"]
2456 #[doc = "will return NULL) if no property with this name was found in the context."]
2463 #[doc = " Gets the name of the property that indicates the peer identity. Will return"]
2464 #[doc = "NULL if the peer is not authenticated."]
2470 #[doc = " Returns 1 if the peer is authenticated, 0 otherwise."]
2476 #[doc = " Gets the auth context from the call. Caller needs to call"]
2477 #[doc = "grpc_auth_context_release on the returned context."]
2481 #[doc = " Releases the auth context returned from grpc_call_auth_context."]
2485 #[doc = " Add a property."]
2494 #[doc = " Add a C string property."]
2502 #[doc = " Sets the property name. Returns 1 if successful or 0 in case of failure"]
2503 #[doc = "(which means that no property with this name exists)."]
2515 #[doc = " Create LRU cache for client-side SSL sessions with the given capacity."]
2516 #[doc = "If capacity is < 1, a default capacity is used instead."]
2520 #[doc = " Destroy SSL session cache."]
2524 #[doc = " Create a channel arg with the given cache object."]
2535 #[doc = " Releases a call credentials object."]
2536 #[doc = "The creator of the credentials object is responsible for its release."]
2540 #[doc = " Creates default credentials to connect to a google gRPC service."]
2541 #[doc = "WARNING: Do NOT use this credentials to connect to a non-google service as"]
2542 #[doc = "this could result in an oauth2 token leak. The security level of the"]
2543 #[doc = "resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
2544 #[doc = ""]
2545 #[doc = "If specified, the supplied call credentials object will be attached to the"]
2546 #[doc = "returned channel credentials object. The call_credentials object must remain"]
2547 #[doc = "valid throughout the lifetime of the returned grpc_channel_credentials"]
2548 #[doc = "object. It is expected that the call credentials object was generated"]
2549 #[doc = "according to the Application Default Credentials mechanism and asserts the"]
2550 #[doc = "identity of the default service account of the machine. Supplying any other"]
2551 #[doc = "sort of call credential will result in undefined behavior, up to and"]
2552 #[doc = "including the sudden and unexpected failure of RPCs."]
2553 #[doc = ""]
2554 #[doc = "If nullptr is supplied, the returned channel credentials object will use a"]
2555 #[doc = "call credentials object based on the Application Default Credentials"]
2556 #[doc = "mechanism."]
2561 #[doc = " Callback for getting the SSL roots override from the application."]
2562 #[doc = "In case of success, *pem_roots_certs must be set to a NULL terminated string"]
2563 #[doc = "containing the list of PEM encoded root certificates. The ownership is passed"]
2564 #[doc = "to the core and freed (laster by the core) with gpr_free."]
2565 #[doc = "If this function fails and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is"]
2566 #[doc = "set to a valid path, it will override the roots specified this func"]
2573 #[doc = " Setup a callback to override the default TLS/SSL roots."]
2574 #[doc = "This function is not thread-safe and must be called at initialization time"]
2575 #[doc = "before any ssl credentials are created to have the desired side effect."]
2576 #[doc = "If GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is set to a valid path, the"]
2577 #[doc = "callback will not be called."]
2580 #[doc = " Object that holds a private key / certificate chain pair in PEM format."]
2584 #[doc = " private_key is the NULL-terminated string containing the PEM encoding of"]
2585 #[doc = "the client's private key."]
2587 #[doc = " cert_chain is the NULL-terminated string containing the PEM encoding of"]
2588 #[doc = "the client's certificate chain."]
2591 #[doc = " Deprecated in favor of grpc_ssl_verify_peer_options. It will be removed"]
2592 #[doc = "after all of its call sites are migrated to grpc_ssl_verify_peer_options."]
2593 #[doc = "Object that holds additional peer-verification options on a secure"]
2594 #[doc = "channel."]
2598 #[doc = " If non-NULL this callback will be invoked with the expected"]
2599 #[doc = "target_name, the peer's certificate (in PEM format), and whatever"]
2600 #[doc = "userdata pointer is set below. If a non-zero value is returned by this"]
2601 #[doc = "callback then it is treated as a verification failure. Invocation of"]
2602 #[doc = "the callback is blocking, so any implementation should be light-weight."]
2610 #[doc = " Arbitrary userdata that will be passed as the last argument to"]
2611 #[doc = "verify_peer_callback."]
2613 #[doc = " A destruct callback that will be invoked when the channel is being"]
2614 #[doc = "cleaned up. The userdata argument will be passed to it. The intent is"]
2615 #[doc = "to perform any cleanup associated with that userdata."]
2619 #[doc = " Object that holds additional peer-verification options on a secure"]
2620 #[doc = "channel."]
2624 #[doc = " If non-NULL this callback will be invoked with the expected"]
2625 #[doc = "target_name, the peer's certificate (in PEM format), and whatever"]
2626 #[doc = "userdata pointer is set below. If a non-zero value is returned by this"]
2627 #[doc = "callback then it is treated as a verification failure. Invocation of"]
2628 #[doc = "the callback is blocking, so any implementation should be light-weight."]
2636 #[doc = " Arbitrary userdata that will be passed as the last argument to"]
2637 #[doc = "verify_peer_callback."]
2639 #[doc = " A destruct callback that will be invoked when the channel is being"]
2640 #[doc = "cleaned up. The userdata argument will be passed to it. The intent is"]
2641 #[doc = "to perform any cleanup associated with that userdata."]
2646 #[doc = " Deprecated in favor of grpc_ssl_server_credentials_create_ex. It will be"]
2647 #[doc = "removed after all of its call sites are migrated to"]
2648 #[doc = "grpc_ssl_server_credentials_create_ex. Creates an SSL credentials object."]
2649 #[doc = "The security level of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
2650 #[doc = "- pem_root_certs is the NULL-terminated string containing the PEM encoding"]
2651 #[doc = "of the server root certificates. If this parameter is NULL, the"]
2652 #[doc = "implementation will first try to dereference the file pointed by the"]
2653 #[doc = "GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails,"]
2654 #[doc = "try to get the roots set by grpc_override_ssl_default_roots. Eventually,"]
2655 #[doc = "if all these fail, it will try to get the roots from a well-known place on"]
2656 #[doc = "disk (in the grpc install directory)."]
2657 #[doc = ""]
2658 #[doc = "gRPC has implemented root cache if the underlying OpenSSL library supports"]
2659 #[doc = "it. The gRPC root certificates cache is only applicable on the default"]
2660 #[doc = "root certificates, which is used when this parameter is nullptr. If user"]
2661 #[doc = "provides their own pem_root_certs, when creating an SSL credential object,"]
2662 #[doc = "gRPC would not be able to cache it, and each subchannel will generate a"]
2663 #[doc = "copy of the root store. So it is recommended to avoid providing large room"]
2664 #[doc = "pem with pem_root_certs parameter to avoid excessive memory consumption,"]
2665 #[doc = "particularly on mobile platforms such as iOS."]
2666 #[doc = "- pem_key_cert_pair is a pointer on the object containing client's private"]
2667 #[doc = "key and certificate chain. This parameter can be NULL if the client does"]
2668 #[doc = "not have such a key/cert pair."]
2669 #[doc = "- verify_options is an optional verify_peer_options object which holds"]
2670 #[doc = "additional options controlling how peer certificates are verified. For"]
2671 #[doc = "example, you can supply a callback which receives the peer's certificate"]
2672 #[doc = "with which you can do additional verification. Can be NULL, in which"]
2673 #[doc = "case verification will retain default behavior. Any settings in"]
2674 #[doc = "verify_options are copied during this call, so the verify_options"]
2675 #[doc = "object can be released afterwards."]
2692 #[doc = " Creates a composite channel credentials object. The security level of"]
2693 #[doc = " resulting connection is determined by channel_creds."]
2701 #[doc = " Creates a composite call credentials object."]
2709 #[doc = " Creates a compute engine credentials object for connecting to Google."]
2710 #[doc = "WARNING: Do NOT use this credentials to connect to a non-google service as"]
2711 #[doc = "this could result in an oauth2 token leak."]
2720 #[doc = " Creates a JWT credentials object. May return NULL if the input is invalid."]
2721 #[doc = "- json_key is the JSON key string containing the client's private key."]
2722 #[doc = "- token_lifetime is the lifetime of each Json Web Token (JWT) created with"]
2723 #[doc = "this credentials. It should not exceed grpc_max_auth_token_lifetime or"]
2724 #[doc = "will be cropped to this value."]
2732 #[doc = " Builds External Account credentials."]
2733 #[doc = "- json_string is the JSON string containing the credentials options."]
2734 #[doc = "- scopes_string contains the scopes to be binded with the credentials."]
2735 #[doc = "This API is used for experimental purposes for now and may change in the"]
2736 #[doc = "future."]
2743 #[doc = " Creates an Oauth2 Refresh Token credentials object for connecting to Google."]
2744 #[doc = "May return NULL if the input is invalid."]
2745 #[doc = "WARNING: Do NOT use this credentials to connect to a non-google service as"]
2746 #[doc = "this could result in an oauth2 token leak."]
2747 #[doc = "- json_refresh_token is the JSON string containing the refresh token itself"]
2748 #[doc = "along with a client_id and client_secret."]
2755 #[doc = " Creates an Oauth2 Access Token credentials with an access token that was"]
2756 #[doc = "acquired by an out of band mechanism."]
2763 #[doc = " Creates an IAM credentials object for connecting to Google."]
2770 #[doc = " Options for creating STS Oauth Token Exchange credentials following the IETF"]
2771 #[doc = "draft https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16."]
2772 #[doc = "Optional fields may be set to NULL or empty string. It is the responsibility"]
2773 #[doc = "of the caller to ensure that the subject and actor tokens are refreshed on"]
2774 #[doc = "disk at the specified paths. This API is used for experimental purposes for"]
2775 #[doc = "now and may change in the future."]
2790 #[doc = " Creates an STS credentials following the STS Token Exchanged specifed in the"]
2791 #[doc = "IETF draft https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16."]
2792 #[doc = "This API is used for experimental purposes for now and may change in the"]
2793 #[doc = "future."]
2799 #[doc = " Callback function to be called by the metadata credentials plugin"]
2800 #[doc = "implementation when the metadata is ready."]
2801 #[doc = "- user_data is the opaque pointer that was passed in the get_metadata method"]
2802 #[doc = "of the grpc_metadata_credentials_plugin (see below)."]
2803 #[doc = "- creds_md is an array of credentials metadata produced by the plugin. It"]
2804 #[doc = "may be set to NULL in case of an error."]
2805 #[doc = "- num_creds_md is the number of items in the creds_md array."]
2806 #[doc = "- status must be GRPC_STATUS_OK in case of success or another specific error"]
2807 #[doc = "code otherwise."]
2808 #[doc = "- error_details contains details about the error if any. In case of success"]
2809 #[doc = "it should be NULL and will be otherwise ignored."]
2819 #[doc = " Context that can be used by metadata credentials plugin in order to create"]
2820 #[doc = "auth related metadata."]
2824 #[doc = " The fully qualifed service url."]
2826 #[doc = " The method name of the RPC being called (not fully qualified)."]
2827 #[doc = "The fully qualified method name can be built from the service_url:"]
2828 #[doc = "full_qualified_method_name = ctx->service_url + '/' + ctx->method_name."]
2830 #[doc = " The auth_context of the channel which gives the server's identity."]
2832 #[doc = " Reserved for future use."]
2836 #[doc = " Performs a deep copy from \\a from to \\a to."]
2843 #[doc = " Releases internal resources held by \\a context."]
2846 #[doc = " grpc_metadata_credentials plugin is an API user provided structure used to"]
2847 #[doc = "create grpc_credentials objects that can be set on a channel (composed) or"]
2848 #[doc = "a call. See grpc_credentials_metadata_create_from_plugin below."]
2849 #[doc = "The grpc client stack will call the get_metadata method of the plugin for"]
2850 #[doc = "every call in scope for the credentials created from it."]
2854 #[doc = " The implementation of this method has to be non-blocking, but can"]
2855 #[doc = "be performed synchronously or asynchronously."]
2856 #[doc = ""]
2857 #[doc = "If processing occurs synchronously, returns non-zero and populates"]
2858 #[doc = "creds_md, num_creds_md, status, and error_details. In this case,"]
2859 #[doc = "the caller takes ownership of the entries in creds_md and of"]
2860 #[doc = "error_details. Note that if the plugin needs to return more than"]
2861 #[doc = "GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX entries in creds_md, it must"]
2862 #[doc = "return asynchronously."]
2863 #[doc = ""]
2864 #[doc = "If processing occurs asynchronously, returns zero and invokes \\a cb"]
2865 #[doc = "when processing is completed. \\a user_data will be passed as the"]
2866 #[doc = "first parameter of the callback. NOTE: \\a cb MUST be invoked in a"]
2867 #[doc = "different thread, not from the thread in which \\a get_metadata() is"]
2868 #[doc = "invoked."]
2869 #[doc = ""]
2870 #[doc = "\\a context is the information that can be used by the plugin to create"]
2871 #[doc = "auth metadata."]
2884 #[doc = " Implements debug string of the given plugin. This method returns an"]
2885 #[doc = " allocated string that the caller needs to free using gpr_free()"]
2889 #[doc = " Destroys the plugin state."]
2891 #[doc = " State that will be set as the first parameter of the methods above."]
2893 #[doc = " Type of credentials that this plugin is implementing."]
2897 #[doc = " Creates a credentials object from a plugin with a specified minimum security"]
2898 #[doc = " level."]
2911 #[doc = " Creates a grpc_ssl_server_certificate_config object."]
2912 #[doc = "- pem_roots_cert is the NULL-terminated string containing the PEM encoding of"]
2913 #[doc = "the client root certificates. This parameter may be NULL if the server does"]
2914 #[doc = "not want the client to be authenticated with SSL."]
2915 #[doc = "- pem_key_cert_pairs is an array private key / certificate chains of the"]
2916 #[doc = "server. This parameter cannot be NULL."]
2917 #[doc = "- num_key_cert_pairs indicates the number of items in the private_key_files"]
2918 #[doc = "and cert_chain_files parameters. It must be at least 1."]
2919 #[doc = "- It is the caller's responsibility to free this object via"]
2920 #[doc = "grpc_ssl_server_certificate_config_destroy()."]
2928 #[doc = " Destroys a grpc_ssl_server_certificate_config object."]
2933 #[doc = " Callback to retrieve updated SSL server certificates, private keys, and"]
2934 #[doc = "trusted CAs (for client authentication)."]
2935 #[doc = "- user_data parameter, if not NULL, contains opaque data to be used by the"]
2936 #[doc = "callback."]
2937 #[doc = "- Use grpc_ssl_server_certificate_config_create to create the config."]
2938 #[doc = "- The caller assumes ownership of the config."]
2946 #[doc = " Deprecated in favor of grpc_ssl_server_credentials_create_ex."]
2947 #[doc = "Creates an SSL server_credentials object."]
2948 #[doc = "- pem_roots_cert is the NULL-terminated string containing the PEM encoding of"]
2949 #[doc = "the client root certificates. This parameter may be NULL if the server does"]
2950 #[doc = "not want the client to be authenticated with SSL."]
2951 #[doc = "- pem_key_cert_pairs is an array private key / certificate chains of the"]
2952 #[doc = "server. This parameter cannot be NULL."]
2953 #[doc = "- num_key_cert_pairs indicates the number of items in the private_key_files"]
2954 #[doc = "and cert_chain_files parameters. It should be at least 1."]
2955 #[doc = "- force_client_auth, if set to non-zero will force the client to authenticate"]
2956 #[doc = "with an SSL cert. Note that this option is ignored if pem_root_certs is"]
2957 #[doc = "NULL."]
2967 #[doc = " Deprecated in favor of grpc_ssl_server_credentials_create_with_options."]
2968 #[doc = "Same as grpc_ssl_server_credentials_create method except uses"]
2969 #[doc = "grpc_ssl_client_certificate_request_type enum to support more ways to"]
2970 #[doc = "authenticate client certificates."]
2985 #[doc = " Creates an options object using a certificate config. Use this method when"]
2986 #[doc = "the certificates and keys of the SSL server will not change during the"]
2987 #[doc = "server's lifetime."]
2988 #[doc = "- Takes ownership of the certificate_config parameter."]
2995 #[doc = " Creates an options object using a certificate config fetcher. Use this"]
2996 #[doc = "method to reload the certificates and keys of the SSL server without"]
2997 #[doc = "interrupting the operation of the server. Initial certificate config will be"]
2998 #[doc = "fetched during server initialization."]
2999 #[doc = "- user_data parameter, if not NULL, contains opaque data which will be passed"]
3000 #[doc = "to the fetcher (see definition of"]
3001 #[doc = "grpc_ssl_server_certificate_config_callback)."]
3009 #[doc = " Destroys a grpc_ssl_server_credentials_options object."]
3015 #[doc = " Creates an SSL server_credentials object using the provided options struct."]
3016 #[doc = "- Takes ownership of the options parameter."]
3022 #[doc = " Sets a credentials to a call. Can only be called on the client side before"]
3023 #[doc = "grpc_call_start_batch."]
3029 #[doc = " Callback function that is called when the metadata processing is done."]
3030 #[doc = "- Consumed metadata will be removed from the set of metadata available on the"]
3031 #[doc = "call. consumed_md may be NULL if no metadata has been consumed."]
3032 #[doc = "- Response metadata will be set on the response. response_md may be NULL."]
3033 #[doc = "- status is GRPC_STATUS_OK for success or a specific status for an error."]
3034 #[doc = "Common error status for auth metadata processing is either"]
3035 #[doc = "GRPC_STATUS_UNAUTHENTICATED in case of an authentication failure or"]
3036 #[doc = "GRPC_STATUS PERMISSION_DENIED in case of an authorization failure."]
3037 #[doc = "- error_details gives details about the error. May be NULL."]
3049 #[doc = " Pluggable server-side metadata processor object."]
3053 #[doc = " The context object is read/write: it contains the properties of the"]
3054 #[doc = "channel peer and it is the job of the process function to augment it with"]
3055 #[doc = "properties derived from the passed-in metadata."]
3056 #[doc = "The lifetime of these objects is guaranteed until cb is invoked."]
3082 #[doc = " This method creates a grpc ALTS credentials client options instance."]
3083 #[doc = " It is used for experimental purpose for now and subject to change."]
3087 #[doc = " This method creates a grpc ALTS credentials server options instance."]
3088 #[doc = " It is used for experimental purpose for now and subject to change."]
3092 #[doc = " This method adds a target service account to grpc client's ALTS credentials"]
3093 #[doc = " options instance. It is used for experimental purpose for now and subject"]
3094 #[doc = " to change."]
3095 #[doc = ""]
3096 #[doc = " - options: grpc ALTS credentials options instance."]
3097 #[doc = " - service_account: service account of target endpoint."]
3104 #[doc = " This method destroys a grpc_alts_credentials_options instance by"]
3105 #[doc = " de-allocating all of its occupied memory. It is used for experimental purpose"]
3106 #[doc = " for now and subject to change."]
3107 #[doc = ""]
3108 #[doc = " - options: a grpc_alts_credentials_options instance that needs to be"]
3109 #[doc = " destroyed."]
3113 #[doc = " This method creates an ALTS channel credential object. The security"]
3114 #[doc = " level of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
3115 #[doc = " It is used for experimental purpose for now and subject to change."]
3116 #[doc = ""]
3117 #[doc = " - options: grpc ALTS credentials options instance for client."]
3118 #[doc = ""]
3119 #[doc = " It returns the created ALTS channel credential object."]
3125 #[doc = " This method creates an ALTS server credential object. It is used for"]
3126 #[doc = " experimental purpose for now and subject to change."]
3127 #[doc = ""]
3128 #[doc = " - options: grpc ALTS credentials options instance for server."]
3129 #[doc = ""]
3130 #[doc = " It returns the created ALTS server credential object."]
3136 #[doc = " This method creates a local channel credential object. The security level"]
3137 #[doc = " of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY for UDS and"]
3138 #[doc = " GRPC_SECURITY_NONE for LOCAL_TCP. It is used for experimental purpose"]
3139 #[doc = " for now and subject to change."]
3140 #[doc = ""]
3141 #[doc = " - type: local connection type"]
3142 #[doc = ""]
3143 #[doc = " It returns the created local channel credential object."]
3149 #[doc = " This method creates a local server credential object. It is used for"]
3150 #[doc = " experimental purpose for now and subject to change."]
3151 #[doc = ""]
3152 #[doc = " - type: local connection type"]
3153 #[doc = ""]
3154 #[doc = " It returns the created local server credential object."]
3175 #[doc = " EXPERIMENTAL API - Subject to change"]
3176 #[doc = ""]
3177 #[doc = " Creates a grpc_tls_identity_pairs that stores a list of identity credential"]
3178 #[doc = " data, including identity private key and identity certificate chain."]
3182 #[doc = " EXPERIMENTAL API - Subject to change"]
3183 #[doc = ""]
3184 #[doc = " Adds a identity private key and a identity certificate chain to"]
3185 #[doc = " grpc_tls_identity_pairs. This function will make an internal copy of"]
3186 #[doc = " |private_key| and |cert_chain|."]
3194 #[doc = " EXPERIMENTAL API - Subject to change"]
3195 #[doc = ""]
3196 #[doc = " Destroys a grpc_tls_identity_pairs object. If this object is passed to a"]
3197 #[doc = " provider initiation function, the ownership is transferred so this function"]
3198 #[doc = " doesn't need to be called. Otherwise the creator of the"]
3199 #[doc = " grpc_tls_identity_pairs object is responsible for its destruction."]
3203 #[doc = " EXPERIMENTAL API - Subject to change"]
3204 #[doc = ""]
3205 #[doc = " Creates a grpc_tls_certificate_provider that will load credential data from"]
3206 #[doc = " static string during initialization. This provider will always return the"]
3207 #[doc = " same cert data for all cert names."]
3208 #[doc = " root_certificate and pem_key_cert_pairs can be nullptr, indicating the"]
3209 #[doc = " corresponding credential data is not needed."]
3210 #[doc = " This function will make a copy of |root_certificate|."]
3211 #[doc = " The ownership of |pem_key_cert_pairs| is transferred."]
3218 #[doc = " EXPERIMENTAL API - Subject to change"]
3219 #[doc = ""]
3220 #[doc = " Creates a grpc_tls_certificate_provider that will watch the credential"]
3221 #[doc = " changes on the file system. This provider will always return the up-to-date"]
3222 #[doc = " cert data for all the cert names callers set through"]
3223 #[doc = " |grpc_tls_credentials_options|. Note that this API only supports one key-cert"]
3224 #[doc = " file and hence one set of identity key-cert pair, so SNI(Server Name"]
3225 #[doc = " Indication) is not supported."]
3226 #[doc = " - private_key_path is the file path of the private key. This must be set if"]
3227 #[doc = " |identity_certificate_path| is set. Otherwise, it could be null if no"]
3228 #[doc = " identity credentials are needed."]
3229 #[doc = " - identity_certificate_path is the file path of the identity certificate"]
3230 #[doc = " chain. This must be set if |private_key_path| is set. Otherwise, it could"]
3231 #[doc = " be null if no identity credentials are needed."]
3232 #[doc = " - root_cert_path is the file path to the root certificate bundle. This"]
3233 #[doc = " may be null if no root certs are needed."]
3234 #[doc = " - refresh_interval_sec is the refreshing interval that we will check the"]
3235 #[doc = " files for updates."]
3236 #[doc = " It does not take ownership of parameters."]
3245 #[doc = " EXPERIMENTAL API - Subject to change"]
3246 #[doc = ""]
3247 #[doc = " Releases a grpc_tls_certificate_provider object. The creator of the"]
3248 #[doc = " grpc_tls_certificate_provider object is responsible for its release."]
3252 #[doc = " EXPERIMENTAL API - Subject to change"]
3253 #[doc = ""]
3254 #[doc = " Creates an grpc_tls_credentials_options."]
3258 #[doc = " EXPERIMENTAL API - Subject to change"]
3259 #[doc = ""]
3260 #[doc = " Sets the credential provider in the options."]
3261 #[doc = " The |options| will implicitly take a new ref to the |provider|."]
3268 #[doc = " EXPERIMENTAL API - Subject to change"]
3269 #[doc = ""]
3270 #[doc = " If set, gRPC stack will keep watching the root certificates with"]
3271 #[doc = " name |root_cert_name|."]
3272 #[doc = " If this is not set on the client side, we will use the root certificates"]
3273 #[doc = " stored in the default system location, since client side must provide root"]
3274 #[doc = " certificates in TLS."]
3275 #[doc = " If this is not set on the server side, we will not watch any root certificate"]
3276 #[doc = " updates, and assume no root certificates needed for the server(single-side"]
3277 #[doc = " TLS). Default root certs on the server side is not supported."]
3283 #[doc = " EXPERIMENTAL API - Subject to change"]
3284 #[doc = ""]
3285 #[doc = " Sets the name of the root certificates being watched."]
3286 #[doc = " If not set, We will use a default empty string as the root certificate name."]
3293 #[doc = " EXPERIMENTAL API - Subject to change"]
3294 #[doc = ""]
3295 #[doc = " If set, gRPC stack will keep watching the identity key-cert pairs"]
3296 #[doc = " with name |identity_cert_name|."]
3297 #[doc = " This is required on the server side, and optional on the client side."]
3303 #[doc = " EXPERIMENTAL API - Subject to change"]
3304 #[doc = ""]
3305 #[doc = " Sets the name of the identity certificates being watched."]
3306 #[doc = " If not set, We will use a default empty string as the identity certificate"]
3307 #[doc = " name."]
3314 #[doc = " EXPERIMENTAL API - Subject to change"]
3315 #[doc = ""]
3316 #[doc = " Sets the options of whether to request and/or verify client certs. This shall"]
3317 #[doc = " only be called on the server side."]
3324 #[doc = " EXPERIMENTAL API - Subject to change"]
3325 #[doc = ""]
3326 #[doc = " If set, gRPC will read all hashed x.509 CRL files in the directory and"]
3327 #[doc = " enforce the CRL files on all TLS handshakes. Only supported for OpenSSL"]
3328 #[doc = " version > 1.1."]
3329 #[doc = " It is used for experimental purpose for now and subject to change."]
3336 #[doc = " EXPERIMENTAL API - Subject to change"]
3337 #[doc = ""]
3338 #[doc = " Sets the options of whether to verify server certs on the client side."]
3339 #[doc = " Passing in a non-zero value indicates verifying the certs."]
3346 #[doc = " EXPERIMENTAL API - Subject to change"]
3347 #[doc = ""]
3348 #[doc = " Sets whether or not a TLS server should send a list of CA names in the"]
3349 #[doc = " ServerHello. This list of CA names is read from the server's trust bundle, so"]
3350 #[doc = " that the client can use this list as a hint to know which certificate it"]
3351 #[doc = " should send to the server."]
3352 #[doc = ""]
3353 #[doc = " WARNING: This API is extremely dangerous and should not be used. If the"]
3354 #[doc = " server's trust bundle is too large, then the TLS server will be unable to"]
3355 #[doc = " form a ServerHello, and hence will be unusable. The definition of \"too large\""]
3356 #[doc = " depends on the underlying SSL library being used and on the size of the CN"]
3357 #[doc = " fields of the certificates in the trust bundle."]
3363 #[doc = " EXPERIMENTAL API - Subject to change"]
3364 #[doc = ""]
3365 #[doc = " The read-only request information exposed in a verification call."]
3366 #[doc = " Callers should not directly manage the ownership of it. We will make sure it"]
3367 #[doc = " is always available inside verify() or cancel() call, and will destroy the"]
3368 #[doc = " object at the end of custom verification."]
3396 #[doc = " EXPERIMENTAL API - Subject to change"]
3397 #[doc = ""]
3398 #[doc = " A callback function provided by gRPC as a parameter of the |verify| function"]
3399 #[doc = " in grpc_tls_certificate_verifier_external. If |verify| is expected to be run"]
3400 #[doc = " asynchronously, the implementer of |verify| will need to invoke this callback"]
3401 #[doc = " with |callback_arg| and proper verification status at the end to bring the"]
3402 #[doc = " control back to gRPC C core."]
3416 #[doc = " EXPERIMENTAL API - Subject to change"]
3417 #[doc = ""]
3418 #[doc = " A struct containing all the necessary functions a custom external verifier"]
3419 #[doc = " needs to implement to be able to be converted to an internal verifier."]
3424 #[doc = " A function pointer containing the verification logic that will be"]
3425 #[doc = " performed after the TLS handshake is done. It could be processed"]
3426 #[doc = " synchronously or asynchronously."]
3427 #[doc = " - If expected to be processed synchronously, the implementer should"]
3428 #[doc = " populate the verification result through |sync_status| and"]
3429 #[doc = " |sync_error_details|, and then return true."]
3430 #[doc = " - If expected to be processed asynchronously, the implementer should return"]
3431 #[doc = " false immediately, and then in the asynchronous thread invoke |callback|"]
3432 #[doc = " with the verification result. The implementer MUST NOT invoke the async"]
3433 #[doc = " |callback| in the same thread before |verify| returns, otherwise it can"]
3434 #[doc = " lead to deadlocks."]
3435 #[doc = ""]
3436 #[doc = " user_data: any argument that is passed in the user_data of"]
3437 #[doc = " grpc_tls_certificate_verifier_external during construction time"]
3438 #[doc = " can be retrieved later here."]
3439 #[doc = " request: request information exposed to the function implementer."]
3440 #[doc = " callback: the callback that the function implementer needs to invoke, if"]
3441 #[doc = " return a non-zero value. It is usually invoked when the"]
3442 #[doc = " asynchronous verification is done, and serves to bring the"]
3443 #[doc = " control back to gRPC."]
3444 #[doc = " callback_arg: A pointer to the internal ExternalVerifier instance. This is"]
3445 #[doc = " mainly used as an argument in |callback|, if want to invoke"]
3446 #[doc = " |callback| in async mode."]
3447 #[doc = " sync_status: indicates if a connection should be allowed. This should only"]
3448 #[doc = " be used if the verification check is done synchronously."]
3449 #[doc = " sync_error_details: the error generated while verifying a connection. This"]
3450 #[doc = " should only be used if the verification check is done"]
3451 #[doc = " synchronously. the implementation must allocate the"]
3452 #[doc = " error string via gpr_malloc() or gpr_strdup()."]
3453 #[doc = " return: return 0 if |verify| is expected to be executed asynchronously,"]
3454 #[doc = " otherwise return a non-zero value."]
3465 #[doc = " A function pointer that cleans up the caller-specified resources when the"]
3466 #[doc = " verifier is still running but the whole connection got cancelled. This"]
3467 #[doc = " could happen when the verifier is doing some async operations, and the"]
3468 #[doc = " whole handshaker object got destroyed because of connection time limit is"]
3469 #[doc = " reached, or any other reasons. In such cases, function implementers might"]
3470 #[doc = " want to be notified, and properly clean up some resources."]
3471 #[doc = ""]
3472 #[doc = " user_data: any argument that is passed in the user_data of"]
3473 #[doc = " grpc_tls_certificate_verifier_external during construction time"]
3474 #[doc = " can be retrieved later here."]
3475 #[doc = " request: request information exposed to the function implementer. It will"]
3476 #[doc = " be the same request object that was passed to verify(), and it"]
3477 #[doc = " tells the cancel() which request to cancel."]
3484 #[doc = " A function pointer that does some additional destruction work when the"]
3485 #[doc = " verifier is destroyed. This is used when the caller wants to associate some"]
3486 #[doc = " objects to the lifetime of external_verifier, and destroy them when"]
3487 #[doc = " external_verifier got destructed. For example, in C++, the class containing"]
3488 #[doc = " user-specified callback functions should not be destroyed before"]
3489 #[doc = " external_verifier, since external_verifier will invoke them while being"]
3490 #[doc = " used."]
3491 #[doc = " Note that the caller MUST delete the grpc_tls_certificate_verifier_external"]
3492 #[doc = " object itself in this function, otherwise it will cause memory leaks. That"]
3493 #[doc = " also means the user_data has to carries at least a self pointer, for the"]
3494 #[doc = " callers to later delete it in destruct()."]
3495 #[doc = ""]
3496 #[doc = " user_data: any argument that is passed in the user_data of"]
3497 #[doc = " grpc_tls_certificate_verifier_external during construction time"]
3498 #[doc = " can be retrieved later here."]
3503 #[doc = " EXPERIMENTAL API - Subject to change"]
3504 #[doc = ""]
3505 #[doc = " Converts an external verifier to an internal verifier."]
3506 #[doc = " Note that we will not take the ownership of the external_verifier. Callers"]
3507 #[doc = " will need to delete external_verifier in its own destruct function."]
3513 #[doc = " EXPERIMENTAL API - Subject to change"]
3514 #[doc = ""]
3515 #[doc = " Factory function for an internal verifier that won't perform any"]
3516 #[doc = " post-handshake verification. Note: using this solely without any other"]
3517 #[doc = " authentication mechanisms on the peer identity will leave your applications"]
3518 #[doc = " to the MITM(Man-In-The-Middle) attacks. Users should avoid doing so in"]
3519 #[doc = " production environments."]
3523 #[doc = " EXPERIMENTAL API - Subject to change"]
3524 #[doc = ""]
3525 #[doc = " Factory function for an internal verifier that will do the default hostname"]
3526 #[doc = " check."]
3530 #[doc = " EXPERIMENTAL API - Subject to change"]
3531 #[doc = ""]
3532 #[doc = " Releases a grpc_tls_certificate_verifier object. The creator of the"]
3533 #[doc = " grpc_tls_certificate_verifier object is responsible for its release."]
3537 #[doc = " EXPERIMENTAL API - Subject to change"]
3538 #[doc = ""]
3539 #[doc = " Sets the verifier in options. The |options| will implicitly take a new ref to"]
3540 #[doc = " the |verifier|. If not set on the client side, we will verify server's"]
3541 #[doc = " certificates, and check the default hostname. If not set on the server side,"]
3542 #[doc = " we will verify client's certificates."]
3549 #[doc = " EXPERIMENTAL API - Subject to change"]
3550 #[doc = ""]
3551 #[doc = " Sets the options of whether to check the hostname of the peer on a per-call"]
3552 #[doc = " basis. This is usually used in a combination with virtual hosting at the"]
3553 #[doc = " client side, where each individual call on a channel can have a different"]
3554 #[doc = " host associated with it."]
3555 #[doc = " This check is intended to verify that the host specified for the individual"]
3556 #[doc = " call is covered by the cert that the peer presented."]
3557 #[doc = " The default is a non-zero value, which indicates performing such checks."]
3564 #[doc = " EXPERIMENTAL API - Subject to change"]
3565 #[doc = ""]
3566 #[doc = " Performs the verification logic of an internal verifier."]
3567 #[doc = " This is typically used when composing the internal verifiers as part of the"]
3568 #[doc = " custom verification."]
3569 #[doc = " If |grpc_tls_certificate_verifier_verify| returns true, inspect the"]
3570 #[doc = " verification result through request->status and request->error_details."]
3571 #[doc = " Otherwise, inspect through the parameter of |callback|."]
3582 #[doc = " EXPERIMENTAL API - Subject to change"]
3583 #[doc = ""]
3584 #[doc = " Performs the cancellation logic of an internal verifier."]
3585 #[doc = " This is typically used when composing the internal verifiers as part of the"]
3586 #[doc = " custom verification."]
3593 #[doc = " EXPERIMENTAL API - Subject to change"]
3594 #[doc = ""]
3595 #[doc = " Creates a TLS channel credential object based on the"]
3596 #[doc = " grpc_tls_credentials_options specified by callers. The"]
3597 #[doc = " grpc_channel_credentials will take the ownership of the |options|. The"]
3598 #[doc = " security level of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
3604 #[doc = " EXPERIMENTAL API - Subject to change"]
3605 #[doc = ""]
3606 #[doc = " Creates a TLS server credential object based on the"]
3607 #[doc = " grpc_tls_credentials_options specified by callers. The"]
3608 #[doc = " grpc_server_credentials will take the ownership of the |options|."]
3614 #[doc = " EXPERIMENTAL API - Subject to change"]
3615 #[doc = ""]
3616 #[doc = " This method creates an insecure channel credentials object."]
3620 #[doc = " EXPERIMENTAL API - Subject to change"]
3621 #[doc = ""]
3622 #[doc = " This method creates an insecure server credentials object."]
3626 #[doc = " EXPERIMENTAL API - Subject to change"]
3627 #[doc = ""]
3628 #[doc = " This method creates an xDS channel credentials object."]
3629 #[doc = ""]
3630 #[doc = " Creating a channel with credentials of this type indicates that the channel"]
3631 #[doc = " should get credentials configuration from the xDS control plane."]
3632 #[doc = ""]
3633 #[doc = " \\a fallback_credentials are used if the channel target does not have the"]
3634 #[doc = " 'xds:///' scheme or if the xDS control plane does not provide information on"]
3635 #[doc = " how to fetch credentials dynamically. Does NOT take ownership of the \\a"]
3636 #[doc = " fallback_credentials. (Internally takes a ref to the object.)"]
3642 #[doc = " EXPERIMENTAL API - Subject to change"]
3643 #[doc = ""]
3644 #[doc = " This method creates an xDS server credentials object."]
3645 #[doc = ""]
3646 #[doc = " \\a fallback_credentials are used if the xDS control plane does not provide"]
3647 #[doc = " information on how to fetch credentials dynamically."]
3648 #[doc = ""]
3649 #[doc = " Does NOT take ownership of the \\a fallback_credentials. (Internally takes"]
3650 #[doc = " a ref to the object.)"]
3661 #[doc = " EXPERIMENTAL - Subject to change."]
3662 #[doc = " Creates a grpc_authorization_policy_provider using gRPC authorization policy"]
3663 #[doc = " from static string."]
3664 #[doc = " - authz_policy is the input gRPC authorization policy."]
3665 #[doc = " - code is the error status code on failure. On success, it equals"]
3666 #[doc = " GRPC_STATUS_OK."]
3667 #[doc = " - error_details contains details about the error if any. If the"]
3668 #[doc = " initialization is successful, it will be null. Caller must use gpr_free to"]
3669 #[doc = " destroy this string."]
3677 #[doc = " EXPERIMENTAL - Subject to change."]
3678 #[doc = " Creates a grpc_authorization_policy_provider by watching for gRPC"]
3679 #[doc = " authorization policy changes in filesystem."]
3680 #[doc = " - authz_policy is the file path of gRPC authorization policy."]
3681 #[doc = " - refresh_interval_sec is the amount of time the internal thread would wait"]
3682 #[doc = " before checking for file updates."]
3683 #[doc = " - code is the error status code on failure. On success, it equals"]
3684 #[doc = " GRPC_STATUS_OK."]
3685 #[doc = " - error_details contains details about the error if any. If the"]
3686 #[doc = " initialization is successful, it will be null. Caller must use gpr_free to"]
3687 #[doc = " destroy this string."]
3696 #[doc = " EXPERIMENTAL - Subject to change."]
3697 #[doc = " Releases grpc_authorization_policy_provider object. The creator of"]
3698 #[doc = " grpc_authorization_policy_provider is responsible for its release."]
3704 #[doc = " EXPERIMENTAL API - Subject to change."]
3705 #[doc = " Configures a grpc_tls_credentials_options object with tls session key"]
3706 #[doc = " logging capability. TLS channels using these credentials have tls session"]
3707 #[doc = " key logging enabled."]
3708 #[doc = " - options is the grpc_tls_credentials_options object"]
3709 #[doc = " - path is a string pointing to the location where TLS session keys would be"]
3710 #[doc = " stored."]
3717 #[doc = " malloc."]
3718 #[doc = " If size==0, always returns NULL. Otherwise this function never returns NULL."]
3719 #[doc = " The pointer returned is suitably aligned for any kind of variable it could"]
3720 #[doc = " contain."]
3724 #[doc = " like malloc, but zero all bytes before returning them"]
3728 #[doc = " free"]
3732 #[doc = " realloc, never returns NULL"]
3736 #[doc = " aligned malloc, never returns NULL, will align to alignment, which"]
3737 #[doc = " must be a power of 2."]
3741 #[doc = " free memory allocated by gpr_malloc_aligned"]
3745 #[doc = " Return the number of CPU cores on the current system. Will return 0 if"]
3746 #[doc = "the information is not available."]
3750 #[doc = " Return the CPU on which the current thread is executing; N.B. This should"]
3751 #[doc = "be considered advisory only - it is possible that the thread is switched"]
3752 #[doc = "to a different CPU at any time. Returns a value in range"]
3753 #[doc = "[0, gpr_cpu_num_cores() - 1]"]
3757 #[doc = " The severity of a log message - use the #defines below when calling into"]
3758 #[doc = "gpr_log to additionally supply file and line data"]
3766 #[doc = " Returns a string representation of the log severity"]
3770 #[doc = " Log a message. It's advised to use GPR_xxx above to generate the context"]
3771 #[doc = " for each message"]
3792 #[doc = " Set global log verbosity"]
3798 #[doc = " Log overrides: applications can use this API to intercept logging calls"]
3799 #[doc = "and use their own implementations"]
3820 #[doc = " Returns a string allocated with gpr_malloc that contains a UTF-8"]
3821 #[doc = " formatted error message, corresponding to the error messageid."]
3822 #[doc = " Use in conjunction with GetLastError() et al."]
3826 #[doc = " Returns a copy of src that can be passed to gpr_free()."]
3827 #[doc = "If allocation fails or if src is NULL, returns NULL."]
3831 #[doc = " printf to a newly-allocated string. The set of supported formats may vary"]
3832 #[doc = "between platforms."]
3833 #[doc = ""]
3834 #[doc = "On success, returns the number of bytes printed (excluding the final '\\0'),"]
3835 #[doc = "and *strp points to a string which must later be destroyed with gpr_free()."]
3836 #[doc = ""]
3837 #[doc = "On error, returns -1 and sets *strp to NULL. If the format string is bad,"]
3838 #[doc = "the result is undefined."]
3847 #[doc = " Returns the identifier of the current thread."]
3850 #[doc = " Reader for byte buffers. Iterates over slices in the byte buffer"]
3858 #[doc = " Different current objects correspond to different types of byte buffers"]
3862 #[doc = " Index into a slice buffer's array of slices"]
4229 #[doc = " Kick call's completion queue, it should be called after there is an event"]
4230 #[doc = "ready to poll."]
4231 #[doc = "THREAD SAFETY: grpcwrap_call_kick_completion_queue is thread-safe"]
4232 #[doc = "because it does not change the call's state."]