Initial commit
This commit is contained in:
202
node_modules/grpc/deps/grpc/LICENSE
generated
vendored
Normal file
202
node_modules/grpc/deps/grpc/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
13
node_modules/grpc/deps/grpc/NOTICE.txt
generated
vendored
Normal file
13
node_modules/grpc/deps/grpc/NOTICE.txt
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
Copyright 2014 gRPC authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
4319
node_modules/grpc/deps/grpc/etc/roots.pem
generated
vendored
Normal file
4319
node_modules/grpc/deps/grpc/etc/roots.pem
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
27
node_modules/grpc/deps/grpc/include/grpc/byte_buffer.h
generated
vendored
Normal file
27
node_modules/grpc/deps/grpc/include/grpc/byte_buffer.h
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_BYTE_BUFFER_H
|
||||
#define GRPC_BYTE_BUFFER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/byte_buffer.h>
|
||||
#include <grpc/slice_buffer.h>
|
||||
|
||||
#endif /* GRPC_BYTE_BUFFER_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/byte_buffer_reader.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/byte_buffer_reader.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_BYTE_BUFFER_READER_H
|
||||
#define GRPC_BYTE_BUFFER_READER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/byte_buffer_reader.h>
|
||||
|
||||
#endif /* GRPC_BYTE_BUFFER_READER_H */
|
||||
40
node_modules/grpc/deps/grpc/include/grpc/census.h
generated
vendored
Normal file
40
node_modules/grpc/deps/grpc/include/grpc/census.h
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015-2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CENSUS_H
|
||||
#define GRPC_CENSUS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
A Census Context is a handle used by Census to represent the current tracing
|
||||
and stats collection information. Contexts should be propagated across RPC's
|
||||
(this is the responsibility of the local RPC system). */
|
||||
typedef struct census_context census_context;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_CENSUS_H */
|
||||
75
node_modules/grpc/deps/grpc/include/grpc/compression.h
generated
vendored
Normal file
75
node_modules/grpc/deps/grpc/include/grpc/compression.h
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_COMPRESSION_H
|
||||
#define GRPC_COMPRESSION_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
#include <grpc/slice.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Return if an algorithm is message compression algorithm. */
|
||||
GRPCAPI int grpc_compression_algorithm_is_message(
|
||||
grpc_compression_algorithm algorithm);
|
||||
|
||||
/** Return if an algorithm is stream compression algorithm. */
|
||||
GRPCAPI int grpc_compression_algorithm_is_stream(
|
||||
grpc_compression_algorithm algorithm);
|
||||
|
||||
/** Parses the \a slice as a grpc_compression_algorithm instance and updating \a
|
||||
* algorithm. Returns 1 upon success, 0 otherwise. */
|
||||
GRPCAPI int grpc_compression_algorithm_parse(
|
||||
grpc_slice value, grpc_compression_algorithm* algorithm);
|
||||
|
||||
/** Updates \a name with the encoding name corresponding to a valid \a
|
||||
* algorithm. Note that \a name is statically allocated and must *not* be freed.
|
||||
* Returns 1 upon success, 0 otherwise. */
|
||||
GRPCAPI int grpc_compression_algorithm_name(
|
||||
grpc_compression_algorithm algorithm, const char** name);
|
||||
|
||||
/** Returns the compression algorithm corresponding to \a level for the
|
||||
* compression algorithms encoded in the \a accepted_encodings bitset.*/
|
||||
GRPCAPI grpc_compression_algorithm grpc_compression_algorithm_for_level(
|
||||
grpc_compression_level level, uint32_t accepted_encodings);
|
||||
|
||||
GRPCAPI void grpc_compression_options_init(grpc_compression_options* opts);
|
||||
|
||||
/** Mark \a algorithm as enabled in \a opts. */
|
||||
GRPCAPI void grpc_compression_options_enable_algorithm(
|
||||
grpc_compression_options* opts, grpc_compression_algorithm algorithm);
|
||||
|
||||
/** Mark \a algorithm as disabled in \a opts. */
|
||||
GRPCAPI void grpc_compression_options_disable_algorithm(
|
||||
grpc_compression_options* opts, grpc_compression_algorithm algorithm);
|
||||
|
||||
/** Returns true if \a algorithm is marked as enabled in \a opts. */
|
||||
GRPCAPI int grpc_compression_options_is_algorithm_enabled(
|
||||
const grpc_compression_options* opts, grpc_compression_algorithm algorithm);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_COMPRESSION_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/fork.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/fork.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_FORK_H
|
||||
#define GRPC_FORK_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/fork.h>
|
||||
|
||||
#endif /* GRPC_FORK_H */
|
||||
510
node_modules/grpc/deps/grpc/include/grpc/grpc.h
generated
vendored
Normal file
510
node_modules/grpc/deps/grpc/include/grpc/grpc.h
generated
vendored
Normal file
@@ -0,0 +1,510 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015-2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_GRPC_H
|
||||
#define GRPC_GRPC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/status.h>
|
||||
|
||||
#include <grpc/byte_buffer.h>
|
||||
#include <grpc/impl/codegen/connectivity_state.h>
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
#include <grpc/impl/codegen/propagation_bits.h>
|
||||
#include <grpc/slice.h>
|
||||
#include <grpc/support/time.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*! \mainpage GRPC Core
|
||||
*
|
||||
* The GRPC Core library is a low-level library designed to be wrapped by higher
|
||||
* level libraries. The top-level API is provided in grpc.h. Security related
|
||||
* functionality lives in grpc_security.h.
|
||||
*/
|
||||
|
||||
GRPCAPI void grpc_metadata_array_init(grpc_metadata_array* array);
|
||||
GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array* array);
|
||||
|
||||
GRPCAPI void grpc_call_details_init(grpc_call_details* details);
|
||||
GRPCAPI void grpc_call_details_destroy(grpc_call_details* details);
|
||||
|
||||
/** Registers a plugin to be initialized and destroyed with the library.
|
||||
|
||||
The \a init and \a destroy functions will be invoked as part of
|
||||
\a grpc_init() and \a grpc_shutdown(), respectively.
|
||||
Note that these functions can be invoked an arbitrary number of times
|
||||
(and hence so will \a init and \a destroy).
|
||||
It is safe to pass NULL to either argument. Plugins are destroyed in
|
||||
the reverse order they were initialized. */
|
||||
GRPCAPI void grpc_register_plugin(void (*init)(void), void (*destroy)(void));
|
||||
|
||||
/** Initialize the grpc library.
|
||||
|
||||
After it's called, a matching invocation to grpc_shutdown() is expected.
|
||||
|
||||
It is not safe to call any other grpc functions before calling this.
|
||||
(To avoid overhead, little checking is done, and some things may work. We
|
||||
do not warrant that they will continue to do so in future revisions of this
|
||||
library). */
|
||||
GRPCAPI void grpc_init(void);
|
||||
|
||||
/** Shut down the grpc library.
|
||||
|
||||
Before it's called, there should haven been a matching invocation to
|
||||
grpc_init().
|
||||
|
||||
No memory is used by grpc after this call returns, nor are any instructions
|
||||
executing within the grpc library.
|
||||
Prior to calling, all application owned grpc objects must have been
|
||||
destroyed. */
|
||||
GRPCAPI void grpc_shutdown(void);
|
||||
|
||||
/** EXPERIMENTAL. Returns 1 if the grpc library has been initialized.
|
||||
TODO(ericgribkoff) Decide if this should be promoted to non-experimental as
|
||||
part of stabilizing the fork support API, as tracked in
|
||||
https://github.com/grpc/grpc/issues/15334 */
|
||||
GRPCAPI int grpc_is_initialized(void);
|
||||
|
||||
/** Return a string representing the current version of grpc */
|
||||
GRPCAPI const char* grpc_version_string(void);
|
||||
|
||||
/** Return a string specifying what the 'g' in gRPC stands for */
|
||||
GRPCAPI const char* grpc_g_stands_for(void);
|
||||
|
||||
/** Returns the completion queue factory based on the attributes. MAY return a
|
||||
NULL if no factory can be found */
|
||||
GRPCAPI const grpc_completion_queue_factory*
|
||||
grpc_completion_queue_factory_lookup(
|
||||
const grpc_completion_queue_attributes* attributes);
|
||||
|
||||
/** Helper function to create a completion queue with grpc_cq_completion_type
|
||||
of GRPC_CQ_NEXT and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */
|
||||
GRPCAPI grpc_completion_queue* grpc_completion_queue_create_for_next(
|
||||
void* reserved);
|
||||
|
||||
/** Helper function to create a completion queue with grpc_cq_completion_type
|
||||
of GRPC_CQ_PLUCK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */
|
||||
GRPCAPI grpc_completion_queue* grpc_completion_queue_create_for_pluck(
|
||||
void* reserved);
|
||||
|
||||
/** Helper function to create a completion queue with grpc_cq_completion_type
|
||||
of GRPC_CQ_CALLBACK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING.
|
||||
This function is experimental. */
|
||||
GRPCAPI grpc_completion_queue* grpc_completion_queue_create_for_callback(
|
||||
void* shutdown_callback, void* reserved);
|
||||
|
||||
/** Create a completion queue */
|
||||
GRPCAPI grpc_completion_queue* grpc_completion_queue_create(
|
||||
const grpc_completion_queue_factory* factory,
|
||||
const grpc_completion_queue_attributes* attributes, void* reserved);
|
||||
|
||||
/** Blocks until an event is available, the completion queue is being shut down,
|
||||
or deadline is reached.
|
||||
|
||||
Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout,
|
||||
otherwise a grpc_event describing the event that occurred.
|
||||
|
||||
Callers must not call grpc_completion_queue_next and
|
||||
grpc_completion_queue_pluck simultaneously on the same completion queue. */
|
||||
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue* cq,
|
||||
gpr_timespec deadline,
|
||||
void* reserved);
|
||||
|
||||
/** Blocks until an event with tag 'tag' is available, the completion queue is
|
||||
being shutdown or deadline is reached.
|
||||
|
||||
Returns a grpc_event with type GRPC_QUEUE_TIMEOUT on timeout,
|
||||
otherwise a grpc_event describing the event that occurred.
|
||||
|
||||
Callers must not call grpc_completion_queue_next and
|
||||
grpc_completion_queue_pluck simultaneously on the same completion queue.
|
||||
|
||||
Completion queues support a maximum of GRPC_MAX_COMPLETION_QUEUE_PLUCKERS
|
||||
concurrently executing plucks at any time. */
|
||||
GRPCAPI grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq,
|
||||
void* tag, gpr_timespec deadline,
|
||||
void* reserved);
|
||||
|
||||
/** Maximum number of outstanding grpc_completion_queue_pluck executions per
|
||||
completion queue */
|
||||
#define GRPC_MAX_COMPLETION_QUEUE_PLUCKERS 6
|
||||
|
||||
/** Begin destruction of a completion queue. Once all possible events are
|
||||
drained then grpc_completion_queue_next will start to produce
|
||||
GRPC_QUEUE_SHUTDOWN events only. At that point it's safe to call
|
||||
grpc_completion_queue_destroy.
|
||||
|
||||
After calling this function applications should ensure that no
|
||||
NEW work is added to be published on this completion queue. */
|
||||
GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue* cq);
|
||||
|
||||
/** Destroy a completion queue. The caller must ensure that the queue is
|
||||
drained and no threads are executing grpc_completion_queue_next */
|
||||
GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue* cq);
|
||||
|
||||
/*********** EXPERIMENTAL API ************/
|
||||
/** Initializes a thread local cache for \a cq.
|
||||
* grpc_flush_cq_tls_cache() MUST be called on the same thread,
|
||||
* with the same cq.
|
||||
*/
|
||||
GRPCAPI void grpc_completion_queue_thread_local_cache_init(
|
||||
grpc_completion_queue* cq);
|
||||
|
||||
/*********** EXPERIMENTAL API ************/
|
||||
/** Flushes the thread local cache for \a cq.
|
||||
* Returns 1 if there was contents in the cache. If there was an event
|
||||
* in \a cq tls cache, its tag is placed in tag, and ok is set to the
|
||||
* event success.
|
||||
*/
|
||||
GRPCAPI int grpc_completion_queue_thread_local_cache_flush(
|
||||
grpc_completion_queue* cq, void** tag, int* ok);
|
||||
|
||||
/** Check the connectivity state of a channel. */
|
||||
GRPCAPI grpc_connectivity_state grpc_channel_check_connectivity_state(
|
||||
grpc_channel* channel, int try_to_connect);
|
||||
|
||||
/** Number of active "external connectivity state watchers" attached to a
|
||||
* channel.
|
||||
* Useful for testing. **/
|
||||
GRPCAPI int grpc_channel_num_external_connectivity_watchers(
|
||||
grpc_channel* channel);
|
||||
|
||||
/** Watch for a change in connectivity state.
|
||||
Once the channel connectivity state is different from last_observed_state,
|
||||
tag will be enqueued on cq with success=1.
|
||||
If deadline expires BEFORE the state is changed, tag will be enqueued on cq
|
||||
with success=0. */
|
||||
GRPCAPI void grpc_channel_watch_connectivity_state(
|
||||
grpc_channel* channel, grpc_connectivity_state last_observed_state,
|
||||
gpr_timespec deadline, grpc_completion_queue* cq, void* tag);
|
||||
|
||||
/** Check whether a grpc channel supports connectivity watcher */
|
||||
GRPCAPI int grpc_channel_support_connectivity_watcher(grpc_channel* channel);
|
||||
|
||||
/** Create a call given a grpc_channel, in order to call 'method'. All
|
||||
completions are sent to 'completion_queue'. 'method' and 'host' need only
|
||||
live through the invocation of this function.
|
||||
If parent_call is non-NULL, it must be a server-side call. It will be used
|
||||
to propagate properties from the server call to this new client call,
|
||||
depending on the value of \a propagation_mask (see propagation_bits.h for
|
||||
possible values). */
|
||||
GRPCAPI grpc_call* grpc_channel_create_call(
|
||||
grpc_channel* channel, grpc_call* parent_call, uint32_t propagation_mask,
|
||||
grpc_completion_queue* completion_queue, grpc_slice method,
|
||||
const grpc_slice* host, gpr_timespec deadline, void* reserved);
|
||||
|
||||
/** Ping the channels peer (load balanced channels will select one sub-channel
|
||||
to ping); if the channel is not connected, posts a failed. */
|
||||
GRPCAPI void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq,
|
||||
void* tag, void* reserved);
|
||||
|
||||
/** Pre-register a method/host pair on a channel. */
|
||||
GRPCAPI void* grpc_channel_register_call(grpc_channel* channel,
|
||||
const char* method, const char* host,
|
||||
void* reserved);
|
||||
|
||||
/** Create a call given a handle returned from grpc_channel_register_call.
|
||||
\sa grpc_channel_create_call. */
|
||||
GRPCAPI grpc_call* grpc_channel_create_registered_call(
|
||||
grpc_channel* channel, grpc_call* parent_call, uint32_t propagation_mask,
|
||||
grpc_completion_queue* completion_queue, void* registered_call_handle,
|
||||
gpr_timespec deadline, void* reserved);
|
||||
|
||||
/** Allocate memory in the grpc_call arena: this memory is automatically
|
||||
discarded at call completion */
|
||||
GRPCAPI void* grpc_call_arena_alloc(grpc_call* call, size_t size);
|
||||
|
||||
/** Start a batch of operations defined in the array ops; when complete, post a
|
||||
completion of type 'tag' to the completion queue bound to the call.
|
||||
The order of ops specified in the batch has no significance.
|
||||
Only one operation of each type can be active at once in any given
|
||||
batch.
|
||||
If a call to grpc_call_start_batch returns GRPC_CALL_OK you must call
|
||||
grpc_completion_queue_next or grpc_completion_queue_pluck on the completion
|
||||
queue associated with 'call' for work to be performed. If a call to
|
||||
grpc_call_start_batch returns any value other than GRPC_CALL_OK it is
|
||||
guaranteed that no state associated with 'call' is changed and it is not
|
||||
appropriate to call grpc_completion_queue_next or
|
||||
grpc_completion_queue_pluck consequent to the failed grpc_call_start_batch
|
||||
call.
|
||||
THREAD SAFETY: access to grpc_call_start_batch in multi-threaded environment
|
||||
needs to be synchronized. As an optimization, you may synchronize batches
|
||||
containing just send operations independently from batches containing just
|
||||
receive operations. */
|
||||
GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call* call,
|
||||
const grpc_op* ops, size_t nops,
|
||||
void* tag, void* reserved);
|
||||
|
||||
/** Returns a newly allocated string representing the endpoint to which this
|
||||
call is communicating with. The string is in the uri format accepted by
|
||||
grpc_channel_create.
|
||||
The returned string should be disposed of with gpr_free().
|
||||
|
||||
WARNING: this value is never authenticated or subject to any security
|
||||
related code. It must not be used for any authentication related
|
||||
functionality. Instead, use grpc_auth_context. */
|
||||
GRPCAPI char* grpc_call_get_peer(grpc_call* call);
|
||||
|
||||
struct census_context;
|
||||
|
||||
/** Set census context for a call; Must be called before first call to
|
||||
grpc_call_start_batch(). */
|
||||
GRPCAPI void grpc_census_call_set_context(grpc_call* call,
|
||||
struct census_context* context);
|
||||
|
||||
/** Retrieve the calls current census context. */
|
||||
GRPCAPI struct census_context* grpc_census_call_get_context(grpc_call* call);
|
||||
|
||||
/** Return a newly allocated string representing the target a channel was
|
||||
created for. */
|
||||
GRPCAPI char* grpc_channel_get_target(grpc_channel* channel);
|
||||
|
||||
/** Request info about the channel.
|
||||
\a channel_info indicates what information is being requested and
|
||||
how that information will be returned.
|
||||
\a channel_info is owned by the caller. */
|
||||
GRPCAPI void grpc_channel_get_info(grpc_channel* channel,
|
||||
const grpc_channel_info* channel_info);
|
||||
|
||||
/** EXPERIMENTAL. Resets the channel's connect backoff.
|
||||
TODO(roth): When we see whether this proves useful, either promote
|
||||
to non-experimental or remove it. */
|
||||
GRPCAPI void grpc_channel_reset_connect_backoff(grpc_channel* channel);
|
||||
|
||||
/** Create a client channel to 'target'. Additional channel level configuration
|
||||
MAY be provided by grpc_channel_args, though the expectation is that most
|
||||
clients will want to simply pass NULL. The user data in 'args' need only
|
||||
live through the invocation of this function. However, if any args of the
|
||||
'pointer' type are passed, then the referenced vtable must be maintained
|
||||
by the caller until grpc_channel_destroy terminates. See grpc_channel_args
|
||||
definition for more on this. */
|
||||
GRPCAPI grpc_channel* grpc_insecure_channel_create(
|
||||
const char* target, const grpc_channel_args* args, void* reserved);
|
||||
|
||||
/** Create a lame client: this client fails every operation attempted on it. */
|
||||
GRPCAPI grpc_channel* grpc_lame_client_channel_create(
|
||||
const char* target, grpc_status_code error_code, const char* error_message);
|
||||
|
||||
/** Close and destroy a grpc channel */
|
||||
GRPCAPI void grpc_channel_destroy(grpc_channel* channel);
|
||||
|
||||
/** Error handling for grpc_call
|
||||
Most grpc_call functions return a grpc_error. If the error is not GRPC_OK
|
||||
then the operation failed due to some unsatisfied precondition.
|
||||
If a grpc_call fails, it's guaranteed that no change to the call state
|
||||
has been made. */
|
||||
|
||||
/** Called by clients to cancel an RPC on the server.
|
||||
Can be called multiple times, from any thread.
|
||||
THREAD-SAFETY grpc_call_cancel and grpc_call_cancel_with_status
|
||||
are thread-safe, and can be called at any point before grpc_call_unref
|
||||
is called.*/
|
||||
GRPCAPI grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved);
|
||||
|
||||
/** Called by clients to cancel an RPC on the server.
|
||||
Can be called multiple times, from any thread.
|
||||
If a status has not been received for the call, set it to the status code
|
||||
and description passed in.
|
||||
Importantly, this function does not send status nor description to the
|
||||
remote endpoint.
|
||||
Note that \a description doesn't need be a static string.
|
||||
It doesn't need to be alive after the call to
|
||||
grpc_call_cancel_with_status completes.
|
||||
*/
|
||||
GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call* call,
|
||||
grpc_status_code status,
|
||||
const char* description,
|
||||
void* reserved);
|
||||
|
||||
/** Ref a call.
|
||||
THREAD SAFETY: grpc_call_ref is thread-compatible */
|
||||
GRPCAPI void grpc_call_ref(grpc_call* call);
|
||||
|
||||
/** Unref a call.
|
||||
THREAD SAFETY: grpc_call_unref is thread-compatible */
|
||||
GRPCAPI void grpc_call_unref(grpc_call* call);
|
||||
|
||||
/** Request notification of a new call.
|
||||
Once a call is received, a notification tagged with \a tag_new is added to
|
||||
\a cq_for_notification. \a call, \a details and \a request_metadata are
|
||||
updated with the appropriate call information. \a cq_bound_to_call is bound
|
||||
to \a call, and batch operation notifications for that call will be posted
|
||||
to \a cq_bound_to_call.
|
||||
Note that \a cq_for_notification must have been registered to the server via
|
||||
\a grpc_server_register_completion_queue. */
|
||||
GRPCAPI grpc_call_error grpc_server_request_call(
|
||||
grpc_server* server, grpc_call** call, grpc_call_details* details,
|
||||
grpc_metadata_array* request_metadata,
|
||||
grpc_completion_queue* cq_bound_to_call,
|
||||
grpc_completion_queue* cq_for_notification, void* tag_new);
|
||||
|
||||
/** How to handle payloads for a registered method */
|
||||
typedef enum {
|
||||
/** Don't try to read the payload */
|
||||
GRPC_SRM_PAYLOAD_NONE,
|
||||
/** Read the initial payload as a byte buffer */
|
||||
GRPC_SRM_PAYLOAD_READ_INITIAL_BYTE_BUFFER
|
||||
} grpc_server_register_method_payload_handling;
|
||||
|
||||
/** Registers a method in the server.
|
||||
Methods to this (host, method) pair will not be reported by
|
||||
grpc_server_request_call, but instead be reported by
|
||||
grpc_server_request_registered_call when passed the appropriate
|
||||
registered_method (as returned by this function).
|
||||
Must be called before grpc_server_start.
|
||||
Returns NULL on failure. */
|
||||
GRPCAPI void* grpc_server_register_method(
|
||||
grpc_server* server, const char* method, const char* host,
|
||||
grpc_server_register_method_payload_handling payload_handling,
|
||||
uint32_t flags);
|
||||
|
||||
/** Request notification of a new pre-registered call. 'cq_for_notification'
|
||||
must have been registered to the server via
|
||||
grpc_server_register_completion_queue. */
|
||||
GRPCAPI grpc_call_error grpc_server_request_registered_call(
|
||||
grpc_server* server, void* registered_method, grpc_call** call,
|
||||
gpr_timespec* deadline, grpc_metadata_array* request_metadata,
|
||||
grpc_byte_buffer** optional_payload,
|
||||
grpc_completion_queue* cq_bound_to_call,
|
||||
grpc_completion_queue* cq_for_notification, void* tag_new);
|
||||
|
||||
/** Create a server. Additional configuration for each incoming channel can
|
||||
be specified with args. If no additional configuration is needed, args can
|
||||
be NULL. The user data in 'args' need only live through the invocation of
|
||||
this function. However, if any args of the 'pointer' type are passed, then
|
||||
the referenced vtable must be maintained by the caller until
|
||||
grpc_server_destroy terminates. See grpc_channel_args definition for more
|
||||
on this. */
|
||||
GRPCAPI grpc_server* grpc_server_create(const grpc_channel_args* args,
|
||||
void* reserved);
|
||||
|
||||
/** Register a completion queue with the server. Must be done for any
|
||||
notification completion queue that is passed to grpc_server_request_*_call
|
||||
and to grpc_server_shutdown_and_notify. Must be performed prior to
|
||||
grpc_server_start. */
|
||||
GRPCAPI void grpc_server_register_completion_queue(grpc_server* server,
|
||||
grpc_completion_queue* cq,
|
||||
void* reserved);
|
||||
|
||||
/** Add a HTTP2 over plaintext over tcp listener.
|
||||
Returns bound port number on success, 0 on failure.
|
||||
REQUIRES: server not started */
|
||||
GRPCAPI int grpc_server_add_insecure_http2_port(grpc_server* server,
|
||||
const char* addr);
|
||||
|
||||
/** Start a server - tells all listeners to start listening */
|
||||
GRPCAPI void grpc_server_start(grpc_server* server);
|
||||
|
||||
/** Begin shutting down a server.
|
||||
After completion, no new calls or connections will be admitted.
|
||||
Existing calls will be allowed to complete.
|
||||
Send a GRPC_OP_COMPLETE event when there are no more calls being serviced.
|
||||
Shutdown is idempotent, and all tags will be notified at once if multiple
|
||||
grpc_server_shutdown_and_notify calls are made. 'cq' must have been
|
||||
registered to this server via grpc_server_register_completion_queue. */
|
||||
GRPCAPI void grpc_server_shutdown_and_notify(grpc_server* server,
|
||||
grpc_completion_queue* cq,
|
||||
void* tag);
|
||||
|
||||
/** Cancel all in-progress calls.
|
||||
Only usable after shutdown. */
|
||||
GRPCAPI void grpc_server_cancel_all_calls(grpc_server* server);
|
||||
|
||||
/** Destroy a server.
|
||||
Shutdown must have completed beforehand (i.e. all tags generated by
|
||||
grpc_server_shutdown_and_notify must have been received, and at least
|
||||
one call to grpc_server_shutdown_and_notify must have been made). */
|
||||
GRPCAPI void grpc_server_destroy(grpc_server* server);
|
||||
|
||||
/** Enable or disable a tracer.
|
||||
|
||||
Tracers (usually controlled by the environment variable GRPC_TRACE)
|
||||
allow printf-style debugging on GRPC internals, and are useful for
|
||||
tracking down problems in the field.
|
||||
|
||||
Use of this function is not strictly thread-safe, but the
|
||||
thread-safety issues raised by it should not be of concern. */
|
||||
GRPCAPI int grpc_tracer_set_enabled(const char* name, int enabled);
|
||||
|
||||
/** Check whether a metadata key is legal (will be accepted by core) */
|
||||
GRPCAPI int grpc_header_key_is_legal(grpc_slice slice);
|
||||
|
||||
/** Check whether a non-binary metadata value is legal (will be accepted by
|
||||
core) */
|
||||
GRPCAPI int grpc_header_nonbin_value_is_legal(grpc_slice slice);
|
||||
|
||||
/** Check whether a metadata key corresponds to a binary value */
|
||||
GRPCAPI int grpc_is_binary_header(grpc_slice slice);
|
||||
|
||||
/** Convert grpc_call_error values to a string */
|
||||
GRPCAPI const char* grpc_call_error_to_string(grpc_call_error error);
|
||||
|
||||
/** Create a buffer pool */
|
||||
GRPCAPI grpc_resource_quota* grpc_resource_quota_create(const char* trace_name);
|
||||
|
||||
/** Add a reference to a buffer pool */
|
||||
GRPCAPI void grpc_resource_quota_ref(grpc_resource_quota* resource_quota);
|
||||
|
||||
/** Drop a reference to a buffer pool */
|
||||
GRPCAPI void grpc_resource_quota_unref(grpc_resource_quota* resource_quota);
|
||||
|
||||
/** Update the size of a buffer pool */
|
||||
GRPCAPI void grpc_resource_quota_resize(grpc_resource_quota* resource_quota,
|
||||
size_t new_size);
|
||||
|
||||
/** Update the size of the maximum number of threads allowed */
|
||||
GRPCAPI void grpc_resource_quota_set_max_threads(
|
||||
grpc_resource_quota* resource_quota, int new_max_threads);
|
||||
|
||||
/** Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota
|
||||
*/
|
||||
GRPCAPI const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable(void);
|
||||
|
||||
/************* CHANNELZ API *************/
|
||||
/** Channelz is under active development. The following APIs will see some
|
||||
churn as the feature is implemented. This comment will be removed once
|
||||
channelz is officially supported, and these APIs become stable. For now
|
||||
you may track the progress by following this github issue:
|
||||
https://github.com/grpc/grpc/issues/15340
|
||||
|
||||
the following APIs return allocated JSON strings that match the response
|
||||
objects from the channelz proto, found here:
|
||||
https://github.com/grpc/grpc/blob/master/src/proto/grpc/channelz/channelz.proto.
|
||||
|
||||
For easy conversion to protobuf, The JSON is formatted according to:
|
||||
https://developers.google.com/protocol-buffers/docs/proto3#json. */
|
||||
|
||||
/* Gets all root channels (i.e. channels the application has directly
|
||||
created). This does not include subchannels nor non-top level channels.
|
||||
The returned string is allocated and must be freed by the application. */
|
||||
GRPCAPI char* grpc_channelz_get_top_channels(intptr_t start_channel_id);
|
||||
|
||||
/* Returns a single Channel, or else a NOT_FOUND code. The returned string
|
||||
is allocated and must be freed by the application. */
|
||||
GRPCAPI char* grpc_channelz_get_channel(intptr_t channel_id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_GRPC_H */
|
||||
38
node_modules/grpc/deps/grpc/include/grpc/grpc_cronet.h
generated
vendored
Normal file
38
node_modules/grpc/deps/grpc/include/grpc/grpc_cronet.h
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_GRPC_CRONET_H
|
||||
#define GRPC_GRPC_CRONET_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
GRPCAPI grpc_channel* grpc_cronet_secure_channel_create(
|
||||
void* engine, const char* target, const grpc_channel_args* args,
|
||||
void* reserved);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_GRPC_CRONET_H */
|
||||
67
node_modules/grpc/deps/grpc/include/grpc/grpc_posix.h
generated
vendored
Normal file
67
node_modules/grpc/deps/grpc/include/grpc/grpc_posix.h
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_GRPC_POSIX_H
|
||||
#define GRPC_GRPC_POSIX_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*! \mainpage GRPC Core POSIX
|
||||
*
|
||||
* The GRPC Core POSIX library provides some POSIX-specific low-level
|
||||
* functionality on top of GRPC Core.
|
||||
*/
|
||||
|
||||
/** Create a client channel to 'target' using file descriptor 'fd'. The 'target'
|
||||
argument will be used to indicate the name for this channel. See the comment
|
||||
for grpc_insecure_channel_create for description of 'args' argument. */
|
||||
GRPCAPI grpc_channel* grpc_insecure_channel_create_from_fd(
|
||||
const char* target, int fd, const grpc_channel_args* args);
|
||||
|
||||
/** Add the connected communication channel based on file descriptor 'fd' to the
|
||||
'server'. The 'fd' must be an open file descriptor corresponding to a
|
||||
connected socket. Events from the file descriptor may come on any of the
|
||||
server completion queues (i.e completion queues registered via the
|
||||
grpc_server_register_completion_queue API).
|
||||
|
||||
The 'reserved' pointer MUST be NULL.
|
||||
*/
|
||||
GRPCAPI void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
||||
void* reserved, int fd);
|
||||
|
||||
/** GRPC Core POSIX library may internally use signals to optimize some work.
|
||||
The library uses (SIGRTMIN + 6) signal by default. Use this API to instruct
|
||||
the library to use a different signal i.e 'signum' instead.
|
||||
Note:
|
||||
- To prevent GRPC library from using any signals, pass a 'signum' of -1
|
||||
- This API is optional but if called, it MUST be called before grpc_init() */
|
||||
GRPCAPI void grpc_use_signal(int signum);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_GRPC_POSIX_H */
|
||||
616
node_modules/grpc/deps/grpc/include/grpc/grpc_security.h
generated
vendored
Normal file
616
node_modules/grpc/deps/grpc/include/grpc/grpc_security.h
generated
vendored
Normal file
@@ -0,0 +1,616 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_GRPC_SECURITY_H
|
||||
#define GRPC_GRPC_SECURITY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/grpc_security_constants.h>
|
||||
#include <grpc/status.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** --- Authentication Context. --- */
|
||||
|
||||
typedef struct grpc_auth_context grpc_auth_context;
|
||||
|
||||
typedef struct grpc_auth_property_iterator {
|
||||
const grpc_auth_context* ctx;
|
||||
size_t index;
|
||||
const char* name;
|
||||
} grpc_auth_property_iterator;
|
||||
|
||||
/** value, if not NULL, is guaranteed to be NULL terminated. */
|
||||
typedef struct grpc_auth_property {
|
||||
char* name;
|
||||
char* value;
|
||||
size_t value_length;
|
||||
} grpc_auth_property;
|
||||
|
||||
/** Returns NULL when the iterator is at the end. */
|
||||
GRPCAPI const grpc_auth_property* grpc_auth_property_iterator_next(
|
||||
grpc_auth_property_iterator* it);
|
||||
|
||||
/** Iterates over the auth context. */
|
||||
GRPCAPI grpc_auth_property_iterator
|
||||
grpc_auth_context_property_iterator(const grpc_auth_context* ctx);
|
||||
|
||||
/** Gets the peer identity. Returns an empty iterator (first _next will return
|
||||
NULL) if the peer is not authenticated. */
|
||||
GRPCAPI grpc_auth_property_iterator
|
||||
grpc_auth_context_peer_identity(const grpc_auth_context* ctx);
|
||||
|
||||
/** Finds a property in the context. May return an empty iterator (first _next
|
||||
will return NULL) if no property with this name was found in the context. */
|
||||
GRPCAPI grpc_auth_property_iterator grpc_auth_context_find_properties_by_name(
|
||||
const grpc_auth_context* ctx, const char* name);
|
||||
|
||||
/** Gets the name of the property that indicates the peer identity. Will return
|
||||
NULL if the peer is not authenticated. */
|
||||
GRPCAPI const char* grpc_auth_context_peer_identity_property_name(
|
||||
const grpc_auth_context* ctx);
|
||||
|
||||
/** Returns 1 if the peer is authenticated, 0 otherwise. */
|
||||
GRPCAPI int grpc_auth_context_peer_is_authenticated(
|
||||
const grpc_auth_context* ctx);
|
||||
|
||||
/** Gets the auth context from the call. Caller needs to call
|
||||
grpc_auth_context_release on the returned context. */
|
||||
GRPCAPI grpc_auth_context* grpc_call_auth_context(grpc_call* call);
|
||||
|
||||
/** Releases the auth context returned from grpc_call_auth_context. */
|
||||
GRPCAPI void grpc_auth_context_release(grpc_auth_context* context);
|
||||
|
||||
/** --
|
||||
The following auth context methods should only be called by a server metadata
|
||||
processor to set properties extracted from auth metadata.
|
||||
-- */
|
||||
|
||||
/** Add a property. */
|
||||
GRPCAPI void grpc_auth_context_add_property(grpc_auth_context* ctx,
|
||||
const char* name, const char* value,
|
||||
size_t value_length);
|
||||
|
||||
/** Add a C string property. */
|
||||
GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context* ctx,
|
||||
const char* name,
|
||||
const char* value);
|
||||
|
||||
/** Sets the property name. Returns 1 if successful or 0 in case of failure
|
||||
(which means that no property with this name exists). */
|
||||
GRPCAPI int grpc_auth_context_set_peer_identity_property_name(
|
||||
grpc_auth_context* ctx, const char* name);
|
||||
|
||||
/** --- SSL Session Cache. ---
|
||||
|
||||
A SSL session cache object represents a way to cache client sessions
|
||||
between connections. Only ticket-based resumption is supported. */
|
||||
|
||||
typedef struct grpc_ssl_session_cache grpc_ssl_session_cache;
|
||||
|
||||
/** Create LRU cache for client-side SSL sessions with the given capacity.
|
||||
If capacity is < 1, a default capacity is used instead. */
|
||||
GRPCAPI grpc_ssl_session_cache* grpc_ssl_session_cache_create_lru(
|
||||
size_t capacity);
|
||||
|
||||
/** Destroy SSL session cache. */
|
||||
GRPCAPI void grpc_ssl_session_cache_destroy(grpc_ssl_session_cache* cache);
|
||||
|
||||
/** Create a channel arg with the given cache object. */
|
||||
GRPCAPI grpc_arg
|
||||
grpc_ssl_session_cache_create_channel_arg(grpc_ssl_session_cache* cache);
|
||||
|
||||
/** --- grpc_channel_credentials object. ---
|
||||
|
||||
A channel credentials object represents a way to authenticate a client on a
|
||||
channel. */
|
||||
|
||||
typedef struct grpc_channel_credentials grpc_channel_credentials;
|
||||
|
||||
/** Releases a channel credentials object.
|
||||
The creator of the credentials object is responsible for its release. */
|
||||
GRPCAPI void grpc_channel_credentials_release(grpc_channel_credentials* creds);
|
||||
|
||||
/** Creates default credentials to connect to a google gRPC service.
|
||||
WARNING: Do NOT use this credentials to connect to a non-google service as
|
||||
this could result in an oauth2 token leak. */
|
||||
GRPCAPI grpc_channel_credentials* grpc_google_default_credentials_create(void);
|
||||
|
||||
/** Callback for getting the SSL roots override from the application.
|
||||
In case of success, *pem_roots_certs must be set to a NULL terminated string
|
||||
containing the list of PEM encoded root certificates. The ownership is passed
|
||||
to the core and freed (laster by the core) with gpr_free.
|
||||
If this function fails and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is
|
||||
set to a valid path, it will override the roots specified this func */
|
||||
typedef grpc_ssl_roots_override_result (*grpc_ssl_roots_override_callback)(
|
||||
char** pem_root_certs);
|
||||
|
||||
/** Setup a callback to override the default TLS/SSL roots.
|
||||
This function is not thread-safe and must be called at initialization time
|
||||
before any ssl credentials are created to have the desired side effect.
|
||||
If GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment is set to a valid path, the
|
||||
callback will not be called. */
|
||||
GRPCAPI void grpc_set_ssl_roots_override_callback(
|
||||
grpc_ssl_roots_override_callback cb);
|
||||
|
||||
/** Object that holds a private key / certificate chain pair in PEM format. */
|
||||
typedef struct {
|
||||
/** private_key is the NULL-terminated string containing the PEM encoding of
|
||||
the client's private key. */
|
||||
const char* private_key;
|
||||
|
||||
/** cert_chain is the NULL-terminated string containing the PEM encoding of
|
||||
the client's certificate chain. */
|
||||
const char* cert_chain;
|
||||
} grpc_ssl_pem_key_cert_pair;
|
||||
|
||||
/** Object that holds additional peer-verification options on a secure
|
||||
channel. */
|
||||
typedef struct {
|
||||
/** If non-NULL this callback will be invoked with the expected
|
||||
target_name, the peer's certificate (in PEM format), and whatever
|
||||
userdata pointer is set below. If a non-zero value is returned by this
|
||||
callback then it is treated as a verification failure. Invocation of
|
||||
the callback is blocking, so any implementation should be light-weight.
|
||||
*/
|
||||
int (*verify_peer_callback)(const char* target_name, const char* peer_pem,
|
||||
void* userdata);
|
||||
/** Arbitrary userdata that will be passed as the last argument to
|
||||
verify_peer_callback. */
|
||||
void* verify_peer_callback_userdata;
|
||||
/** A destruct callback that will be invoked when the channel is being
|
||||
cleaned up. The userdata argument will be passed to it. The intent is
|
||||
to perform any cleanup associated with that userdata. */
|
||||
void (*verify_peer_destruct)(void* userdata);
|
||||
} verify_peer_options;
|
||||
|
||||
/** Creates an SSL credentials object.
|
||||
- pem_root_certs is the NULL-terminated string containing the PEM encoding
|
||||
of the server root certificates. If this parameter is NULL, the
|
||||
implementation will first try to dereference the file pointed by the
|
||||
GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails,
|
||||
try to get the roots set by grpc_override_ssl_default_roots. Eventually,
|
||||
if all these fail, it will try to get the roots from a well-known place on
|
||||
disk (in the grpc install directory).
|
||||
- pem_key_cert_pair is a pointer on the object containing client's private
|
||||
key and certificate chain. This parameter can be NULL if the client does
|
||||
not have such a key/cert pair.
|
||||
- verify_options is an optional verify_peer_options object which holds
|
||||
additional options controlling how peer certificates are verified. For
|
||||
example, you can supply a callback which receives the peer's certificate
|
||||
with which you can do additional verification. Can be NULL, in which
|
||||
case verification will retain default behavior. Any settings in
|
||||
verify_options are copied during this call, so the verify_options
|
||||
object can be released afterwards. */
|
||||
GRPCAPI grpc_channel_credentials* grpc_ssl_credentials_create(
|
||||
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
|
||||
const verify_peer_options* verify_options, void* reserved);
|
||||
|
||||
/** --- grpc_call_credentials object.
|
||||
|
||||
A call credentials object represents a way to authenticate on a particular
|
||||
call. These credentials can be composed with a channel credentials object
|
||||
so that they are sent with every call on this channel. */
|
||||
|
||||
typedef struct grpc_call_credentials grpc_call_credentials;
|
||||
|
||||
/** Releases a call credentials object.
|
||||
The creator of the credentials object is responsible for its release. */
|
||||
GRPCAPI void grpc_call_credentials_release(grpc_call_credentials* creds);
|
||||
|
||||
/** Creates a composite channel credentials object. */
|
||||
GRPCAPI grpc_channel_credentials* grpc_composite_channel_credentials_create(
|
||||
grpc_channel_credentials* channel_creds, grpc_call_credentials* call_creds,
|
||||
void* reserved);
|
||||
|
||||
/** Creates a composite call credentials object. */
|
||||
GRPCAPI grpc_call_credentials* grpc_composite_call_credentials_create(
|
||||
grpc_call_credentials* creds1, grpc_call_credentials* creds2,
|
||||
void* reserved);
|
||||
|
||||
/** Creates a compute engine credentials object for connecting to Google.
|
||||
WARNING: Do NOT use this credentials to connect to a non-google service as
|
||||
this could result in an oauth2 token leak. */
|
||||
GRPCAPI grpc_call_credentials* grpc_google_compute_engine_credentials_create(
|
||||
void* reserved);
|
||||
|
||||
GRPCAPI gpr_timespec grpc_max_auth_token_lifetime(void);
|
||||
|
||||
/** Creates a JWT credentials object. May return NULL if the input is invalid.
|
||||
- json_key is the JSON key string containing the client's private key.
|
||||
- token_lifetime is the lifetime of each Json Web Token (JWT) created with
|
||||
this credentials. It should not exceed grpc_max_auth_token_lifetime or
|
||||
will be cropped to this value. */
|
||||
GRPCAPI grpc_call_credentials*
|
||||
grpc_service_account_jwt_access_credentials_create(const char* json_key,
|
||||
gpr_timespec token_lifetime,
|
||||
void* reserved);
|
||||
|
||||
/** Creates an Oauth2 Refresh Token credentials object for connecting to Google.
|
||||
May return NULL if the input is invalid.
|
||||
WARNING: Do NOT use this credentials to connect to a non-google service as
|
||||
this could result in an oauth2 token leak.
|
||||
- json_refresh_token is the JSON string containing the refresh token itself
|
||||
along with a client_id and client_secret. */
|
||||
GRPCAPI grpc_call_credentials* grpc_google_refresh_token_credentials_create(
|
||||
const char* json_refresh_token, void* reserved);
|
||||
|
||||
/** Creates an Oauth2 Access Token credentials with an access token that was
|
||||
aquired by an out of band mechanism. */
|
||||
GRPCAPI grpc_call_credentials* grpc_access_token_credentials_create(
|
||||
const char* access_token, void* reserved);
|
||||
|
||||
/** Creates an IAM credentials object for connecting to Google. */
|
||||
GRPCAPI grpc_call_credentials* grpc_google_iam_credentials_create(
|
||||
const char* authorization_token, const char* authority_selector,
|
||||
void* reserved);
|
||||
|
||||
/** Callback function to be called by the metadata credentials plugin
|
||||
implementation when the metadata is ready.
|
||||
- user_data is the opaque pointer that was passed in the get_metadata method
|
||||
of the grpc_metadata_credentials_plugin (see below).
|
||||
- creds_md is an array of credentials metadata produced by the plugin. It
|
||||
may be set to NULL in case of an error.
|
||||
- num_creds_md is the number of items in the creds_md array.
|
||||
- status must be GRPC_STATUS_OK in case of success or another specific error
|
||||
code otherwise.
|
||||
- error_details contains details about the error if any. In case of success
|
||||
it should be NULL and will be otherwise ignored. */
|
||||
typedef void (*grpc_credentials_plugin_metadata_cb)(
|
||||
void* user_data, const grpc_metadata* creds_md, size_t num_creds_md,
|
||||
grpc_status_code status, const char* error_details);
|
||||
|
||||
/** Context that can be used by metadata credentials plugin in order to create
|
||||
auth related metadata. */
|
||||
typedef struct {
|
||||
/** The fully qualifed service url. */
|
||||
const char* service_url;
|
||||
|
||||
/** The method name of the RPC being called (not fully qualified).
|
||||
The fully qualified method name can be built from the service_url:
|
||||
full_qualified_method_name = ctx->service_url + '/' + ctx->method_name. */
|
||||
const char* method_name;
|
||||
|
||||
/** The auth_context of the channel which gives the server's identity. */
|
||||
const grpc_auth_context* channel_auth_context;
|
||||
|
||||
/** Reserved for future use. */
|
||||
void* reserved;
|
||||
} grpc_auth_metadata_context;
|
||||
|
||||
/** Maximum number of metadata entries returnable by a credentials plugin via
|
||||
a synchronous return. */
|
||||
#define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX 4
|
||||
|
||||
/** grpc_metadata_credentials plugin is an API user provided structure used to
|
||||
create grpc_credentials objects that can be set on a channel (composed) or
|
||||
a call. See grpc_credentials_metadata_create_from_plugin below.
|
||||
The grpc client stack will call the get_metadata method of the plugin for
|
||||
every call in scope for the credentials created from it. */
|
||||
typedef struct {
|
||||
/** The implementation of this method has to be non-blocking, but can
|
||||
be performed synchronously or asynchronously.
|
||||
|
||||
If processing occurs synchronously, returns non-zero and populates
|
||||
creds_md, num_creds_md, status, and error_details. In this case,
|
||||
the caller takes ownership of the entries in creds_md and of
|
||||
error_details. Note that if the plugin needs to return more than
|
||||
GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX entries in creds_md, it must
|
||||
return asynchronously.
|
||||
|
||||
If processing occurs asynchronously, returns zero and invokes \a cb
|
||||
when processing is completed. \a user_data will be passed as the
|
||||
first parameter of the callback. NOTE: \a cb MUST be invoked in a
|
||||
different thread, not from the thread in which \a get_metadata() is
|
||||
invoked.
|
||||
|
||||
\a context is the information that can be used by the plugin to create
|
||||
auth metadata. */
|
||||
int (*get_metadata)(
|
||||
void* state, grpc_auth_metadata_context context,
|
||||
grpc_credentials_plugin_metadata_cb cb, void* user_data,
|
||||
grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX],
|
||||
size_t* num_creds_md, grpc_status_code* status,
|
||||
const char** error_details);
|
||||
|
||||
/** Destroys the plugin state. */
|
||||
void (*destroy)(void* state);
|
||||
|
||||
/** State that will be set as the first parameter of the methods above. */
|
||||
void* state;
|
||||
|
||||
/** Type of credentials that this plugin is implementing. */
|
||||
const char* type;
|
||||
} grpc_metadata_credentials_plugin;
|
||||
|
||||
/** Creates a credentials object from a plugin. */
|
||||
GRPCAPI grpc_call_credentials* grpc_metadata_credentials_create_from_plugin(
|
||||
grpc_metadata_credentials_plugin plugin, void* reserved);
|
||||
|
||||
/** --- Secure channel creation. --- */
|
||||
|
||||
/** Creates a secure channel using the passed-in credentials. Additional
|
||||
channel level configuration MAY be provided by grpc_channel_args, though
|
||||
the expectation is that most clients will want to simply pass NULL. The
|
||||
user data in 'args' need only live through the invocation of this function.
|
||||
However, if any args of the 'pointer' type are passed, then the referenced
|
||||
vtable must be maintained by the caller until grpc_channel_destroy
|
||||
terminates. See grpc_channel_args definition for more on this. */
|
||||
GRPCAPI grpc_channel* grpc_secure_channel_create(
|
||||
grpc_channel_credentials* creds, const char* target,
|
||||
const grpc_channel_args* args, void* reserved);
|
||||
|
||||
/** --- grpc_server_credentials object. ---
|
||||
|
||||
A server credentials object represents a way to authenticate a server. */
|
||||
|
||||
typedef struct grpc_server_credentials grpc_server_credentials;
|
||||
|
||||
/** Releases a server_credentials object.
|
||||
The creator of the server_credentials object is responsible for its release.
|
||||
*/
|
||||
GRPCAPI void grpc_server_credentials_release(grpc_server_credentials* creds);
|
||||
|
||||
/** Server certificate config object holds the server's public certificates and
|
||||
associated private keys, as well as any CA certificates needed for client
|
||||
certificate validation (if applicable). Create using
|
||||
grpc_ssl_server_certificate_config_create(). */
|
||||
typedef struct grpc_ssl_server_certificate_config
|
||||
grpc_ssl_server_certificate_config;
|
||||
|
||||
/** Creates a grpc_ssl_server_certificate_config object.
|
||||
- pem_roots_cert is the NULL-terminated string containing the PEM encoding of
|
||||
the client root certificates. This parameter may be NULL if the server does
|
||||
not want the client to be authenticated with SSL.
|
||||
- pem_key_cert_pairs is an array private key / certificate chains of the
|
||||
server. This parameter cannot be NULL.
|
||||
- num_key_cert_pairs indicates the number of items in the private_key_files
|
||||
and cert_chain_files parameters. It must be at least 1.
|
||||
- It is the caller's responsibility to free this object via
|
||||
grpc_ssl_server_certificate_config_destroy(). */
|
||||
GRPCAPI grpc_ssl_server_certificate_config*
|
||||
grpc_ssl_server_certificate_config_create(
|
||||
const char* pem_root_certs,
|
||||
const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
|
||||
size_t num_key_cert_pairs);
|
||||
|
||||
/** Destroys a grpc_ssl_server_certificate_config object. */
|
||||
GRPCAPI void grpc_ssl_server_certificate_config_destroy(
|
||||
grpc_ssl_server_certificate_config* config);
|
||||
|
||||
/** Callback to retrieve updated SSL server certificates, private keys, and
|
||||
trusted CAs (for client authentication).
|
||||
- user_data parameter, if not NULL, contains opaque data to be used by the
|
||||
callback.
|
||||
- Use grpc_ssl_server_certificate_config_create to create the config.
|
||||
- The caller assumes ownership of the config. */
|
||||
typedef grpc_ssl_certificate_config_reload_status (
|
||||
*grpc_ssl_server_certificate_config_callback)(
|
||||
void* user_data, grpc_ssl_server_certificate_config** config);
|
||||
|
||||
/** Deprecated in favor of grpc_ssl_server_credentials_create_ex.
|
||||
Creates an SSL server_credentials object.
|
||||
- pem_roots_cert is the NULL-terminated string containing the PEM encoding of
|
||||
the client root certificates. This parameter may be NULL if the server does
|
||||
not want the client to be authenticated with SSL.
|
||||
- pem_key_cert_pairs is an array private key / certificate chains of the
|
||||
server. This parameter cannot be NULL.
|
||||
- num_key_cert_pairs indicates the number of items in the private_key_files
|
||||
and cert_chain_files parameters. It should be at least 1.
|
||||
- force_client_auth, if set to non-zero will force the client to authenticate
|
||||
with an SSL cert. Note that this option is ignored if pem_root_certs is
|
||||
NULL. */
|
||||
GRPCAPI grpc_server_credentials* grpc_ssl_server_credentials_create(
|
||||
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
|
||||
size_t num_key_cert_pairs, int force_client_auth, void* reserved);
|
||||
|
||||
/** Deprecated in favor of grpc_ssl_server_credentials_create_with_options.
|
||||
Same as grpc_ssl_server_credentials_create method except uses
|
||||
grpc_ssl_client_certificate_request_type enum to support more ways to
|
||||
authenticate client cerificates.*/
|
||||
GRPCAPI grpc_server_credentials* grpc_ssl_server_credentials_create_ex(
|
||||
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
|
||||
size_t num_key_cert_pairs,
|
||||
grpc_ssl_client_certificate_request_type client_certificate_request,
|
||||
void* reserved);
|
||||
|
||||
typedef struct grpc_ssl_server_credentials_options
|
||||
grpc_ssl_server_credentials_options;
|
||||
|
||||
/** Creates an options object using a certificate config. Use this method when
|
||||
the certificates and keys of the SSL server will not change during the
|
||||
server's lifetime.
|
||||
- Takes ownership of the certificate_config parameter. */
|
||||
GRPCAPI grpc_ssl_server_credentials_options*
|
||||
grpc_ssl_server_credentials_create_options_using_config(
|
||||
grpc_ssl_client_certificate_request_type client_certificate_request,
|
||||
grpc_ssl_server_certificate_config* certificate_config);
|
||||
|
||||
/** Creates an options object using a certificate config fetcher. Use this
|
||||
method to reload the certificates and keys of the SSL server without
|
||||
interrupting the operation of the server. Initial certificate config will be
|
||||
fetched during server initialization.
|
||||
- user_data parameter, if not NULL, contains opaque data which will be passed
|
||||
to the fetcher (see definition of
|
||||
grpc_ssl_server_certificate_config_callback). */
|
||||
GRPCAPI grpc_ssl_server_credentials_options*
|
||||
grpc_ssl_server_credentials_create_options_using_config_fetcher(
|
||||
grpc_ssl_client_certificate_request_type client_certificate_request,
|
||||
grpc_ssl_server_certificate_config_callback cb, void* user_data);
|
||||
|
||||
/** Destroys a grpc_ssl_server_credentials_options object. */
|
||||
GRPCAPI void grpc_ssl_server_credentials_options_destroy(
|
||||
grpc_ssl_server_credentials_options* options);
|
||||
|
||||
/** Creates an SSL server_credentials object using the provided options struct.
|
||||
- Takes ownership of the options parameter. */
|
||||
GRPCAPI grpc_server_credentials*
|
||||
grpc_ssl_server_credentials_create_with_options(
|
||||
grpc_ssl_server_credentials_options* options);
|
||||
|
||||
/** --- Server-side secure ports. --- */
|
||||
|
||||
/** Add a HTTP2 over an encrypted link over tcp listener.
|
||||
Returns bound port number on success, 0 on failure.
|
||||
REQUIRES: server not started */
|
||||
GRPCAPI int grpc_server_add_secure_http2_port(grpc_server* server,
|
||||
const char* addr,
|
||||
grpc_server_credentials* creds);
|
||||
|
||||
/** --- Call specific credentials. --- */
|
||||
|
||||
/** Sets a credentials to a call. Can only be called on the client side before
|
||||
grpc_call_start_batch. */
|
||||
GRPCAPI grpc_call_error grpc_call_set_credentials(grpc_call* call,
|
||||
grpc_call_credentials* creds);
|
||||
|
||||
/** --- Auth Metadata Processing --- */
|
||||
|
||||
/** Callback function that is called when the metadata processing is done.
|
||||
- Consumed metadata will be removed from the set of metadata available on the
|
||||
call. consumed_md may be NULL if no metadata has been consumed.
|
||||
- Response metadata will be set on the response. response_md may be NULL.
|
||||
- status is GRPC_STATUS_OK for success or a specific status for an error.
|
||||
Common error status for auth metadata processing is either
|
||||
GRPC_STATUS_UNAUTHENTICATED in case of an authentication failure or
|
||||
GRPC_STATUS PERMISSION_DENIED in case of an authorization failure.
|
||||
- error_details gives details about the error. May be NULL. */
|
||||
typedef void (*grpc_process_auth_metadata_done_cb)(
|
||||
void* user_data, const grpc_metadata* consumed_md, size_t num_consumed_md,
|
||||
const grpc_metadata* response_md, size_t num_response_md,
|
||||
grpc_status_code status, const char* error_details);
|
||||
|
||||
/** Pluggable server-side metadata processor object. */
|
||||
typedef struct {
|
||||
/** The context object is read/write: it contains the properties of the
|
||||
channel peer and it is the job of the process function to augment it with
|
||||
properties derived from the passed-in metadata.
|
||||
The lifetime of these objects is guaranteed until cb is invoked. */
|
||||
void (*process)(void* state, grpc_auth_context* context,
|
||||
const grpc_metadata* md, size_t num_md,
|
||||
grpc_process_auth_metadata_done_cb cb, void* user_data);
|
||||
void (*destroy)(void* state);
|
||||
void* state;
|
||||
} grpc_auth_metadata_processor;
|
||||
|
||||
GRPCAPI void grpc_server_credentials_set_auth_metadata_processor(
|
||||
grpc_server_credentials* creds, grpc_auth_metadata_processor processor);
|
||||
|
||||
/** --- ALTS channel/server credentials --- **/
|
||||
|
||||
/**
|
||||
* Main interface for ALTS credentials options. The options will contain
|
||||
* information that will be passed from grpc to TSI layer such as RPC protocol
|
||||
* versions. ALTS client (channel) and server credentials will have their own
|
||||
* implementation of this interface. The APIs listed in this header are
|
||||
* thread-compatible. It is used for experimental purpose for now and subject
|
||||
* to change.
|
||||
*/
|
||||
typedef struct grpc_alts_credentials_options grpc_alts_credentials_options;
|
||||
|
||||
/**
|
||||
* This method creates a grpc ALTS credentials client options instance.
|
||||
* It is used for experimental purpose for now and subject to change.
|
||||
*/
|
||||
GRPCAPI grpc_alts_credentials_options*
|
||||
grpc_alts_credentials_client_options_create();
|
||||
|
||||
/**
|
||||
* This method creates a grpc ALTS credentials server options instance.
|
||||
* It is used for experimental purpose for now and subject to change.
|
||||
*/
|
||||
GRPCAPI grpc_alts_credentials_options*
|
||||
grpc_alts_credentials_server_options_create();
|
||||
|
||||
/**
|
||||
* This method adds a target service account to grpc client's ALTS credentials
|
||||
* options instance. It is used for experimental purpose for now and subject
|
||||
* to change.
|
||||
*
|
||||
* - options: grpc ALTS credentials options instance.
|
||||
* - service_account: service account of target endpoint.
|
||||
*/
|
||||
GRPCAPI void grpc_alts_credentials_client_options_add_target_service_account(
|
||||
grpc_alts_credentials_options* options, const char* service_account);
|
||||
|
||||
/**
|
||||
* This method destroys a grpc_alts_credentials_options instance by
|
||||
* de-allocating all of its occupied memory. It is used for experimental purpose
|
||||
* for now and subject to change.
|
||||
*
|
||||
* - options: a grpc_alts_credentials_options instance that needs to be
|
||||
* destroyed.
|
||||
*/
|
||||
GRPCAPI void grpc_alts_credentials_options_destroy(
|
||||
grpc_alts_credentials_options* options);
|
||||
|
||||
/**
|
||||
* This method creates an ALTS channel credential object. It is used for
|
||||
* experimental purpose for now and subject to change.
|
||||
*
|
||||
* - options: grpc ALTS credentials options instance for client.
|
||||
*
|
||||
* It returns the created ALTS channel credential object.
|
||||
*/
|
||||
GRPCAPI grpc_channel_credentials* grpc_alts_credentials_create(
|
||||
const grpc_alts_credentials_options* options);
|
||||
|
||||
/**
|
||||
* This method creates an ALTS server credential object. It is used for
|
||||
* experimental purpose for now and subject to change.
|
||||
*
|
||||
* - options: grpc ALTS credentials options instance for server.
|
||||
*
|
||||
* It returns the created ALTS server credential object.
|
||||
*/
|
||||
GRPCAPI grpc_server_credentials* grpc_alts_server_credentials_create(
|
||||
const grpc_alts_credentials_options* options);
|
||||
|
||||
/** --- Local channel/server credentials --- **/
|
||||
|
||||
/**
|
||||
* This method creates a local channel credential object. It is used for
|
||||
* experimental purpose for now and subject to change.
|
||||
*
|
||||
* - type: local connection type
|
||||
*
|
||||
* It returns the created local channel credential object.
|
||||
*/
|
||||
GRPCAPI grpc_channel_credentials* grpc_local_credentials_create(
|
||||
grpc_local_connect_type type);
|
||||
|
||||
/**
|
||||
* This method creates a local server credential object. It is used for
|
||||
* experimental purpose for now and subject to change.
|
||||
*
|
||||
* - type: local connection type
|
||||
*
|
||||
* It returns the created local server credential object.
|
||||
*/
|
||||
GRPCAPI grpc_server_credentials* grpc_local_server_credentials_create(
|
||||
grpc_local_connect_type type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_GRPC_SECURITY_H */
|
||||
113
node_modules/grpc/deps/grpc/include/grpc/grpc_security_constants.h
generated
vendored
Normal file
113
node_modules/grpc/deps/grpc/include/grpc/grpc_security_constants.h
generated
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_GRPC_SECURITY_CONSTANTS_H
|
||||
#define GRPC_GRPC_SECURITY_CONSTANTS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME "transport_security_type"
|
||||
#define GRPC_SSL_TRANSPORT_SECURITY_TYPE "ssl"
|
||||
|
||||
#define GRPC_X509_CN_PROPERTY_NAME "x509_common_name"
|
||||
#define GRPC_X509_SAN_PROPERTY_NAME "x509_subject_alternative_name"
|
||||
#define GRPC_X509_PEM_CERT_PROPERTY_NAME "x509_pem_cert"
|
||||
#define GRPC_SSL_SESSION_REUSED_PROPERTY "ssl_session_reused"
|
||||
|
||||
/** Environment variable that points to the default SSL roots file. This file
|
||||
must be a PEM encoded file with all the roots such as the one that can be
|
||||
downloaded from https://pki.google.com/roots.pem. */
|
||||
#define GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR \
|
||||
"GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"
|
||||
|
||||
/** Environment variable that points to the google default application
|
||||
credentials json key or refresh token. Used in the
|
||||
grpc_google_default_credentials_create function. */
|
||||
#define GRPC_GOOGLE_CREDENTIALS_ENV_VAR "GOOGLE_APPLICATION_CREDENTIALS"
|
||||
|
||||
/** Results for the SSL roots override callback. */
|
||||
typedef enum {
|
||||
GRPC_SSL_ROOTS_OVERRIDE_OK,
|
||||
GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY, /** Do not try fallback options. */
|
||||
GRPC_SSL_ROOTS_OVERRIDE_FAIL
|
||||
} grpc_ssl_roots_override_result;
|
||||
|
||||
/** Callback results for dynamically loading a SSL certificate config. */
|
||||
typedef enum {
|
||||
GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED,
|
||||
GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW,
|
||||
GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
|
||||
} grpc_ssl_certificate_config_reload_status;
|
||||
|
||||
typedef enum {
|
||||
/** Server does not request client certificate. A client can present a self
|
||||
signed or signed certificates if it wishes to do so and they would be
|
||||
accepted. */
|
||||
GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
|
||||
/** Server requests client certificate but does not enforce that the client
|
||||
presents a certificate.
|
||||
|
||||
If the client presents a certificate, the client authentication is left to
|
||||
the application based on the metadata like certificate etc.
|
||||
|
||||
The key cert pair should still be valid for the SSL connection to be
|
||||
established. */
|
||||
GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY,
|
||||
/** Server requests client certificate but does not enforce that the client
|
||||
presents a certificate.
|
||||
|
||||
If the client presents a certificate, the client authentication is done by
|
||||
grpc framework (The client needs to either present a signed cert or skip no
|
||||
certificate for a successful connection).
|
||||
|
||||
The key cert pair should still be valid for the SSL connection to be
|
||||
established. */
|
||||
GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY,
|
||||
/** Server requests client certificate but enforces that the client presents a
|
||||
certificate.
|
||||
|
||||
If the client presents a certificate, the client authentication is left to
|
||||
the application based on the metadata like certificate etc.
|
||||
|
||||
The key cert pair should still be valid for the SSL connection to be
|
||||
established. */
|
||||
GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY,
|
||||
/** Server requests client certificate but enforces that the client presents a
|
||||
certificate.
|
||||
|
||||
The cerificate presented by the client is verified by grpc framework (The
|
||||
client needs to present signed certs for a successful connection).
|
||||
|
||||
The key cert pair should still be valid for the SSL connection to be
|
||||
established. */
|
||||
GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
|
||||
} grpc_ssl_client_certificate_request_type;
|
||||
|
||||
/**
|
||||
* Type of local connection for which local channel/server credentials will be
|
||||
* applied. It only supports UDS for now.
|
||||
*/
|
||||
typedef enum { UDS = 0 } grpc_local_connect_type;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_GRPC_SECURITY_CONSTANTS_H */
|
||||
95
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm.h
generated
vendored
Normal file
95
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm.h
generated
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_ATM_H
|
||||
#define GRPC_IMPL_CODEGEN_ATM_H
|
||||
|
||||
/** This interface provides atomic operations and barriers.
|
||||
It is internal to gpr support code and should not be used outside it.
|
||||
|
||||
If an operation with acquire semantics precedes another memory access by the
|
||||
same thread, the operation will precede that other access as seen by other
|
||||
threads.
|
||||
|
||||
If an operation with release semantics follows another memory access by the
|
||||
same thread, the operation will follow that other access as seen by other
|
||||
threads.
|
||||
|
||||
Routines with "acq" or "full" in the name have acquire semantics. Routines
|
||||
with "rel" or "full" in the name have release semantics. Routines with
|
||||
"no_barrier" in the name have neither acquire not release semantics.
|
||||
|
||||
The routines may be implemented as macros.
|
||||
|
||||
// Atomic operations act on an intergral_type gpr_atm that is guaranteed to
|
||||
// be the same size as a pointer.
|
||||
typedef intptr_t gpr_atm;
|
||||
|
||||
// A memory barrier, providing both acquire and release semantics, but not
|
||||
// otherwise acting on memory.
|
||||
void gpr_atm_full_barrier(void);
|
||||
|
||||
// Atomically return *p, with acquire semantics.
|
||||
gpr_atm gpr_atm_acq_load(gpr_atm *p);
|
||||
gpr_atm gpr_atm_no_barrier_load(gpr_atm *p);
|
||||
|
||||
// Atomically set *p = value, with release semantics.
|
||||
void gpr_atm_rel_store(gpr_atm *p, gpr_atm value);
|
||||
|
||||
// Atomically add delta to *p, and return the old value of *p, with
|
||||
// the barriers specified.
|
||||
gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm *p, gpr_atm delta);
|
||||
gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta);
|
||||
|
||||
// Atomically, if *p==o, set *p=n and return non-zero otherwise return 0,
|
||||
// with the barriers specified if the operation succeeds.
|
||||
int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
||||
int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
||||
int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
||||
int gpr_atm_full_cas(gpr_atm *p, gpr_atm o, gpr_atm n);
|
||||
|
||||
// Atomically, set *p=n and return the old value of *p
|
||||
gpr_atm gpr_atm_full_xchg(gpr_atm *p, gpr_atm n);
|
||||
*/
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#if defined(GPR_GCC_ATOMIC)
|
||||
#include <grpc/impl/codegen/atm_gcc_atomic.h>
|
||||
#elif defined(GPR_GCC_SYNC)
|
||||
#include <grpc/impl/codegen/atm_gcc_sync.h>
|
||||
#elif defined(GPR_WINDOWS_ATOMIC)
|
||||
#include <grpc/impl/codegen/atm_windows.h>
|
||||
#else
|
||||
#error could not determine platform for atm
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Adds \a delta to \a *value, clamping the result to the range specified
|
||||
by \a min and \a max. Returns the new value. */
|
||||
gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm* value, gpr_atm delta,
|
||||
gpr_atm min, gpr_atm max);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_ATM_H */
|
||||
91
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h
generated
vendored
Normal file
91
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h
generated
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H
|
||||
#define GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H
|
||||
|
||||
/* atm_platform.h for gcc and gcc-like compilers with the
|
||||
__atomic_* interface. */
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef intptr_t gpr_atm;
|
||||
#define GPR_ATM_MAX INTPTR_MAX
|
||||
#define GPR_ATM_MIN INTPTR_MIN
|
||||
|
||||
#ifdef GPR_LOW_LEVEL_COUNTERS
|
||||
extern gpr_atm gpr_counter_atm_cas;
|
||||
extern gpr_atm gpr_counter_atm_add;
|
||||
#define GPR_ATM_INC_COUNTER(counter) \
|
||||
__atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED)
|
||||
#define GPR_ATM_INC_CAS_THEN(blah) \
|
||||
(GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah)
|
||||
#define GPR_ATM_INC_ADD_THEN(blah) \
|
||||
(GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah)
|
||||
#else
|
||||
#define GPR_ATM_INC_CAS_THEN(blah) blah
|
||||
#define GPR_ATM_INC_ADD_THEN(blah) blah
|
||||
#endif
|
||||
|
||||
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
|
||||
|
||||
#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE))
|
||||
#define gpr_atm_no_barrier_load(p) (__atomic_load_n((p), __ATOMIC_RELAXED))
|
||||
#define gpr_atm_rel_store(p, value) \
|
||||
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELEASE))
|
||||
#define gpr_atm_no_barrier_store(p, value) \
|
||||
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
|
||||
|
||||
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
||||
GPR_ATM_INC_ADD_THEN( \
|
||||
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
|
||||
#define gpr_atm_full_fetch_add(p, delta) \
|
||||
GPR_ATM_INC_ADD_THEN( \
|
||||
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
|
||||
|
||||
static __inline int gpr_atm_no_barrier_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
|
||||
p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED));
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_acq_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
|
||||
p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED));
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_rel_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
|
||||
p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED));
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_full_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
|
||||
p, &o, n, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED));
|
||||
}
|
||||
|
||||
#define gpr_atm_full_xchg(p, n) \
|
||||
GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */
|
||||
83
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_gcc_sync.h
generated
vendored
Normal file
83
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_gcc_sync.h
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H
|
||||
#define GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H
|
||||
|
||||
/* variant of atm_platform.h for gcc and gcc-like compiers with __sync_*
|
||||
interface */
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
typedef intptr_t gpr_atm;
|
||||
#define GPR_ATM_MAX INTPTR_MAX
|
||||
#define GPR_ATM_MIN INTPTR_MIN
|
||||
|
||||
#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory")
|
||||
|
||||
#if defined(__i386) || defined(__x86_64__)
|
||||
/* All loads are acquire loads and all stores are release stores. */
|
||||
#define GPR_ATM_LS_BARRIER_() GPR_ATM_COMPILE_BARRIER_()
|
||||
#else
|
||||
#define GPR_ATM_LS_BARRIER_() gpr_atm_full_barrier()
|
||||
#endif
|
||||
|
||||
#define gpr_atm_full_barrier() (__sync_synchronize())
|
||||
|
||||
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm* p) {
|
||||
gpr_atm value = *p;
|
||||
GPR_ATM_LS_BARRIER_();
|
||||
return value;
|
||||
}
|
||||
|
||||
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm* p) {
|
||||
gpr_atm value = *p;
|
||||
GPR_ATM_COMPILE_BARRIER_();
|
||||
return value;
|
||||
}
|
||||
|
||||
static __inline void gpr_atm_rel_store(gpr_atm* p, gpr_atm value) {
|
||||
GPR_ATM_LS_BARRIER_();
|
||||
*p = value;
|
||||
}
|
||||
|
||||
static __inline void gpr_atm_no_barrier_store(gpr_atm* p, gpr_atm value) {
|
||||
GPR_ATM_COMPILE_BARRIER_();
|
||||
*p = value;
|
||||
}
|
||||
|
||||
#undef GPR_ATM_LS_BARRIER_
|
||||
#undef GPR_ATM_COMPILE_BARRIER_
|
||||
|
||||
#define gpr_atm_no_barrier_fetch_add(p, delta) \
|
||||
gpr_atm_full_fetch_add((p), (delta))
|
||||
#define gpr_atm_full_fetch_add(p, delta) (__sync_fetch_and_add((p), (delta)))
|
||||
|
||||
#define gpr_atm_no_barrier_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
||||
#define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n)))
|
||||
#define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
||||
#define gpr_atm_full_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
|
||||
|
||||
static __inline gpr_atm gpr_atm_full_xchg(gpr_atm* p, gpr_atm n) {
|
||||
gpr_atm cur;
|
||||
do {
|
||||
cur = gpr_atm_acq_load(p);
|
||||
} while (!gpr_atm_rel_cas(p, cur, n));
|
||||
return cur;
|
||||
}
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_SYNC_H */
|
||||
126
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_windows.h
generated
vendored
Normal file
126
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/atm_windows.h
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_ATM_WINDOWS_H
|
||||
#define GRPC_IMPL_CODEGEN_ATM_WINDOWS_H
|
||||
|
||||
/** Win32 variant of atm_platform.h */
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
typedef intptr_t gpr_atm;
|
||||
#define GPR_ATM_MAX INTPTR_MAX
|
||||
#define GPR_ATM_MIN INTPTR_MIN
|
||||
|
||||
#define gpr_atm_full_barrier MemoryBarrier
|
||||
|
||||
static __inline gpr_atm gpr_atm_acq_load(const gpr_atm* p) {
|
||||
gpr_atm result = *p;
|
||||
gpr_atm_full_barrier();
|
||||
return result;
|
||||
}
|
||||
|
||||
static __inline gpr_atm gpr_atm_no_barrier_load(const gpr_atm* p) {
|
||||
/* TODO(dklempner): Can we implement something better here? */
|
||||
return gpr_atm_acq_load(p);
|
||||
}
|
||||
|
||||
static __inline void gpr_atm_rel_store(gpr_atm* p, gpr_atm value) {
|
||||
gpr_atm_full_barrier();
|
||||
*p = value;
|
||||
}
|
||||
|
||||
static __inline void gpr_atm_no_barrier_store(gpr_atm* p, gpr_atm value) {
|
||||
/* TODO(ctiller): Can we implement something better here? */
|
||||
gpr_atm_rel_store(p, value);
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_no_barrier_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
/** InterlockedCompareExchangePointerNoFence() not available on vista or
|
||||
windows7 */
|
||||
#ifdef GPR_ARCH_64
|
||||
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
||||
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
||||
#else
|
||||
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG*)p,
|
||||
(LONG)n, (LONG)o);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_acq_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
#ifdef GPR_ARCH_64
|
||||
return o == (gpr_atm)InterlockedCompareExchangeAcquire64(
|
||||
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
||||
#else
|
||||
return o == (gpr_atm)InterlockedCompareExchangeAcquire((volatile LONG*)p,
|
||||
(LONG)n, (LONG)o);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_rel_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
#ifdef GPR_ARCH_64
|
||||
return o == (gpr_atm)InterlockedCompareExchangeRelease64(
|
||||
(volatile LONGLONG*)p, (LONGLONG)n, (LONGLONG)o);
|
||||
#else
|
||||
return o == (gpr_atm)InterlockedCompareExchangeRelease((volatile LONG*)p,
|
||||
(LONG)n, (LONG)o);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline int gpr_atm_full_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
|
||||
#ifdef GPR_ARCH_64
|
||||
return o == (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG*)p,
|
||||
(LONGLONG)n, (LONGLONG)o);
|
||||
#else
|
||||
return o == (gpr_atm)InterlockedCompareExchange((volatile LONG*)p, (LONG)n,
|
||||
(LONG)o);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline gpr_atm gpr_atm_no_barrier_fetch_add(gpr_atm* p,
|
||||
gpr_atm delta) {
|
||||
/** Use the CAS operation to get pointer-sized fetch and add */
|
||||
gpr_atm old;
|
||||
do {
|
||||
old = *p;
|
||||
} while (!gpr_atm_no_barrier_cas(p, old, old + delta));
|
||||
return old;
|
||||
}
|
||||
|
||||
static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm* p, gpr_atm delta) {
|
||||
/** Use a CAS operation to get pointer-sized fetch and add */
|
||||
gpr_atm old;
|
||||
#ifdef GPR_ARCH_64
|
||||
do {
|
||||
old = *p;
|
||||
} while (old != (gpr_atm)InterlockedCompareExchange64((volatile LONGLONG*)p,
|
||||
(LONGLONG)old + delta,
|
||||
(LONGLONG)old));
|
||||
#else
|
||||
do {
|
||||
old = *p;
|
||||
} while (old != (gpr_atm)InterlockedCompareExchange(
|
||||
(volatile LONG*)p, (LONG)old + delta, (LONG)old));
|
||||
#endif
|
||||
return old;
|
||||
}
|
||||
|
||||
static __inline gpr_atm gpr_atm_full_xchg(gpr_atm* p, gpr_atm n) {
|
||||
return (gpr_atm)InterlockedExchangePointer((PVOID*)p, (PVOID)n);
|
||||
}
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_ATM_WINDOWS_H */
|
||||
88
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/byte_buffer.h
generated
vendored
Normal file
88
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/byte_buffer.h
generated
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_H
|
||||
#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Returns a RAW byte buffer instance over the given slices (up to \a nslices).
|
||||
*
|
||||
* Increases the reference count for all \a slices processed. The user is
|
||||
* responsible for invoking grpc_byte_buffer_destroy on the returned instance.*/
|
||||
GRPCAPI grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slices,
|
||||
size_t nslices);
|
||||
|
||||
/** Returns a *compressed* RAW byte buffer instance over the given slices (up to
|
||||
* \a nslices). The \a compression argument defines the compression algorithm
|
||||
* used to generate the data in \a slices.
|
||||
*
|
||||
* Increases the reference count for all \a slices processed. The user is
|
||||
* responsible for invoking grpc_byte_buffer_destroy on the returned instance.*/
|
||||
GRPCAPI grpc_byte_buffer* grpc_raw_compressed_byte_buffer_create(
|
||||
grpc_slice* slices, size_t nslices, grpc_compression_algorithm compression);
|
||||
|
||||
/** Copies input byte buffer \a bb.
|
||||
*
|
||||
* Increases the reference count of all the source slices. The user is
|
||||
* responsible for calling grpc_byte_buffer_destroy over the returned copy. */
|
||||
GRPCAPI grpc_byte_buffer* grpc_byte_buffer_copy(grpc_byte_buffer* bb);
|
||||
|
||||
/** Returns the size of the given byte buffer, in bytes. */
|
||||
GRPCAPI size_t grpc_byte_buffer_length(grpc_byte_buffer* bb);
|
||||
|
||||
/** Destroys \a byte_buffer deallocating all its memory. */
|
||||
GRPCAPI void grpc_byte_buffer_destroy(grpc_byte_buffer* byte_buffer);
|
||||
|
||||
/** Reader for byte buffers. Iterates over slices in the byte buffer */
|
||||
struct grpc_byte_buffer_reader;
|
||||
typedef struct grpc_byte_buffer_reader grpc_byte_buffer_reader;
|
||||
|
||||
/** Initialize \a reader to read over \a buffer.
|
||||
* Returns 1 upon success, 0 otherwise. */
|
||||
GRPCAPI int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
|
||||
grpc_byte_buffer* buffer);
|
||||
|
||||
/** Cleanup and destroy \a reader */
|
||||
GRPCAPI void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader* reader);
|
||||
|
||||
/** Updates \a slice with the next piece of data from from \a reader and returns
|
||||
* 1. Returns 0 at the end of the stream. Caller is responsible for calling
|
||||
* grpc_slice_unref on the result. */
|
||||
GRPCAPI int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
|
||||
grpc_slice* slice);
|
||||
|
||||
/** Merge all data from \a reader into single slice */
|
||||
GRPCAPI grpc_slice
|
||||
grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader);
|
||||
|
||||
/** Returns a RAW byte buffer instance from the output of \a reader. */
|
||||
GRPCAPI grpc_byte_buffer* grpc_raw_byte_buffer_from_reader(
|
||||
grpc_byte_buffer_reader* reader);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_H */
|
||||
42
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/byte_buffer_reader.h
generated
vendored
Normal file
42
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/byte_buffer_reader.h
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
|
||||
#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct grpc_byte_buffer;
|
||||
|
||||
struct grpc_byte_buffer_reader {
|
||||
struct grpc_byte_buffer* buffer_in;
|
||||
struct grpc_byte_buffer* buffer_out;
|
||||
/** Different current objects correspond to different types of byte buffers */
|
||||
union grpc_byte_buffer_reader_current {
|
||||
/** Index into a slice buffer's array of slices */
|
||||
unsigned index;
|
||||
} current;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H */
|
||||
107
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/compression_types.h
generated
vendored
Normal file
107
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/compression_types.h
generated
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H
|
||||
#define GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** To be used as initial metadata key for the request of a concrete compression
|
||||
* algorithm */
|
||||
#define GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY \
|
||||
"grpc-internal-encoding-request"
|
||||
|
||||
/** To be used in channel arguments.
|
||||
*
|
||||
* \addtogroup grpc_arg_keys
|
||||
* \{ */
|
||||
/** Default compression algorithm for the channel.
|
||||
* Its value is an int from the \a grpc_compression_algorithm enum. */
|
||||
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM \
|
||||
"grpc.default_compression_algorithm"
|
||||
/** Default compression level for the channel.
|
||||
* Its value is an int from the \a grpc_compression_level enum. */
|
||||
#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.default_compression_level"
|
||||
/** Compression algorithms supported by the channel.
|
||||
* Its value is a bitset (an int). Bits correspond to algorithms in \a
|
||||
* grpc_compression_algorithm. For example, its LSB corresponds to
|
||||
* GRPC_COMPRESS_NONE, the next bit to GRPC_COMPRESS_DEFLATE, etc.
|
||||
* Unset bits disable support for the algorithm. By default all algorithms are
|
||||
* supported. It's not possible to disable GRPC_COMPRESS_NONE (the attempt will
|
||||
* be ignored). */
|
||||
#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET \
|
||||
"grpc.compression_enabled_algorithms_bitset"
|
||||
/** \} */
|
||||
|
||||
/** The various compression algorithms supported by gRPC */
|
||||
typedef enum {
|
||||
GRPC_COMPRESS_NONE = 0,
|
||||
GRPC_COMPRESS_DEFLATE,
|
||||
GRPC_COMPRESS_GZIP,
|
||||
/* EXPERIMENTAL: Stream compression is currently experimental. */
|
||||
GRPC_COMPRESS_STREAM_GZIP,
|
||||
/* TODO(ctiller): snappy */
|
||||
GRPC_COMPRESS_ALGORITHMS_COUNT
|
||||
} grpc_compression_algorithm;
|
||||
|
||||
/** Compression levels allow a party with knowledge of its peer's accepted
|
||||
* encodings to request compression in an abstract way. The level-algorithm
|
||||
* mapping is performed internally and depends on the peer's supported
|
||||
* compression algorithms. */
|
||||
typedef enum {
|
||||
GRPC_COMPRESS_LEVEL_NONE = 0,
|
||||
GRPC_COMPRESS_LEVEL_LOW,
|
||||
GRPC_COMPRESS_LEVEL_MED,
|
||||
GRPC_COMPRESS_LEVEL_HIGH,
|
||||
GRPC_COMPRESS_LEVEL_COUNT
|
||||
} grpc_compression_level;
|
||||
|
||||
typedef struct grpc_compression_options {
|
||||
/** All algs are enabled by default. This option corresponds to the channel
|
||||
* argument key behind \a GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET
|
||||
*/
|
||||
uint32_t enabled_algorithms_bitset;
|
||||
|
||||
/** The default compression level. It'll be used in the absence of call
|
||||
* specific settings. This option corresponds to the channel
|
||||
* argument key behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL. If present,
|
||||
* takes precedence over \a default_algorithm.
|
||||
* TODO(dgq): currently only available for server channels. */
|
||||
struct grpc_compression_options_default_level {
|
||||
int is_set;
|
||||
grpc_compression_level level;
|
||||
} default_level;
|
||||
|
||||
/** The default message compression algorithm. It'll be used in the absence of
|
||||
* call specific settings. This option corresponds to the channel argument key
|
||||
* behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM. */
|
||||
struct grpc_compression_options_default_algorithm {
|
||||
int is_set;
|
||||
grpc_compression_algorithm algorithm;
|
||||
} default_algorithm;
|
||||
} grpc_compression_options;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H */
|
||||
44
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/connectivity_state.h
generated
vendored
Normal file
44
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/connectivity_state.h
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H
|
||||
#define GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Connectivity state of a channel. */
|
||||
typedef enum {
|
||||
/** channel is idle */
|
||||
GRPC_CHANNEL_IDLE,
|
||||
/** channel is connecting */
|
||||
GRPC_CHANNEL_CONNECTING,
|
||||
/** channel is ready for work */
|
||||
GRPC_CHANNEL_READY,
|
||||
/** channel has seen a failure but expects to recover */
|
||||
GRPC_CHANNEL_TRANSIENT_FAILURE,
|
||||
/** channel has seen a failure that it cannot recover from */
|
||||
GRPC_CHANNEL_SHUTDOWN
|
||||
} grpc_connectivity_state;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H */
|
||||
48
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/fork.h
generated
vendored
Normal file
48
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/fork.h
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_FORK_H
|
||||
#define GRPC_IMPL_CODEGEN_FORK_H
|
||||
|
||||
/**
|
||||
* gRPC applications should call this before calling fork(). There should be no
|
||||
* active gRPC function calls between calling grpc_prefork() and
|
||||
* grpc_postfork_parent()/grpc_postfork_child().
|
||||
*
|
||||
*
|
||||
* Typical use:
|
||||
* grpc_prefork();
|
||||
* int pid = fork();
|
||||
* if (pid) {
|
||||
* grpc_postfork_parent();
|
||||
* // Parent process..
|
||||
* } else {
|
||||
* grpc_postfork_child();
|
||||
* // Child process...
|
||||
* }
|
||||
*/
|
||||
|
||||
void grpc_prefork(void);
|
||||
|
||||
void grpc_postfork_parent(void);
|
||||
|
||||
void grpc_postfork_child(void);
|
||||
|
||||
void grpc_fork_handlers_auto_register(void);
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_FORK_H */
|
||||
69
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/gpr_slice.h
generated
vendored
Normal file
69
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/gpr_slice.h
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
#ifndef GRPC_IMPL_CODEGEN_GPR_SLICE_H
|
||||
#define GRPC_IMPL_CODEGEN_GPR_SLICE_H
|
||||
|
||||
/** WARNING: Please do not use this header. This was added as a temporary
|
||||
* measure to not break some of the external projects that depend on
|
||||
* gpr_slice_* functions. We are actively working on moving all the
|
||||
* gpr_slice_* references to grpc_slice_* and this file will be removed
|
||||
*/
|
||||
|
||||
/* TODO (sreek) - Allowed by default but will be very soon turned off */
|
||||
#define GRPC_ALLOW_GPR_SLICE_FUNCTIONS 1
|
||||
|
||||
#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS
|
||||
|
||||
#define gpr_slice_refcount grpc_slice_refcount
|
||||
#define gpr_slice grpc_slice
|
||||
#define gpr_slice_buffer grpc_slice_buffer
|
||||
|
||||
#define gpr_slice_ref grpc_slice_ref
|
||||
#define gpr_slice_unref grpc_slice_unref
|
||||
#define gpr_slice_new grpc_slice_new
|
||||
#define gpr_slice_new_with_user_data grpc_slice_new_with_user_data
|
||||
#define gpr_slice_new_with_len grpc_slice_new_with_len
|
||||
#define gpr_slice_malloc grpc_slice_malloc
|
||||
#define gpr_slice_from_copied_string grpc_slice_from_copied_string
|
||||
#define gpr_slice_from_copied_buffer grpc_slice_from_copied_buffer
|
||||
#define gpr_slice_from_static_string grpc_slice_from_static_string
|
||||
#define gpr_slice_sub grpc_slice_sub
|
||||
#define gpr_slice_sub_no_ref grpc_slice_sub_no_ref
|
||||
#define gpr_slice_split_tail grpc_slice_split_tail
|
||||
#define gpr_slice_split_head grpc_slice_split_head
|
||||
#define gpr_slice_cmp grpc_slice_cmp
|
||||
#define gpr_slice_str_cmp grpc_slice_str_cmp
|
||||
|
||||
#define gpr_slice_buffer grpc_slice_buffer
|
||||
#define gpr_slice_buffer_init grpc_slice_buffer_init
|
||||
#define gpr_slice_buffer_destroy grpc_slice_buffer_destroy
|
||||
#define gpr_slice_buffer_add grpc_slice_buffer_add
|
||||
#define gpr_slice_buffer_add_indexed grpc_slice_buffer_add_indexed
|
||||
#define gpr_slice_buffer_addn grpc_slice_buffer_addn
|
||||
#define gpr_slice_buffer_tiny_add grpc_slice_buffer_tiny_add
|
||||
#define gpr_slice_buffer_pop grpc_slice_buffer_pop
|
||||
#define gpr_slice_buffer_reset_and_unref grpc_slice_buffer_reset_and_unref
|
||||
#define gpr_slice_buffer_swap grpc_slice_buffer_swap
|
||||
#define gpr_slice_buffer_move_into grpc_slice_buffer_move_into
|
||||
#define gpr_slice_buffer_trim_end grpc_slice_buffer_trim_end
|
||||
#define gpr_slice_buffer_move_first grpc_slice_buffer_move_first
|
||||
#define gpr_slice_buffer_take_first grpc_slice_buffer_take_first
|
||||
|
||||
#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_GPR_SLICE_H */
|
||||
59
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/gpr_types.h
generated
vendored
Normal file
59
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/gpr_types.h
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_GPR_TYPES_H
|
||||
#define GRPC_IMPL_CODEGEN_GPR_TYPES_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** The clocks we support. */
|
||||
typedef enum {
|
||||
/** Monotonic clock. Epoch undefined. Always moves forwards. */
|
||||
GPR_CLOCK_MONOTONIC = 0,
|
||||
/** Realtime clock. May jump forwards or backwards. Settable by
|
||||
the system administrator. Has its epoch at 0:00:00 UTC 1 Jan 1970. */
|
||||
GPR_CLOCK_REALTIME,
|
||||
/** CPU cycle time obtained by rdtsc instruction on x86 platforms. Epoch
|
||||
undefined. Degrades to GPR_CLOCK_REALTIME on other platforms. */
|
||||
GPR_CLOCK_PRECISE,
|
||||
/** Unmeasurable clock type: no base, created by taking the difference
|
||||
between two times */
|
||||
GPR_TIMESPAN
|
||||
} gpr_clock_type;
|
||||
|
||||
/** Analogous to struct timespec. On some machines, absolute times may be in
|
||||
* local time. */
|
||||
typedef struct gpr_timespec {
|
||||
int64_t tv_sec;
|
||||
int32_t tv_nsec;
|
||||
/** Against which clock was this time measured? (or GPR_TIMESPAN if
|
||||
this is a relative time meaure) */
|
||||
gpr_clock_type clock_type;
|
||||
} gpr_timespec;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_GPR_TYPES_H */
|
||||
690
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/grpc_types.h
generated
vendored
Normal file
690
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/grpc_types.h
generated
vendored
Normal file
@@ -0,0 +1,690 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_GRPC_TYPES_H
|
||||
#define GRPC_IMPL_CODEGEN_GRPC_TYPES_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
#include <grpc/impl/codegen/gpr_types.h>
|
||||
#include <grpc/impl/codegen/slice.h>
|
||||
#include <grpc/impl/codegen/status.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
GRPC_BB_RAW
|
||||
/** Future types may include GRPC_BB_PROTOBUF, etc. */
|
||||
} grpc_byte_buffer_type;
|
||||
|
||||
typedef struct grpc_byte_buffer {
|
||||
void* reserved;
|
||||
grpc_byte_buffer_type type;
|
||||
union grpc_byte_buffer_data {
|
||||
struct /* internal */ {
|
||||
void* reserved[8];
|
||||
} reserved;
|
||||
struct grpc_compressed_buffer {
|
||||
grpc_compression_algorithm compression;
|
||||
grpc_slice_buffer slice_buffer;
|
||||
} raw;
|
||||
} data;
|
||||
} grpc_byte_buffer;
|
||||
|
||||
/** Completion Queues enable notification of the completion of
|
||||
* asynchronous actions. */
|
||||
typedef struct grpc_completion_queue grpc_completion_queue;
|
||||
|
||||
/** An alarm associated with a completion queue. */
|
||||
typedef struct grpc_alarm grpc_alarm;
|
||||
|
||||
/** The Channel interface allows creation of Call objects. */
|
||||
typedef struct grpc_channel grpc_channel;
|
||||
|
||||
/** A server listens to some port and responds to request calls */
|
||||
typedef struct grpc_server grpc_server;
|
||||
|
||||
/** A Call represents an RPC. When created, it is in a configuration state
|
||||
allowing properties to be set until it is invoked. After invoke, the Call
|
||||
can have messages written to it and read from it. */
|
||||
typedef struct grpc_call grpc_call;
|
||||
|
||||
/** The Socket Mutator interface allows changes on socket options */
|
||||
typedef struct grpc_socket_mutator grpc_socket_mutator;
|
||||
|
||||
/** The Socket Factory interface creates and binds sockets */
|
||||
typedef struct grpc_socket_factory grpc_socket_factory;
|
||||
|
||||
/** Type specifier for grpc_arg */
|
||||
typedef enum {
|
||||
GRPC_ARG_STRING,
|
||||
GRPC_ARG_INTEGER,
|
||||
GRPC_ARG_POINTER
|
||||
} grpc_arg_type;
|
||||
|
||||
typedef struct grpc_arg_pointer_vtable {
|
||||
void* (*copy)(void* p);
|
||||
void (*destroy)(void* p);
|
||||
int (*cmp)(void* p, void* q);
|
||||
} grpc_arg_pointer_vtable;
|
||||
|
||||
/** A single argument... each argument has a key and a value
|
||||
|
||||
A note on naming keys:
|
||||
Keys are namespaced into groups, usually grouped by library, and are
|
||||
keys for module XYZ are named XYZ.key1, XYZ.key2, etc. Module names must
|
||||
be restricted to the regex [A-Za-z][_A-Za-z0-9]{,15}.
|
||||
Key names must be restricted to the regex [A-Za-z][_A-Za-z0-9]{,47}.
|
||||
|
||||
GRPC core library keys are prefixed by grpc.
|
||||
|
||||
Library authors are strongly encouraged to \#define symbolic constants for
|
||||
their keys so that it's possible to change them in the future. */
|
||||
typedef struct {
|
||||
grpc_arg_type type;
|
||||
char* key;
|
||||
union grpc_arg_value {
|
||||
char* string;
|
||||
int integer;
|
||||
struct grpc_arg_pointer {
|
||||
void* p;
|
||||
const grpc_arg_pointer_vtable* vtable;
|
||||
} pointer;
|
||||
} value;
|
||||
} grpc_arg;
|
||||
|
||||
/** An array of arguments that can be passed around.
|
||||
|
||||
Used to set optional channel-level configuration.
|
||||
These configuration options are modelled as key-value pairs as defined
|
||||
by grpc_arg; keys are strings to allow easy backwards-compatible extension
|
||||
by arbitrary parties. All evaluation is performed at channel creation
|
||||
time (i.e. the keys and values in this structure need only live through the
|
||||
creation invocation).
|
||||
|
||||
However, if one of the args has grpc_arg_type==GRPC_ARG_POINTER, then the
|
||||
grpc_arg_pointer_vtable must live until the channel args are done being
|
||||
used by core (i.e. when the object for use with which they were passed
|
||||
is destroyed).
|
||||
|
||||
See the description of the \ref grpc_arg_keys "available args" for more
|
||||
details. */
|
||||
typedef struct {
|
||||
size_t num_args;
|
||||
grpc_arg* args;
|
||||
} grpc_channel_args;
|
||||
|
||||
/** \defgroup grpc_arg_keys
|
||||
* Channel argument keys.
|
||||
* \{
|
||||
*/
|
||||
/** If non-zero, enable census for tracing and stats collection. */
|
||||
#define GRPC_ARG_ENABLE_CENSUS "grpc.census"
|
||||
/** If non-zero, enable load reporting. */
|
||||
#define GRPC_ARG_ENABLE_LOAD_REPORTING "grpc.loadreporting"
|
||||
/** Request that optional features default to off (regardless of what they
|
||||
usually default to) - to enable tight control over what gets enabled */
|
||||
#define GRPC_ARG_MINIMAL_STACK "grpc.minimal_stack"
|
||||
/** Maximum number of concurrent incoming streams to allow on a http2
|
||||
connection. Int valued. */
|
||||
#define GRPC_ARG_MAX_CONCURRENT_STREAMS "grpc.max_concurrent_streams"
|
||||
/** Maximum message length that the channel can receive. Int valued, bytes.
|
||||
-1 means unlimited. */
|
||||
#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH "grpc.max_receive_message_length"
|
||||
/** \deprecated For backward compatibility.
|
||||
* Use GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH instead. */
|
||||
#define GRPC_ARG_MAX_MESSAGE_LENGTH GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
|
||||
/** Maximum message length that the channel can send. Int valued, bytes.
|
||||
-1 means unlimited. */
|
||||
#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH "grpc.max_send_message_length"
|
||||
/** Maximum time that a channel may have no outstanding rpcs. Int valued,
|
||||
milliseconds. INT_MAX means unlimited. */
|
||||
#define GRPC_ARG_MAX_CONNECTION_IDLE_MS "grpc.max_connection_idle_ms"
|
||||
/** Maximum time that a channel may exist. Int valued, milliseconds.
|
||||
* INT_MAX means unlimited. */
|
||||
#define GRPC_ARG_MAX_CONNECTION_AGE_MS "grpc.max_connection_age_ms"
|
||||
/** Grace period after the chennel reaches its max age. Int valued,
|
||||
milliseconds. INT_MAX means unlimited. */
|
||||
#define GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS "grpc.max_connection_age_grace_ms"
|
||||
/** Enable/disable support for per-message compression. Defaults to 1, unless
|
||||
GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0. */
|
||||
#define GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION "grpc.per_message_compression"
|
||||
/** Enable/disable support for deadline checking. Defaults to 1, unless
|
||||
GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0 */
|
||||
#define GRPC_ARG_ENABLE_DEADLINE_CHECKS "grpc.enable_deadline_checking"
|
||||
/** Initial stream ID for http2 transports. Int valued. */
|
||||
#define GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER \
|
||||
"grpc.http2.initial_sequence_number"
|
||||
/** Amount to read ahead on individual streams. Defaults to 64kb, larger
|
||||
values can help throughput on high-latency connections.
|
||||
NOTE: at some point we'd like to auto-tune this, and this parameter
|
||||
will become a no-op. Int valued, bytes. */
|
||||
#define GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES "grpc.http2.lookahead_bytes"
|
||||
/** How much memory to use for hpack decoding. Int valued, bytes. */
|
||||
#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER \
|
||||
"grpc.http2.hpack_table_size.decoder"
|
||||
/** How much memory to use for hpack encoding. Int valued, bytes. */
|
||||
#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER \
|
||||
"grpc.http2.hpack_table_size.encoder"
|
||||
/** How big a frame are we willing to receive via HTTP2.
|
||||
Min 16384, max 16777215. Larger values give lower CPU usage for large
|
||||
messages, but more head of line blocking for small messages. */
|
||||
#define GRPC_ARG_HTTP2_MAX_FRAME_SIZE "grpc.http2.max_frame_size"
|
||||
/** Should BDP probing be performed? */
|
||||
#define GRPC_ARG_HTTP2_BDP_PROBE "grpc.http2.bdp_probe"
|
||||
/** Minimum time between sending successive ping frames without receiving any
|
||||
data frame, Int valued, milliseconds. */
|
||||
#define GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS \
|
||||
"grpc.http2.min_time_between_pings_ms"
|
||||
/** Minimum allowed time between a server receiving successive ping frames
|
||||
without sending any data frame. Int valued, milliseconds */
|
||||
#define GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS \
|
||||
"grpc.http2.min_ping_interval_without_data_ms"
|
||||
/** Channel arg to override the http2 :scheme header */
|
||||
#define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme"
|
||||
/** How many pings can we send before needing to send a data frame or header
|
||||
frame? (0 indicates that an infinite number of pings can be sent without
|
||||
sending a data frame or header frame) */
|
||||
#define GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA \
|
||||
"grpc.http2.max_pings_without_data"
|
||||
/** How many misbehaving pings the server can bear before sending goaway and
|
||||
closing the transport? (0 indicates that the server can bear an infinite
|
||||
number of misbehaving pings) */
|
||||
#define GRPC_ARG_HTTP2_MAX_PING_STRIKES "grpc.http2.max_ping_strikes"
|
||||
/** How much data are we willing to queue up per stream if
|
||||
GRPC_WRITE_BUFFER_HINT is set? This is an upper bound */
|
||||
#define GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE "grpc.http2.write_buffer_size"
|
||||
/** Should we allow receipt of true-binary data on http2 connections?
|
||||
Defaults to on (1) */
|
||||
#define GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY "grpc.http2.true_binary"
|
||||
/** After a duration of this time the client/server pings its peer to see if the
|
||||
transport is still alive. Int valued, milliseconds. */
|
||||
#define GRPC_ARG_KEEPALIVE_TIME_MS "grpc.keepalive_time_ms"
|
||||
/** After waiting for a duration of this time, if the keepalive ping sender does
|
||||
not receive the ping ack, it will close the transport. Int valued,
|
||||
milliseconds. */
|
||||
#define GRPC_ARG_KEEPALIVE_TIMEOUT_MS "grpc.keepalive_timeout_ms"
|
||||
/** Is it permissible to send keepalive pings without any outstanding streams.
|
||||
Int valued, 0(false)/1(true). */
|
||||
#define GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS \
|
||||
"grpc.keepalive_permit_without_calls"
|
||||
/** Default authority to pass if none specified on call construction. A string.
|
||||
* */
|
||||
#define GRPC_ARG_DEFAULT_AUTHORITY "grpc.default_authority"
|
||||
/** Primary user agent: goes at the start of the user-agent metadata
|
||||
sent on each request. A string. */
|
||||
#define GRPC_ARG_PRIMARY_USER_AGENT_STRING "grpc.primary_user_agent"
|
||||
/** Secondary user agent: goes at the end of the user-agent metadata
|
||||
sent on each request. A string. */
|
||||
#define GRPC_ARG_SECONDARY_USER_AGENT_STRING "grpc.secondary_user_agent"
|
||||
/** The minimum time between subsequent connection attempts, in ms */
|
||||
#define GRPC_ARG_MIN_RECONNECT_BACKOFF_MS "grpc.min_reconnect_backoff_ms"
|
||||
/** The maximum time between subsequent connection attempts, in ms */
|
||||
#define GRPC_ARG_MAX_RECONNECT_BACKOFF_MS "grpc.max_reconnect_backoff_ms"
|
||||
/** The time between the first and second connection attempts, in ms */
|
||||
#define GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS \
|
||||
"grpc.initial_reconnect_backoff_ms"
|
||||
/** Minimum amount of time between DNS resolutions, in ms */
|
||||
#define GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS \
|
||||
"grpc.dns_min_time_between_resolutions_ms"
|
||||
/** The timeout used on servers for finishing handshaking on an incoming
|
||||
connection. Defaults to 120 seconds. */
|
||||
#define GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS "grpc.server_handshake_timeout_ms"
|
||||
/** This *should* be used for testing only.
|
||||
The caller of the secure_channel_create functions may override the target
|
||||
name used for SSL host name checking using this channel argument which is of
|
||||
type \a GRPC_ARG_STRING. If this argument is not specified, the name used
|
||||
for SSL host name checking will be the target parameter (assuming that the
|
||||
secure channel is an SSL channel). If this parameter is specified and the
|
||||
underlying is not an SSL channel, it will just be ignored. */
|
||||
#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG "grpc.ssl_target_name_override"
|
||||
/** If non-zero, a pointer to a session cache (a pointer of type
|
||||
grpc_ssl_session_cache*). (use grpc_ssl_session_cache_arg_vtable() to fetch
|
||||
an appropriate pointer arg vtable) */
|
||||
#define GRPC_SSL_SESSION_CACHE_ARG "grpc.ssl_session_cache"
|
||||
/** Maximum metadata size, in bytes. Note this limit applies to the max sum of
|
||||
all metadata key-value entries in a batch of headers. */
|
||||
#define GRPC_ARG_MAX_METADATA_SIZE "grpc.max_metadata_size"
|
||||
/** If non-zero, allow the use of SO_REUSEPORT if it's available (default 1) */
|
||||
#define GRPC_ARG_ALLOW_REUSEPORT "grpc.so_reuseport"
|
||||
/** If non-zero, a pointer to a buffer pool (a pointer of type
|
||||
* grpc_resource_quota*). (use grpc_resource_quota_arg_vtable() to fetch an
|
||||
* appropriate pointer arg vtable) */
|
||||
#define GRPC_ARG_RESOURCE_QUOTA "grpc.resource_quota"
|
||||
/** If non-zero, expand wildcard addresses to a list of local addresses. */
|
||||
#define GRPC_ARG_EXPAND_WILDCARD_ADDRS "grpc.expand_wildcard_addrs"
|
||||
/** Service config data in JSON form.
|
||||
This value will be ignored if the name resolver returns a service config. */
|
||||
#define GRPC_ARG_SERVICE_CONFIG "grpc.service_config"
|
||||
/** Disable looking up the service config via the name resolver. */
|
||||
#define GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION \
|
||||
"grpc.service_config_disable_resolution"
|
||||
/** LB policy name. */
|
||||
#define GRPC_ARG_LB_POLICY_NAME "grpc.lb_policy_name"
|
||||
/** The grpc_socket_mutator instance that set the socket options. A pointer. */
|
||||
#define GRPC_ARG_SOCKET_MUTATOR "grpc.socket_mutator"
|
||||
/** The grpc_socket_factory instance to create and bind sockets. A pointer. */
|
||||
#define GRPC_ARG_SOCKET_FACTORY "grpc.socket_factory"
|
||||
/** The maximum number of trace events to keep in the tracer for each channel or
|
||||
* subchannel. The default is 10. If set to 0, channel tracing is disabled. */
|
||||
#define GRPC_ARG_MAX_CHANNEL_TRACE_EVENTS_PER_NODE \
|
||||
"grpc.max_channel_trace_events_per_node"
|
||||
/** If non-zero, gRPC library will track stats and information at at per channel
|
||||
* level. Disabling channelz naturally disables channel tracing. The default
|
||||
* is for channelz to be disabled. */
|
||||
#define GRPC_ARG_ENABLE_CHANNELZ "grpc.enable_channelz"
|
||||
/** If non-zero, Cronet transport will coalesce packets to fewer frames
|
||||
* when possible. */
|
||||
#define GRPC_ARG_USE_CRONET_PACKET_COALESCING \
|
||||
"grpc.use_cronet_packet_coalescing"
|
||||
/** Channel arg (integer) setting how large a slice to try and read from the
|
||||
wire each time recvmsg (or equivalent) is called **/
|
||||
#define GRPC_ARG_TCP_READ_CHUNK_SIZE "grpc.experimental.tcp_read_chunk_size"
|
||||
/** Note this is not a "channel arg" key. This is the default slice size to use
|
||||
* when trying to read from the wire if the GRPC_ARG_TCP_READ_CHUNK_SIZE
|
||||
* channel arg is unspecified. */
|
||||
#define GRPC_TCP_DEFAULT_READ_SLICE_SIZE 8192
|
||||
#define GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE \
|
||||
"grpc.experimental.tcp_min_read_chunk_size"
|
||||
#define GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE \
|
||||
"grpc.experimental.tcp_max_read_chunk_size"
|
||||
/* Timeout in milliseconds to use for calls to the grpclb load balancer.
|
||||
If 0 or unset, the balancer calls will have no deadline. */
|
||||
#define GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS "grpc.grpclb_call_timeout_ms"
|
||||
/* Timeout in milliseconds to wait for the serverlist from the grpclb load
|
||||
balancer before using fallback backend addresses from the resolver.
|
||||
If 0, fallback will never be used. Default value is 10000. */
|
||||
#define GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS "grpc.grpclb_fallback_timeout_ms"
|
||||
/** If non-zero, grpc server's cronet compression workaround will be enabled */
|
||||
#define GRPC_ARG_WORKAROUND_CRONET_COMPRESSION \
|
||||
"grpc.workaround.cronet_compression"
|
||||
/** String defining the optimization target for a channel.
|
||||
Can be: "latency" - attempt to minimize latency at the cost of throughput
|
||||
"blend" - try to balance latency and throughput
|
||||
"throughput" - attempt to maximize throughput at the expense of
|
||||
latency
|
||||
Defaults to "blend". In the current implementation "blend" is equivalent to
|
||||
"latency". */
|
||||
#define GRPC_ARG_OPTIMIZATION_TARGET "grpc.optimization_target"
|
||||
/** If set to zero, disables retry behavior. Otherwise, transparent retries
|
||||
are enabled for all RPCs, and configurable retries are enabled when they
|
||||
are configured via the service config. For details, see:
|
||||
https://github.com/grpc/proposal/blob/master/A6-client-retries.md
|
||||
*/
|
||||
#define GRPC_ARG_ENABLE_RETRIES "grpc.enable_retries"
|
||||
/** Per-RPC retry buffer size, in bytes. Default is 256 KiB. */
|
||||
#define GRPC_ARG_PER_RPC_RETRY_BUFFER_SIZE "grpc.per_rpc_retry_buffer_size"
|
||||
/** Channel arg that carries the bridged objective c object for custom metrics
|
||||
* logging filter. */
|
||||
#define GRPC_ARG_MOBILE_LOG_CONTEXT "grpc.mobile_log_context"
|
||||
/** If non-zero, client authority filter is disabled for the channel */
|
||||
#define GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER \
|
||||
"grpc.disable_client_authority_filter"
|
||||
/** If set to zero, disables use of http proxies. Enabled by default. */
|
||||
#define GRPC_ARG_ENABLE_HTTP_PROXY "grpc.enable_http_proxy"
|
||||
/** \} */
|
||||
|
||||
/** Result of a grpc call. If the caller satisfies the prerequisites of a
|
||||
particular operation, the grpc_call_error returned will be GRPC_CALL_OK.
|
||||
Receiving any other value listed here is an indication of a bug in the
|
||||
caller. */
|
||||
typedef enum grpc_call_error {
|
||||
/** everything went ok */
|
||||
GRPC_CALL_OK = 0,
|
||||
/** something failed, we don't know what */
|
||||
GRPC_CALL_ERROR,
|
||||
/** this method is not available on the server */
|
||||
GRPC_CALL_ERROR_NOT_ON_SERVER,
|
||||
/** this method is not available on the client */
|
||||
GRPC_CALL_ERROR_NOT_ON_CLIENT,
|
||||
/** this method must be called before server_accept */
|
||||
GRPC_CALL_ERROR_ALREADY_ACCEPTED,
|
||||
/** this method must be called before invoke */
|
||||
GRPC_CALL_ERROR_ALREADY_INVOKED,
|
||||
/** this method must be called after invoke */
|
||||
GRPC_CALL_ERROR_NOT_INVOKED,
|
||||
/** this call is already finished
|
||||
(writes_done or write_status has already been called) */
|
||||
GRPC_CALL_ERROR_ALREADY_FINISHED,
|
||||
/** there is already an outstanding read/write operation on the call */
|
||||
GRPC_CALL_ERROR_TOO_MANY_OPERATIONS,
|
||||
/** the flags value was illegal for this call */
|
||||
GRPC_CALL_ERROR_INVALID_FLAGS,
|
||||
/** invalid metadata was passed to this call */
|
||||
GRPC_CALL_ERROR_INVALID_METADATA,
|
||||
/** invalid message was passed to this call */
|
||||
GRPC_CALL_ERROR_INVALID_MESSAGE,
|
||||
/** completion queue for notification has not been registered
|
||||
* with the server */
|
||||
GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE,
|
||||
/** this batch of operations leads to more operations than allowed */
|
||||
GRPC_CALL_ERROR_BATCH_TOO_BIG,
|
||||
/** payload type requested is not the type registered */
|
||||
GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH,
|
||||
/** completion queue has been shutdown */
|
||||
GRPC_CALL_ERROR_COMPLETION_QUEUE_SHUTDOWN
|
||||
} grpc_call_error;
|
||||
|
||||
/** Default send/receive message size limits in bytes. -1 for unlimited. */
|
||||
/** TODO(roth) Make this match the default receive limit after next release */
|
||||
#define GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH -1
|
||||
#define GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH (4 * 1024 * 1024)
|
||||
|
||||
/** Write Flags: */
|
||||
/** Hint that the write may be buffered and need not go out on the wire
|
||||
immediately. GRPC is free to buffer the message until the next non-buffered
|
||||
write, or until writes_done, but it need not buffer completely or at all. */
|
||||
#define GRPC_WRITE_BUFFER_HINT (0x00000001u)
|
||||
/** Force compression to be disabled for a particular write
|
||||
(start_write/add_metadata). Illegal on invoke/accept. */
|
||||
#define GRPC_WRITE_NO_COMPRESS (0x00000002u)
|
||||
/** Force this message to be written to the socket before completing it */
|
||||
#define GRPC_WRITE_THROUGH (0x00000004u)
|
||||
/** Mask of all valid flags. */
|
||||
#define GRPC_WRITE_USED_MASK \
|
||||
(GRPC_WRITE_BUFFER_HINT | GRPC_WRITE_NO_COMPRESS | GRPC_WRITE_THROUGH)
|
||||
|
||||
/** Initial metadata flags */
|
||||
/** Signal that the call is idempotent */
|
||||
#define GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST (0x00000010u)
|
||||
/** Signal that the call should not return UNAVAILABLE before it has started */
|
||||
#define GRPC_INITIAL_METADATA_WAIT_FOR_READY (0x00000020u)
|
||||
/** Signal that the call is cacheable. GRPC is free to use GET verb */
|
||||
#define GRPC_INITIAL_METADATA_CACHEABLE_REQUEST (0x00000040u)
|
||||
/** Signal that GRPC_INITIAL_METADATA_WAIT_FOR_READY was explicitly set
|
||||
by the calling application. */
|
||||
#define GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET (0x00000080u)
|
||||
/** Signal that the initial metadata should be corked */
|
||||
#define GRPC_INITIAL_METADATA_CORKED (0x00000100u)
|
||||
|
||||
/** Mask of all valid flags */
|
||||
#define GRPC_INITIAL_METADATA_USED_MASK \
|
||||
(GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST | \
|
||||
GRPC_INITIAL_METADATA_WAIT_FOR_READY | \
|
||||
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST | \
|
||||
GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET | \
|
||||
GRPC_INITIAL_METADATA_CORKED | GRPC_WRITE_THROUGH)
|
||||
|
||||
/** A single metadata element */
|
||||
typedef struct grpc_metadata {
|
||||
/** the key, value values are expected to line up with grpc_mdelem: if
|
||||
changing them, update metadata.h at the same time. */
|
||||
grpc_slice key;
|
||||
grpc_slice value;
|
||||
|
||||
uint32_t flags;
|
||||
|
||||
/** The following fields are reserved for grpc internal use.
|
||||
There is no need to initialize them, and they will be set to garbage
|
||||
during calls to grpc. */
|
||||
struct /* internal */ {
|
||||
void* obfuscated[4];
|
||||
} internal_data;
|
||||
} grpc_metadata;
|
||||
|
||||
/** The type of completion (for grpc_event) */
|
||||
typedef enum grpc_completion_type {
|
||||
/** Shutting down */
|
||||
GRPC_QUEUE_SHUTDOWN,
|
||||
/** No event before timeout */
|
||||
GRPC_QUEUE_TIMEOUT,
|
||||
/** Operation completion */
|
||||
GRPC_OP_COMPLETE
|
||||
} grpc_completion_type;
|
||||
|
||||
/** The result of an operation.
|
||||
|
||||
Returned by a completion queue when the operation started with tag. */
|
||||
typedef struct grpc_event {
|
||||
/** The type of the completion. */
|
||||
grpc_completion_type type;
|
||||
/** If the grpc_completion_type is GRPC_OP_COMPLETE, this field indicates
|
||||
whether the operation was successful or not; 0 in case of failure and
|
||||
non-zero in case of success.
|
||||
If grpc_completion_type is GRPC_QUEUE_SHUTDOWN or GRPC_QUEUE_TIMEOUT, this
|
||||
field is guaranteed to be 0 */
|
||||
int success;
|
||||
/** The tag passed to grpc_call_start_batch etc to start this operation.
|
||||
Only GRPC_OP_COMPLETE has a tag. */
|
||||
void* tag;
|
||||
} grpc_event;
|
||||
|
||||
typedef struct {
|
||||
size_t count;
|
||||
size_t capacity;
|
||||
grpc_metadata* metadata;
|
||||
} grpc_metadata_array;
|
||||
|
||||
typedef struct {
|
||||
grpc_slice method;
|
||||
grpc_slice host;
|
||||
gpr_timespec deadline;
|
||||
uint32_t flags;
|
||||
void* reserved;
|
||||
} grpc_call_details;
|
||||
|
||||
typedef enum {
|
||||
/** Send initial metadata: one and only one instance MUST be sent for each
|
||||
call, unless the call was cancelled - in which case this can be skipped.
|
||||
This op completes after all bytes of metadata have been accepted by
|
||||
outgoing flow control. */
|
||||
GRPC_OP_SEND_INITIAL_METADATA = 0,
|
||||
/** Send a message: 0 or more of these operations can occur for each call.
|
||||
This op completes after all bytes for the message have been accepted by
|
||||
outgoing flow control. */
|
||||
GRPC_OP_SEND_MESSAGE,
|
||||
/** Send a close from the client: one and only one instance MUST be sent from
|
||||
the client, unless the call was cancelled - in which case this can be
|
||||
skipped. This op completes after all bytes for the call
|
||||
(including the close) have passed outgoing flow control. */
|
||||
GRPC_OP_SEND_CLOSE_FROM_CLIENT,
|
||||
/** Send status from the server: one and only one instance MUST be sent from
|
||||
the server unless the call was cancelled - in which case this can be
|
||||
skipped. This op completes after all bytes for the call
|
||||
(including the status) have passed outgoing flow control. */
|
||||
GRPC_OP_SEND_STATUS_FROM_SERVER,
|
||||
/** Receive initial metadata: one and only one MUST be made on the client,
|
||||
must not be made on the server.
|
||||
This op completes after all initial metadata has been read from the
|
||||
peer. */
|
||||
GRPC_OP_RECV_INITIAL_METADATA,
|
||||
/** Receive a message: 0 or more of these operations can occur for each call.
|
||||
This op completes after all bytes of the received message have been
|
||||
read, or after a half-close has been received on this call. */
|
||||
GRPC_OP_RECV_MESSAGE,
|
||||
/** Receive status on the client: one and only one must be made on the client.
|
||||
This operation always succeeds, meaning ops paired with this operation
|
||||
will also appear to succeed, even though they may not have. In that case
|
||||
the status will indicate some failure.
|
||||
This op completes after all activity on the call has completed. */
|
||||
GRPC_OP_RECV_STATUS_ON_CLIENT,
|
||||
/** Receive close on the server: one and only one must be made on the
|
||||
server. This op completes after the close has been received by the
|
||||
server. This operation always succeeds, meaning ops paired with
|
||||
this operation will also appear to succeed, even though they may not
|
||||
have. */
|
||||
GRPC_OP_RECV_CLOSE_ON_SERVER
|
||||
} grpc_op_type;
|
||||
|
||||
struct grpc_byte_buffer;
|
||||
|
||||
/** Operation data: one field for each op type (except SEND_CLOSE_FROM_CLIENT
|
||||
which has no arguments) */
|
||||
typedef struct grpc_op {
|
||||
/** Operation type, as defined by grpc_op_type */
|
||||
grpc_op_type op;
|
||||
/** Write flags bitset for grpc_begin_messages */
|
||||
uint32_t flags;
|
||||
/** Reserved for future usage */
|
||||
void* reserved;
|
||||
union grpc_op_data {
|
||||
/** Reserved for future usage */
|
||||
struct /* internal */ {
|
||||
void* reserved[8];
|
||||
} reserved;
|
||||
struct grpc_op_send_initial_metadata {
|
||||
size_t count;
|
||||
grpc_metadata* metadata;
|
||||
/** If \a is_set, \a compression_level will be used for the call.
|
||||
* Otherwise, \a compression_level won't be considered */
|
||||
struct grpc_op_send_initial_metadata_maybe_compression_level {
|
||||
uint8_t is_set;
|
||||
grpc_compression_level level;
|
||||
} maybe_compression_level;
|
||||
} send_initial_metadata;
|
||||
struct grpc_op_send_message {
|
||||
/** This op takes ownership of the slices in send_message. After
|
||||
* a call completes, the contents of send_message are not guaranteed
|
||||
* and likely empty. The original owner should still call
|
||||
* grpc_byte_buffer_destroy() on this object however.
|
||||
*/
|
||||
struct grpc_byte_buffer* send_message;
|
||||
} send_message;
|
||||
struct grpc_op_send_status_from_server {
|
||||
size_t trailing_metadata_count;
|
||||
grpc_metadata* trailing_metadata;
|
||||
grpc_status_code status;
|
||||
/** optional: set to NULL if no details need sending, non-NULL if they do
|
||||
* pointer will not be retained past the start_batch call
|
||||
*/
|
||||
grpc_slice* status_details;
|
||||
} send_status_from_server;
|
||||
/** ownership of the array is with the caller, but ownership of the elements
|
||||
stays with the call object (ie key, value members are owned by the call
|
||||
object, recv_initial_metadata->array is owned by the caller).
|
||||
After the operation completes, call grpc_metadata_array_destroy on this
|
||||
value, or reuse it in a future op. */
|
||||
struct grpc_op_recv_initial_metadata {
|
||||
grpc_metadata_array* recv_initial_metadata;
|
||||
} recv_initial_metadata;
|
||||
/** ownership of the byte buffer is moved to the caller; the caller must
|
||||
call grpc_byte_buffer_destroy on this value, or reuse it in a future op.
|
||||
The returned byte buffer will be NULL if trailing metadata was
|
||||
received instead of a message.
|
||||
*/
|
||||
struct grpc_op_recv_message {
|
||||
struct grpc_byte_buffer** recv_message;
|
||||
} recv_message;
|
||||
struct grpc_op_recv_status_on_client {
|
||||
/** ownership of the array is with the caller, but ownership of the
|
||||
elements stays with the call object (ie key, value members are owned
|
||||
by the call object, trailing_metadata->array is owned by the caller).
|
||||
After the operation completes, call grpc_metadata_array_destroy on
|
||||
this value, or reuse it in a future op. */
|
||||
grpc_metadata_array* trailing_metadata;
|
||||
grpc_status_code* status;
|
||||
grpc_slice* status_details;
|
||||
/** If this is not nullptr, it will be populated with the full fidelity
|
||||
* error string for debugging purposes. The application is responsible
|
||||
* for freeing the data by using gpr_free(). */
|
||||
const char** error_string;
|
||||
} recv_status_on_client;
|
||||
struct grpc_op_recv_close_on_server {
|
||||
/** out argument, set to 1 if the call failed in any way (seen as a
|
||||
cancellation on the server), or 0 if the call succeeded */
|
||||
int* cancelled;
|
||||
} recv_close_on_server;
|
||||
} data;
|
||||
} grpc_op;
|
||||
|
||||
/** Information requested from the channel. */
|
||||
typedef struct {
|
||||
/** If non-NULL, will be set to point to a string indicating the LB
|
||||
* policy name. Caller takes ownership. */
|
||||
char** lb_policy_name;
|
||||
/** If non-NULL, will be set to point to a string containing the
|
||||
* service config used by the channel in JSON form. */
|
||||
char** service_config_json;
|
||||
} grpc_channel_info;
|
||||
|
||||
typedef struct grpc_resource_quota grpc_resource_quota;
|
||||
|
||||
/** Completion queues internally MAY maintain a set of file descriptors in a
|
||||
structure called 'pollset'. This enum specifies if a completion queue has an
|
||||
associated pollset and any restrictions on the type of file descriptors that
|
||||
can be present in the pollset.
|
||||
|
||||
I/O progress can only be made when grpc_completion_queue_next() or
|
||||
grpc_completion_queue_pluck() are called on the completion queue (unless the
|
||||
grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important
|
||||
to actively call these APIs */
|
||||
typedef enum {
|
||||
/** The completion queue will have an associated pollset and there is no
|
||||
restriction on the type of file descriptors the pollset may contain */
|
||||
GRPC_CQ_DEFAULT_POLLING,
|
||||
|
||||
/** Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will
|
||||
not contain any 'listening file descriptors' (i.e file descriptors used to
|
||||
listen to incoming channels) */
|
||||
GRPC_CQ_NON_LISTENING,
|
||||
|
||||
/** The completion queue will not have an associated pollset. Note that
|
||||
grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still
|
||||
be called to pop events from the completion queue; it is not required to
|
||||
call them actively to make I/O progress */
|
||||
GRPC_CQ_NON_POLLING
|
||||
} grpc_cq_polling_type;
|
||||
|
||||
/** Specifies the type of APIs to use to pop events from the completion queue */
|
||||
typedef enum {
|
||||
/** Events are popped out by calling grpc_completion_queue_next() API ONLY */
|
||||
GRPC_CQ_NEXT,
|
||||
|
||||
/** Events are popped out by calling grpc_completion_queue_pluck() API ONLY*/
|
||||
GRPC_CQ_PLUCK,
|
||||
|
||||
/** EXPERIMENTAL: Events trigger a callback specified as the tag */
|
||||
GRPC_CQ_CALLBACK
|
||||
} grpc_cq_completion_type;
|
||||
|
||||
/* The upgrade to version 2 is currently experimental. */
|
||||
|
||||
#define GRPC_CQ_CURRENT_VERSION 2
|
||||
#define GRPC_CQ_VERSION_MINIMUM_FOR_CALLBACKABLE 2
|
||||
typedef struct grpc_completion_queue_attributes {
|
||||
/** The version number of this structure. More fields might be added to this
|
||||
structure in future. */
|
||||
int version; /** Set to GRPC_CQ_CURRENT_VERSION */
|
||||
|
||||
grpc_cq_completion_type cq_completion_type;
|
||||
|
||||
grpc_cq_polling_type cq_polling_type;
|
||||
|
||||
/* END OF VERSION 1 CQ ATTRIBUTES */
|
||||
|
||||
/* EXPERIMENTAL: START OF VERSION 2 CQ ATTRIBUTES */
|
||||
/** When creating a callbackable CQ, pass in a functor to get invoked when
|
||||
* shutdown is complete */
|
||||
void* cq_shutdown_cb;
|
||||
|
||||
/* END OF VERSION 2 CQ ATTRIBUTES */
|
||||
} grpc_completion_queue_attributes;
|
||||
|
||||
/** The completion queue factory structure is opaque to the callers of grpc */
|
||||
typedef struct grpc_completion_queue_factory grpc_completion_queue_factory;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_GRPC_TYPES_H */
|
||||
112
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/log.h
generated
vendored
Normal file
112
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/log.h
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_LOG_H
|
||||
#define GRPC_IMPL_CODEGEN_LOG_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h> /* for abort() */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** GPR log API.
|
||||
|
||||
Usage (within grpc):
|
||||
|
||||
int argument1 = 3;
|
||||
char* argument2 = "hello";
|
||||
gpr_log(GPR_DEBUG, "format string %d", argument1);
|
||||
gpr_log(GPR_INFO, "hello world");
|
||||
gpr_log(GPR_ERROR, "%d %s!!", argument1, argument2); */
|
||||
|
||||
/** The severity of a log message - use the #defines below when calling into
|
||||
gpr_log to additionally supply file and line data */
|
||||
typedef enum gpr_log_severity {
|
||||
GPR_LOG_SEVERITY_DEBUG,
|
||||
GPR_LOG_SEVERITY_INFO,
|
||||
GPR_LOG_SEVERITY_ERROR
|
||||
} gpr_log_severity;
|
||||
|
||||
#define GPR_LOG_VERBOSITY_UNSET -1
|
||||
|
||||
/** Returns a string representation of the log severity */
|
||||
GPRAPI const char* gpr_log_severity_string(gpr_log_severity severity);
|
||||
|
||||
/** Macros to build log contexts at various severity levels */
|
||||
#define GPR_DEBUG __FILE__, __LINE__, GPR_LOG_SEVERITY_DEBUG
|
||||
#define GPR_INFO __FILE__, __LINE__, GPR_LOG_SEVERITY_INFO
|
||||
#define GPR_ERROR __FILE__, __LINE__, GPR_LOG_SEVERITY_ERROR
|
||||
|
||||
/** Log a message. It's advised to use GPR_xxx above to generate the context
|
||||
* for each message */
|
||||
GPRAPI void gpr_log(const char* file, int line, gpr_log_severity severity,
|
||||
const char* format, ...) GPR_PRINT_FORMAT_CHECK(4, 5);
|
||||
|
||||
GPRAPI int gpr_should_log(gpr_log_severity severity);
|
||||
|
||||
GPRAPI void gpr_log_message(const char* file, int line,
|
||||
gpr_log_severity severity, const char* message);
|
||||
|
||||
/** Set global log verbosity */
|
||||
GPRAPI void gpr_set_log_verbosity(gpr_log_severity min_severity_to_print);
|
||||
|
||||
GPRAPI void gpr_log_verbosity_init(void);
|
||||
|
||||
/** Log overrides: applications can use this API to intercept logging calls
|
||||
and use their own implementations */
|
||||
|
||||
struct gpr_log_func_args {
|
||||
const char* file;
|
||||
int line;
|
||||
gpr_log_severity severity;
|
||||
const char* message;
|
||||
};
|
||||
|
||||
typedef struct gpr_log_func_args gpr_log_func_args;
|
||||
|
||||
typedef void (*gpr_log_func)(gpr_log_func_args* args);
|
||||
GPRAPI void gpr_set_log_function(gpr_log_func func);
|
||||
|
||||
/** abort() the process if x is zero, having written a line to the log.
|
||||
|
||||
Intended for internal invariants. If the error can be recovered from,
|
||||
without the possibility of corruption, or might best be reflected via
|
||||
an exception in a higher-level language, consider returning error code. */
|
||||
#define GPR_ASSERT(x) \
|
||||
do { \
|
||||
if (GPR_UNLIKELY(!(x))) { \
|
||||
gpr_log(GPR_ERROR, "assertion failed: %s", #x); \
|
||||
abort(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define GPR_DEBUG_ASSERT(x) GPR_ASSERT(x)
|
||||
#else
|
||||
#define GPR_DEBUG_ASSERT(x)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_LOG_H */
|
||||
558
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/port_platform.h
generated
vendored
Normal file
558
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/port_platform.h
generated
vendored
Normal file
@@ -0,0 +1,558 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_PORT_PLATFORM_H
|
||||
#define GRPC_IMPL_CODEGEN_PORT_PLATFORM_H
|
||||
|
||||
/*
|
||||
* Define GPR_BACKWARDS_COMPATIBILITY_MODE to try harder to be ABI
|
||||
* compatible with older platforms (currently only on Linux)
|
||||
* Causes:
|
||||
* - some libc calls to be gotten via dlsym
|
||||
* - some syscalls to be made directly
|
||||
*/
|
||||
|
||||
/* Get windows.h included everywhere (we need it) */
|
||||
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif /* WIN32_LEAN_AND_MEAN */
|
||||
|
||||
#ifndef NOMINMAX
|
||||
#define GRPC_NOMINMX_WAS_NOT_DEFINED
|
||||
#define NOMINMAX
|
||||
#endif /* NOMINMAX */
|
||||
|
||||
#ifndef _WIN32_WINNT
|
||||
#error \
|
||||
"Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
|
||||
#else /* !defined(_WIN32_WINNT) */
|
||||
#if (_WIN32_WINNT < 0x0600)
|
||||
#error \
|
||||
"Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
|
||||
#endif /* _WIN32_WINNT < 0x0600 */
|
||||
#endif /* defined(_WIN32_WINNT) */
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#ifdef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
|
||||
#undef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
|
||||
|
||||
#ifdef GRPC_NOMINMAX_WAS_NOT_DEFINED
|
||||
#undef GRPC_NOMINMAX_WAS_NOT_DEFINED
|
||||
#undef NOMINMAX
|
||||
#endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
|
||||
#endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \
|
||||
defined(WIN32) */
|
||||
|
||||
/* Override this file with one for your platform if you need to redefine
|
||||
things. */
|
||||
|
||||
#if !defined(GPR_NO_AUTODETECT_PLATFORM)
|
||||
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
|
||||
#if defined(_WIN64) || defined(WIN64)
|
||||
#define GPR_ARCH_64 1
|
||||
#else
|
||||
#define GPR_ARCH_32 1
|
||||
#endif
|
||||
#define GPR_PLATFORM_STRING "windows"
|
||||
#define GPR_WINDOWS 1
|
||||
#define GPR_WINDOWS_SUBPROCESS 1
|
||||
#define GPR_WINDOWS_ENV
|
||||
#ifdef __MSYS__
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#define GPR_MSYS_TMPFILE
|
||||
#define GPR_POSIX_LOG
|
||||
#define GPR_POSIX_STRING
|
||||
#define GPR_POSIX_TIME
|
||||
#else
|
||||
#define GPR_GETPID_IN_PROCESS_H 1
|
||||
#define GPR_WINDOWS_TMPFILE
|
||||
#define GPR_WINDOWS_LOG
|
||||
#define GPR_WINDOWS_CRASH_HANDLER 1
|
||||
#define GPR_WINDOWS_STRING
|
||||
#define GPR_WINDOWS_TIME
|
||||
#endif
|
||||
#ifdef __GNUC__
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#else
|
||||
#define GPR_WINDOWS_ATOMIC 1
|
||||
#define GPR_MSVC_TLS 1
|
||||
#endif
|
||||
#elif defined(GPR_MANYLINUX1)
|
||||
// TODO(atash): manylinux1 is just another __linux__ but with ancient
|
||||
// libraries; it should be integrated with the `__linux__` definitions below.
|
||||
#define GPR_PLATFORM_STRING "manylinux"
|
||||
#define GPR_POSIX_CRASH_HANDLER 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_LINUX 1
|
||||
#define GPR_LINUX_LOG 1
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#define GPR_LINUX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(ANDROID) || defined(__ANDROID__)
|
||||
#define GPR_PLATFORM_STRING "android"
|
||||
#define GPR_ANDROID 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_SYNC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_ANDROID_LOG 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#elif defined(__linux__)
|
||||
#define GPR_PLATFORM_STRING "linux"
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE
|
||||
#endif
|
||||
#ifndef _DEFAULT_SOURCE
|
||||
#define _DEFAULT_SOURCE
|
||||
#endif
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <features.h>
|
||||
#define GPR_CPU_LINUX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_LINUX 1
|
||||
#define GPR_LINUX_LOG
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#define GPR_LINUX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#ifdef __GLIBC__
|
||||
#define GPR_POSIX_CRASH_HANDLER 1
|
||||
#define GPR_LINUX_PTHREAD_NAME 1
|
||||
#else /* musl libc */
|
||||
#define GPR_MUSL_LIBC_COMPAT 1
|
||||
#endif
|
||||
#elif defined(__APPLE__)
|
||||
#include <Availability.h>
|
||||
#include <TargetConditionals.h>
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE
|
||||
#endif
|
||||
#if TARGET_OS_IPHONE
|
||||
#define GPR_PLATFORM_STRING "ios"
|
||||
#define GPR_CPU_IPHONE 1
|
||||
#define GPR_PTHREAD_TLS 1
|
||||
#else /* TARGET_OS_IPHONE */
|
||||
#define GPR_PLATFORM_STRING "osx"
|
||||
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7
|
||||
#define GPR_CPU_IPHONE 1
|
||||
#define GPR_PTHREAD_TLS 1
|
||||
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */
|
||||
#define GPR_CPU_POSIX 1
|
||||
/* TODO(vjpai): there is a reported issue in bazel build for Mac where __thread
|
||||
in a header is currently not working (bazelbuild/bazel#4341). Remove
|
||||
the following conditional and use GPR_GCC_TLS when that is fixed */
|
||||
#ifndef GRPC_BAZEL_BUILD
|
||||
#define GPR_GCC_TLS 1
|
||||
#else /* GRPC_BAZEL_BUILD */
|
||||
#define GPR_PTHREAD_TLS 1
|
||||
#endif /* GRPC_BAZEL_BUILD */
|
||||
#define GPR_APPLE_PTHREAD_NAME 1
|
||||
#endif
|
||||
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */
|
||||
#define GPR_CPU_POSIX 1
|
||||
/* TODO(vjpai): Remove the following conditional and use only GPR_GCC_TLS
|
||||
when bazelbuild/bazel#4341 is fixed */
|
||||
#ifndef GRPC_BAZEL_BUILD
|
||||
#define GPR_GCC_TLS 1
|
||||
#else /* GRPC_BAZEL_BUILD */
|
||||
#define GPR_PTHREAD_TLS 1
|
||||
#endif /* GRPC_BAZEL_BUILD */
|
||||
#endif
|
||||
#define GPR_POSIX_CRASH_HANDLER 1
|
||||
#endif
|
||||
#define GPR_APPLE 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
/* TODO(mxyan): Remove when CFStream becomes default */
|
||||
#ifndef GRPC_CFSTREAM
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#endif
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(__FreeBSD__)
|
||||
#define GPR_PLATFORM_STRING "freebsd"
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE
|
||||
#endif
|
||||
#define GPR_FREEBSD 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(__OpenBSD__)
|
||||
#define GPR_PLATFORM_STRING "openbsd"
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE
|
||||
#endif
|
||||
#define GPR_OPENBSD 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(__sun) && defined(__SVR4)
|
||||
#define GPR_PLATFORM_STRING "solaris"
|
||||
#define GPR_SOLARIS 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(_AIX)
|
||||
#define GPR_PLATFORM_STRING "aix"
|
||||
#ifndef _ALL_SOURCE
|
||||
#define _ALL_SOURCE
|
||||
#endif
|
||||
#define GPR_AIX 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#elif defined(__native_client__)
|
||||
#define GPR_PLATFORM_STRING "nacl"
|
||||
#ifndef _BSD_SOURCE
|
||||
#define _BSD_SOURCE
|
||||
#endif
|
||||
#ifndef _DEFAULT_SOURCE
|
||||
#define _DEFAULT_SOURCE
|
||||
#endif
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#define GPR_NACL 1
|
||||
#define GPR_CPU_POSIX 1
|
||||
#define GPR_GCC_ATOMIC 1
|
||||
#define GPR_GCC_TLS 1
|
||||
#define GPR_POSIX_LOG 1
|
||||
#define GPR_POSIX_ENV 1
|
||||
#define GPR_POSIX_TMPFILE 1
|
||||
#define GPR_POSIX_STRING 1
|
||||
#define GPR_POSIX_SUBPROCESS 1
|
||||
#define GPR_POSIX_SYNC 1
|
||||
#define GPR_POSIX_TIME 1
|
||||
#define GPR_GETPID_IN_UNISTD_H 1
|
||||
#ifdef _LP64
|
||||
#define GPR_ARCH_64 1
|
||||
#else /* _LP64 */
|
||||
#define GPR_ARCH_32 1
|
||||
#endif /* _LP64 */
|
||||
#else
|
||||
#error "Could not auto-detect platform"
|
||||
#endif
|
||||
#endif /* GPR_NO_AUTODETECT_PLATFORM */
|
||||
|
||||
/*
|
||||
* There are platforms for which TLS should not be used even though the
|
||||
* compiler makes it seem like it's supported (Android NDK < r12b for example).
|
||||
* This is primarily because of linker problems and toolchain misconfiguration:
|
||||
* TLS isn't supported until NDK r12b per
|
||||
* https://developer.android.com/ndk/downloads/revision_history.html
|
||||
* TLS also does not work with Android NDK if GCC is being used as the compiler
|
||||
* instead of Clang.
|
||||
* Since NDK r16, `__NDK_MAJOR__` and `__NDK_MINOR__` are defined in
|
||||
* <android/ndk-version.h>. For NDK < r16, users should define these macros,
|
||||
* e.g. `-D__NDK_MAJOR__=11 -D__NKD_MINOR__=0` for NDK r11. */
|
||||
#if defined(__ANDROID__) && defined(GPR_GCC_TLS)
|
||||
#if __has_include(<android/ndk-version.h>)
|
||||
#include <android/ndk-version.h>
|
||||
#endif /* __has_include(<android/ndk-version.h>) */
|
||||
#if (defined(__clang__) && defined(__NDK_MAJOR__) && defined(__NDK_MINOR__) && \
|
||||
((__NDK_MAJOR__ < 12) || \
|
||||
((__NDK_MAJOR__ == 12) && (__NDK_MINOR__ < 1)))) || \
|
||||
(defined(__GNUC__) && !defined(__clang__))
|
||||
#undef GPR_GCC_TLS
|
||||
#define GPR_PTHREAD_TLS 1
|
||||
#endif
|
||||
#endif /*defined(__ANDROID__) && defined(GPR_GCC_TLS) */
|
||||
|
||||
#if defined(__has_include)
|
||||
#if __has_include(<atomic>)
|
||||
#define GRPC_HAS_CXX11_ATOMIC
|
||||
#endif /* __has_include(<atomic>) */
|
||||
#endif /* defined(__has_include) */
|
||||
|
||||
#ifndef GPR_PLATFORM_STRING
|
||||
#warning "GPR_PLATFORM_STRING not auto-detected"
|
||||
#define GPR_PLATFORM_STRING "unknown"
|
||||
#endif
|
||||
|
||||
#ifdef GPR_GCOV
|
||||
#undef GPR_FORBID_UNREACHABLE_CODE
|
||||
#define GPR_FORBID_UNREACHABLE_CODE 1
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if _MSC_VER < 1700
|
||||
typedef __int8 int8_t;
|
||||
typedef __int16 int16_t;
|
||||
typedef __int32 int32_t;
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef unsigned __int16 uint16_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif /* _MSC_VER < 1700 */
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* Cache line alignment */
|
||||
#ifndef GPR_CACHELINE_SIZE_LOG
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
#define GPR_CACHELINE_SIZE_LOG 6
|
||||
#endif
|
||||
#ifndef GPR_CACHELINE_SIZE_LOG
|
||||
/* A reasonable default guess. Note that overestimates tend to waste more
|
||||
space, while underestimates tend to waste more time. */
|
||||
#define GPR_CACHELINE_SIZE_LOG 6
|
||||
#endif /* GPR_CACHELINE_SIZE_LOG */
|
||||
#endif /* GPR_CACHELINE_SIZE_LOG */
|
||||
|
||||
#define GPR_CACHELINE_SIZE (1 << GPR_CACHELINE_SIZE_LOG)
|
||||
|
||||
/* scrub GCC_ATOMIC if it's not available on this compiler */
|
||||
#if defined(GPR_GCC_ATOMIC) && !defined(__ATOMIC_RELAXED)
|
||||
#undef GPR_GCC_ATOMIC
|
||||
#define GPR_GCC_SYNC 1
|
||||
#endif
|
||||
|
||||
/* Validate platform combinations */
|
||||
#if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \
|
||||
defined(GPR_WINDOWS_ATOMIC) != \
|
||||
1
|
||||
#error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WINDOWS_ATOMIC
|
||||
#endif
|
||||
|
||||
#if defined(GPR_ARCH_32) + defined(GPR_ARCH_64) != 1
|
||||
#error Must define exactly one of GPR_ARCH_32, GPR_ARCH_64
|
||||
#endif
|
||||
|
||||
#if defined(GPR_CPU_LINUX) + defined(GPR_CPU_POSIX) + defined(GPR_WINDOWS) + \
|
||||
defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \
|
||||
1
|
||||
#error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM
|
||||
#endif
|
||||
|
||||
#if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \
|
||||
defined(GPR_CUSTOM_TLS) != \
|
||||
1
|
||||
#error Must define exactly one of GPR_MSVC_TLS, GPR_GCC_TLS, GPR_PTHREAD_TLS, GPR_CUSTOM_TLS
|
||||
#endif
|
||||
|
||||
/* maximum alignment needed for any type on this platform, rounded up to a
|
||||
power of two */
|
||||
#define GPR_MAX_ALIGNMENT 16
|
||||
|
||||
#ifndef GRPC_ARES
|
||||
#define GRPC_ARES 1
|
||||
#endif
|
||||
|
||||
#ifndef GRPC_MUST_USE_RESULT
|
||||
#if defined(__GNUC__) && !defined(__MINGW32__)
|
||||
#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
|
||||
#define GPR_ALIGN_STRUCT(n) __attribute__((aligned(n)))
|
||||
#else
|
||||
#define GRPC_MUST_USE_RESULT
|
||||
#define GPR_ALIGN_STRUCT(n)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef GRPC_UNUSED
|
||||
#if defined(__GNUC__) && !defined(__MINGW32__)
|
||||
#define GRPC_UNUSED __attribute__((unused))
|
||||
#else
|
||||
#define GRPC_UNUSED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef GPR_PRINT_FORMAT_CHECK
|
||||
#ifdef __GNUC__
|
||||
#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \
|
||||
__attribute__((format(printf, FORMAT_STR, ARGS)))
|
||||
#else
|
||||
#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS)
|
||||
#endif
|
||||
#endif /* GPR_PRINT_FORMAT_CHECK */
|
||||
|
||||
#if GPR_FORBID_UNREACHABLE_CODE
|
||||
#define GPR_UNREACHABLE_CODE(STATEMENT)
|
||||
#else
|
||||
#define GPR_UNREACHABLE_CODE(STATEMENT) \
|
||||
do { \
|
||||
gpr_log(GPR_ERROR, "Should never reach here."); \
|
||||
abort(); \
|
||||
STATEMENT; \
|
||||
} while (0)
|
||||
#endif /* GPR_FORBID_UNREACHABLE_CODE */
|
||||
|
||||
#ifndef GPRAPI
|
||||
#define GPRAPI
|
||||
#endif
|
||||
|
||||
#ifndef GRPCAPI
|
||||
#define GRPCAPI GPRAPI
|
||||
#endif
|
||||
|
||||
#ifndef CENSUSAPI
|
||||
#define CENSUSAPI GRPCAPI
|
||||
#endif
|
||||
|
||||
#ifndef GPR_ATTRIBUTE_NO_TSAN /* (1) */
|
||||
#if defined(__has_feature)
|
||||
#if __has_feature(thread_sanitizer)
|
||||
#define GPR_ATTRIBUTE_NO_TSAN __attribute__((no_sanitize("thread")))
|
||||
#endif /* __has_feature(thread_sanitizer) */
|
||||
#endif /* defined(__has_feature) */
|
||||
#ifndef GPR_ATTRIBUTE_NO_TSAN /* (2) */
|
||||
#define GPR_ATTRIBUTE_NO_TSAN
|
||||
#endif /* GPR_ATTRIBUTE_NO_TSAN (2) */
|
||||
#endif /* GPR_ATTRIBUTE_NO_TSAN (1) */
|
||||
|
||||
/* GRPC_ALLOW_EXCEPTIONS should be 0 or 1 if exceptions are allowed or not */
|
||||
#ifndef GRPC_ALLOW_EXCEPTIONS
|
||||
/* If not already set, set to 1 on Windows (style guide standard) but to
|
||||
* 0 on non-Windows platforms unless the compiler defines __EXCEPTIONS */
|
||||
#ifdef GPR_WINDOWS
|
||||
#define GRPC_ALLOW_EXCEPTIONS 1
|
||||
#else /* GPR_WINDOWS */
|
||||
#ifdef __EXCEPTIONS
|
||||
#define GRPC_ALLOW_EXCEPTIONS 1
|
||||
#else /* __EXCEPTIONS */
|
||||
#define GRPC_ALLOW_EXCEPTIONS 0
|
||||
#endif /* __EXCEPTIONS */
|
||||
#endif /* __GPR_WINDOWS */
|
||||
#endif /* GRPC_ALLOW_EXCEPTIONS */
|
||||
|
||||
/* Use GPR_LIKELY only in cases where you are sure that a certain outcome is the
|
||||
* most likely. Ideally, also collect performance numbers to justify the claim.
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
#define GPR_LIKELY(x) __builtin_expect((x), 1)
|
||||
#define GPR_UNLIKELY(x) __builtin_expect((x), 0)
|
||||
#else /* __GNUC__ */
|
||||
#define GPR_LIKELY(x) (x)
|
||||
#define GPR_UNLIKELY(x) (x)
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#ifndef __STDC_FORMAT_MACROS
|
||||
#define __STDC_FORMAT_MACROS
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_PORT_PLATFORM_H */
|
||||
52
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/propagation_bits.h
generated
vendored
Normal file
52
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/propagation_bits.h
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H
|
||||
#define GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Propagation bits: this can be bitwise or-ed to form propagation_mask for
|
||||
* grpc_call */
|
||||
/** Propagate deadline */
|
||||
#define GRPC_PROPAGATE_DEADLINE ((uint32_t)1)
|
||||
/** Propagate census context */
|
||||
#define GRPC_PROPAGATE_CENSUS_STATS_CONTEXT ((uint32_t)2)
|
||||
#define GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT ((uint32_t)4)
|
||||
/** Propagate cancellation */
|
||||
#define GRPC_PROPAGATE_CANCELLATION ((uint32_t)8)
|
||||
|
||||
/** Default propagation mask: clients of the core API are encouraged to encode
|
||||
deltas from this in their implementations... ie write:
|
||||
GRPC_PROPAGATE_DEFAULTS & ~GRPC_PROPAGATE_DEADLINE to disable deadline
|
||||
propagation. Doing so gives flexibility in the future to define new
|
||||
propagation types that are default inherited or not. */
|
||||
#define GRPC_PROPAGATE_DEFAULTS \
|
||||
((uint32_t)(( \
|
||||
0xffff | GRPC_PROPAGATE_DEADLINE | GRPC_PROPAGATE_CENSUS_STATS_CONTEXT | \
|
||||
GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT | GRPC_PROPAGATE_CANCELLATION)))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_PROPAGATION_BITS_H */
|
||||
147
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/slice.h
generated
vendored
Normal file
147
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/slice.h
generated
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SLICE_H
|
||||
#define GRPC_IMPL_CODEGEN_SLICE_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <grpc/impl/codegen/gpr_slice.h>
|
||||
|
||||
typedef struct grpc_slice grpc_slice;
|
||||
|
||||
/** Slice API
|
||||
|
||||
A slice represents a contiguous reference counted array of bytes.
|
||||
It is cheap to take references to a slice, and it is cheap to create a
|
||||
slice pointing to a subset of another slice.
|
||||
|
||||
The data-structure for slices is exposed here to allow non-gpr code to
|
||||
build slices from whatever data they have available.
|
||||
|
||||
When defining interfaces that handle slices, care should be taken to define
|
||||
reference ownership semantics (who should call unref?) and mutability
|
||||
constraints (is the callee allowed to modify the slice?) */
|
||||
|
||||
typedef struct grpc_slice_refcount_vtable {
|
||||
void (*ref)(void*);
|
||||
void (*unref)(void*);
|
||||
int (*eq)(grpc_slice a, grpc_slice b);
|
||||
uint32_t (*hash)(grpc_slice slice);
|
||||
} grpc_slice_refcount_vtable;
|
||||
|
||||
/** Reference count container for grpc_slice. Contains function pointers to
|
||||
increment and decrement reference counts. Implementations should cleanup
|
||||
when the reference count drops to zero.
|
||||
Typically client code should not touch this, and use grpc_slice_malloc,
|
||||
grpc_slice_new, or grpc_slice_new_with_len instead. */
|
||||
typedef struct grpc_slice_refcount {
|
||||
const grpc_slice_refcount_vtable* vtable;
|
||||
/** If a subset of this slice is taken, use this pointer for the refcount.
|
||||
Typically points back to the refcount itself, however iterning
|
||||
implementations can use this to avoid a verification step on each hash
|
||||
or equality check */
|
||||
struct grpc_slice_refcount* sub_refcount;
|
||||
} grpc_slice_refcount;
|
||||
|
||||
/* Inlined half of grpc_slice is allowed to expand the size of the overall type
|
||||
by this many bytes */
|
||||
#define GRPC_SLICE_INLINE_EXTRA_SIZE sizeof(void*)
|
||||
|
||||
#define GRPC_SLICE_INLINED_SIZE \
|
||||
(sizeof(size_t) + sizeof(uint8_t*) - 1 + GRPC_SLICE_INLINE_EXTRA_SIZE)
|
||||
|
||||
/** A grpc_slice s, if initialized, represents the byte range
|
||||
s.bytes[0..s.length-1].
|
||||
|
||||
It can have an associated ref count which has a destruction routine to be run
|
||||
when the ref count reaches zero (see grpc_slice_new() and grp_slice_unref()).
|
||||
Multiple grpc_slice values may share a ref count.
|
||||
|
||||
If the slice does not have a refcount, it represents an inlined small piece
|
||||
of data that is copied by value. */
|
||||
struct grpc_slice {
|
||||
struct grpc_slice_refcount* refcount;
|
||||
union grpc_slice_data {
|
||||
struct grpc_slice_refcounted {
|
||||
uint8_t* bytes;
|
||||
size_t length;
|
||||
} refcounted;
|
||||
struct grpc_slice_inlined {
|
||||
uint8_t length;
|
||||
uint8_t bytes[GRPC_SLICE_INLINED_SIZE];
|
||||
} inlined;
|
||||
} data;
|
||||
};
|
||||
|
||||
#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8
|
||||
|
||||
/** Represents an expandable array of slices, to be interpreted as a
|
||||
single item. */
|
||||
typedef struct grpc_slice_buffer {
|
||||
/** This is for internal use only. External users (i.e any code outside grpc
|
||||
* core) MUST NOT use this field */
|
||||
grpc_slice* base_slices;
|
||||
|
||||
/** slices in the array (Points to the first valid grpc_slice in the array) */
|
||||
grpc_slice* slices;
|
||||
/** the number of slices in the array */
|
||||
size_t count;
|
||||
/** the number of slices allocated in the array. External users (i.e any code
|
||||
* outside grpc core) MUST NOT use this field */
|
||||
size_t capacity;
|
||||
/** the combined length of all slices in the array */
|
||||
size_t length;
|
||||
/** inlined elements to avoid allocations */
|
||||
grpc_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS];
|
||||
} grpc_slice_buffer;
|
||||
|
||||
#define GRPC_SLICE_START_PTR(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.bytes \
|
||||
: (slice).data.inlined.bytes)
|
||||
#define GRPC_SLICE_LENGTH(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.length \
|
||||
: (slice).data.inlined.length)
|
||||
#define GRPC_SLICE_SET_LENGTH(slice, newlen) \
|
||||
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
||||
: ((slice).data.inlined.length = (uint8_t)(newlen)))
|
||||
#define GRPC_SLICE_END_PTR(slice) \
|
||||
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
||||
#define GRPC_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
||||
|
||||
#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS
|
||||
|
||||
/* Duplicate GPR_* definitions */
|
||||
#define GPR_SLICE_START_PTR(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.bytes \
|
||||
: (slice).data.inlined.bytes)
|
||||
#define GPR_SLICE_LENGTH(slice) \
|
||||
((slice).refcount ? (slice).data.refcounted.length \
|
||||
: (slice).data.inlined.length)
|
||||
#define GPR_SLICE_SET_LENGTH(slice, newlen) \
|
||||
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
||||
: ((slice).data.inlined.length = (uint8_t)(newlen)))
|
||||
#define GPR_SLICE_END_PTR(slice) \
|
||||
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
||||
#define GPR_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
||||
|
||||
#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SLICE_H */
|
||||
153
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/status.h
generated
vendored
Normal file
153
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/status.h
generated
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_STATUS_H
|
||||
#define GRPC_IMPL_CODEGEN_STATUS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
/** Not an error; returned on success */
|
||||
GRPC_STATUS_OK = 0,
|
||||
|
||||
/** The operation was cancelled (typically by the caller). */
|
||||
GRPC_STATUS_CANCELLED = 1,
|
||||
|
||||
/** Unknown error. An example of where this error may be returned is
|
||||
if a Status value received from another address space belongs to
|
||||
an error-space that is not known in this address space. Also
|
||||
errors raised by APIs that do not return enough error information
|
||||
may be converted to this error. */
|
||||
GRPC_STATUS_UNKNOWN = 2,
|
||||
|
||||
/** Client specified an invalid argument. Note that this differs
|
||||
from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments
|
||||
that are problematic regardless of the state of the system
|
||||
(e.g., a malformed file name). */
|
||||
GRPC_STATUS_INVALID_ARGUMENT = 3,
|
||||
|
||||
/** Deadline expired before operation could complete. For operations
|
||||
that change the state of the system, this error may be returned
|
||||
even if the operation has completed successfully. For example, a
|
||||
successful response from a server could have been delayed long
|
||||
enough for the deadline to expire. */
|
||||
GRPC_STATUS_DEADLINE_EXCEEDED = 4,
|
||||
|
||||
/** Some requested entity (e.g., file or directory) was not found. */
|
||||
GRPC_STATUS_NOT_FOUND = 5,
|
||||
|
||||
/** Some entity that we attempted to create (e.g., file or directory)
|
||||
already exists. */
|
||||
GRPC_STATUS_ALREADY_EXISTS = 6,
|
||||
|
||||
/** The caller does not have permission to execute the specified
|
||||
operation. PERMISSION_DENIED must not be used for rejections
|
||||
caused by exhausting some resource (use RESOURCE_EXHAUSTED
|
||||
instead for those errors). PERMISSION_DENIED must not be
|
||||
used if the caller can not be identified (use UNAUTHENTICATED
|
||||
instead for those errors). */
|
||||
GRPC_STATUS_PERMISSION_DENIED = 7,
|
||||
|
||||
/** The request does not have valid authentication credentials for the
|
||||
operation. */
|
||||
GRPC_STATUS_UNAUTHENTICATED = 16,
|
||||
|
||||
/** Some resource has been exhausted, perhaps a per-user quota, or
|
||||
perhaps the entire file system is out of space. */
|
||||
GRPC_STATUS_RESOURCE_EXHAUSTED = 8,
|
||||
|
||||
/** Operation was rejected because the system is not in a state
|
||||
required for the operation's execution. For example, directory
|
||||
to be deleted may be non-empty, an rmdir operation is applied to
|
||||
a non-directory, etc.
|
||||
|
||||
A litmus test that may help a service implementor in deciding
|
||||
between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
|
||||
(a) Use UNAVAILABLE if the client can retry just the failing call.
|
||||
(b) Use ABORTED if the client should retry at a higher-level
|
||||
(e.g., restarting a read-modify-write sequence).
|
||||
(c) Use FAILED_PRECONDITION if the client should not retry until
|
||||
the system state has been explicitly fixed. E.g., if an "rmdir"
|
||||
fails because the directory is non-empty, FAILED_PRECONDITION
|
||||
should be returned since the client should not retry unless
|
||||
they have first fixed up the directory by deleting files from it.
|
||||
(d) Use FAILED_PRECONDITION if the client performs conditional
|
||||
REST Get/Update/Delete on a resource and the resource on the
|
||||
server does not match the condition. E.g., conflicting
|
||||
read-modify-write on the same resource. */
|
||||
GRPC_STATUS_FAILED_PRECONDITION = 9,
|
||||
|
||||
/** The operation was aborted, typically due to a concurrency issue
|
||||
like sequencer check failures, transaction aborts, etc.
|
||||
|
||||
See litmus test above for deciding between FAILED_PRECONDITION,
|
||||
ABORTED, and UNAVAILABLE. */
|
||||
GRPC_STATUS_ABORTED = 10,
|
||||
|
||||
/** Operation was attempted past the valid range. E.g., seeking or
|
||||
reading past end of file.
|
||||
|
||||
Unlike INVALID_ARGUMENT, this error indicates a problem that may
|
||||
be fixed if the system state changes. For example, a 32-bit file
|
||||
system will generate INVALID_ARGUMENT if asked to read at an
|
||||
offset that is not in the range [0,2^32-1], but it will generate
|
||||
OUT_OF_RANGE if asked to read from an offset past the current
|
||||
file size.
|
||||
|
||||
There is a fair bit of overlap between FAILED_PRECONDITION and
|
||||
OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific
|
||||
error) when it applies so that callers who are iterating through
|
||||
a space can easily look for an OUT_OF_RANGE error to detect when
|
||||
they are done. */
|
||||
GRPC_STATUS_OUT_OF_RANGE = 11,
|
||||
|
||||
/** Operation is not implemented or not supported/enabled in this service. */
|
||||
GRPC_STATUS_UNIMPLEMENTED = 12,
|
||||
|
||||
/** Internal errors. Means some invariants expected by underlying
|
||||
system has been broken. If you see one of these errors,
|
||||
something is very broken. */
|
||||
GRPC_STATUS_INTERNAL = 13,
|
||||
|
||||
/** The service is currently unavailable. This is a most likely a
|
||||
transient condition and may be corrected by retrying with
|
||||
a backoff.
|
||||
|
||||
WARNING: Although data MIGHT not have been transmitted when this
|
||||
status occurs, there is NOT A GUARANTEE that the server has not seen
|
||||
anything. So in general it is unsafe to retry on this status code
|
||||
if the call is non-idempotent.
|
||||
|
||||
See litmus test above for deciding between FAILED_PRECONDITION,
|
||||
ABORTED, and UNAVAILABLE. */
|
||||
GRPC_STATUS_UNAVAILABLE = 14,
|
||||
|
||||
/** Unrecoverable data loss or corruption. */
|
||||
GRPC_STATUS_DATA_LOSS = 15,
|
||||
|
||||
/** Force users to include a default branch: */
|
||||
GRPC_STATUS__DO_NOT_USE = -1
|
||||
} grpc_status_code;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_STATUS_H */
|
||||
63
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync.h
generated
vendored
Normal file
63
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync.h
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_H
|
||||
#define GRPC_IMPL_CODEGEN_SYNC_H
|
||||
/** Synchronization primitives for GPR.
|
||||
|
||||
The type gpr_mu provides a non-reentrant mutex (lock).
|
||||
|
||||
The type gpr_cv provides a condition variable.
|
||||
|
||||
The type gpr_once provides for one-time initialization.
|
||||
|
||||
The type gpr_event provides one-time-setting, reading, and
|
||||
waiting of a void*, with memory barriers.
|
||||
|
||||
The type gpr_refcount provides an object reference counter,
|
||||
with memory barriers suitable to control
|
||||
object lifetimes.
|
||||
|
||||
The type gpr_stats_counter provides an atomic statistics counter. It
|
||||
provides no memory barriers.
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Platform-specific type declarations of gpr_mu and gpr_cv. */
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h>
|
||||
|
||||
#if defined(GPR_POSIX_SYNC)
|
||||
#include <grpc/impl/codegen/sync_posix.h>
|
||||
#elif defined(GPR_WINDOWS)
|
||||
#include <grpc/impl/codegen/sync_windows.h>
|
||||
#elif defined(GPR_CUSTOM_SYNC)
|
||||
#include <grpc/impl/codegen/sync_custom.h>
|
||||
#else
|
||||
#error Unable to determine platform for sync
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_H */
|
||||
38
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_custom.h
generated
vendored
Normal file
38
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_custom.h
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H
|
||||
#define GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h>
|
||||
|
||||
/* Users defining GPR_CUSTOM_SYNC need to define the following macros. */
|
||||
|
||||
#ifdef GPR_CUSTOM_SYNC
|
||||
|
||||
typedef GPR_CUSTOM_MU_TYPE gpr_mu;
|
||||
typedef GPR_CUSTOM_CV_TYPE gpr_cv;
|
||||
typedef GPR_CUSTOM_ONCE_TYPE gpr_once;
|
||||
|
||||
#define GPR_ONCE_INIT GPR_CUSTOM_ONCE_INIT
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_CUSTOM_H */
|
||||
48
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_generic.h
generated
vendored
Normal file
48
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_generic.h
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_GENERIC_H
|
||||
#define GRPC_IMPL_CODEGEN_SYNC_GENERIC_H
|
||||
/* Generic type defintions for gpr_sync. */
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm.h>
|
||||
|
||||
/* gpr_event */
|
||||
typedef struct {
|
||||
gpr_atm state;
|
||||
} gpr_event;
|
||||
|
||||
#define GPR_EVENT_INIT \
|
||||
{ 0 }
|
||||
|
||||
/* gpr_refcount */
|
||||
typedef struct {
|
||||
gpr_atm count;
|
||||
} gpr_refcount;
|
||||
|
||||
/* gpr_stats_counter */
|
||||
typedef struct {
|
||||
gpr_atm value;
|
||||
} gpr_stats_counter;
|
||||
|
||||
#define GPR_STATS_INIT \
|
||||
{ 0 }
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_GENERIC_H */
|
||||
34
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_posix.h
generated
vendored
Normal file
34
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_posix.h
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_POSIX_H
|
||||
#define GRPC_IMPL_CODEGEN_SYNC_POSIX_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h>
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
typedef pthread_mutex_t gpr_mu;
|
||||
typedef pthread_cond_t gpr_cv;
|
||||
typedef pthread_once_t gpr_once;
|
||||
|
||||
#define GPR_ONCE_INIT PTHREAD_ONCE_INIT
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_POSIX_H */
|
||||
36
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_windows.h
generated
vendored
Normal file
36
node_modules/grpc/deps/grpc/include/grpc/impl/codegen/sync_windows.h
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H
|
||||
#define GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h>
|
||||
|
||||
typedef struct {
|
||||
CRITICAL_SECTION cs; /* Not an SRWLock until Vista is unsupported */
|
||||
int locked;
|
||||
} gpr_mu;
|
||||
|
||||
typedef CONDITION_VARIABLE gpr_cv;
|
||||
|
||||
typedef INIT_ONCE gpr_once;
|
||||
#define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT
|
||||
|
||||
#endif /* GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H */
|
||||
48
node_modules/grpc/deps/grpc/include/grpc/load_reporting.h
generated
vendored
Normal file
48
node_modules/grpc/deps/grpc/include/grpc/load_reporting.h
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_LOAD_REPORTING_H
|
||||
#define GRPC_LOAD_REPORTING_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Metadata key for the gRPC LB load balancer token.
|
||||
*
|
||||
* The value corresponding to this key is an opaque token that is given to the
|
||||
* frontend as part of each pick; the frontend sends this token to the backend
|
||||
* in each request it sends when using that pick. The token is used by the
|
||||
* backend to verify the request and to allow the backend to report load to the
|
||||
* gRPC LB system. */
|
||||
#define GRPC_LB_TOKEN_MD_KEY "lb-token"
|
||||
|
||||
/** Metadata key for gRPC LB cost reporting.
|
||||
*
|
||||
* The value corresponding to this key is an opaque binary blob reported by the
|
||||
* backend as part of its trailing metadata containing cost information for the
|
||||
* call. */
|
||||
#define GRPC_LB_COST_MD_KEY "lb-cost-bin"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_LOAD_REPORTING_H */
|
||||
172
node_modules/grpc/deps/grpc/include/grpc/slice.h
generated
vendored
Normal file
172
node_modules/grpc/deps/grpc/include/grpc/slice.h
generated
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SLICE_H
|
||||
#define GRPC_SLICE_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/slice.h>
|
||||
#include <grpc/support/sync.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Increment the refcount of s. Requires slice is initialized.
|
||||
Returns s. */
|
||||
GPRAPI grpc_slice grpc_slice_ref(grpc_slice s);
|
||||
|
||||
/** Decrement the ref count of s. If the ref count of s reaches zero, all
|
||||
slices sharing the ref count are destroyed, and considered no longer
|
||||
initialized. If s is ultimately derived from a call to grpc_slice_new(start,
|
||||
len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is
|
||||
ultimately derived from a call to grpc_slice_new_with_len(start, len, dest)
|
||||
where dest!=NULL , then (*dest)(start, len). Requires s initialized. */
|
||||
GPRAPI void grpc_slice_unref(grpc_slice s);
|
||||
|
||||
/** Copy slice - create a new slice that contains the same data as s */
|
||||
GPRAPI grpc_slice grpc_slice_copy(grpc_slice s);
|
||||
|
||||
/** Create a slice pointing at some data. Calls malloc to allocate a refcount
|
||||
for the object, and arranges that destroy will be called with the pointer
|
||||
passed in at destruction. */
|
||||
GPRAPI grpc_slice grpc_slice_new(void* p, size_t len, void (*destroy)(void*));
|
||||
|
||||
/** Equivalent to grpc_slice_new, but with a separate pointer that is
|
||||
passed to the destroy function. This function can be useful when
|
||||
the data is part of a larger structure that must be destroyed when
|
||||
the data is no longer needed. */
|
||||
GPRAPI grpc_slice grpc_slice_new_with_user_data(void* p, size_t len,
|
||||
void (*destroy)(void*),
|
||||
void* user_data);
|
||||
|
||||
/** Equivalent to grpc_slice_new, but with a two argument destroy function that
|
||||
also takes the slice length. */
|
||||
GPRAPI grpc_slice grpc_slice_new_with_len(void* p, size_t len,
|
||||
void (*destroy)(void*, size_t));
|
||||
|
||||
/** Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc()
|
||||
call.
|
||||
Aborts if malloc() fails. */
|
||||
GPRAPI grpc_slice grpc_slice_malloc(size_t length);
|
||||
GPRAPI grpc_slice grpc_slice_malloc_large(size_t length);
|
||||
|
||||
#define GRPC_SLICE_MALLOC(len) grpc_slice_malloc(len)
|
||||
|
||||
/** Intern a slice:
|
||||
|
||||
The return value for two invocations of this function with the same sequence
|
||||
of bytes is a slice which points to the same memory. */
|
||||
GPRAPI grpc_slice grpc_slice_intern(grpc_slice slice);
|
||||
|
||||
/** Create a slice by copying a string.
|
||||
Does not preserve null terminators.
|
||||
Equivalent to:
|
||||
size_t len = strlen(source);
|
||||
grpc_slice slice = grpc_slice_malloc(len);
|
||||
memcpy(slice->data, source, len); */
|
||||
GPRAPI grpc_slice grpc_slice_from_copied_string(const char* source);
|
||||
|
||||
/** Create a slice by copying a buffer.
|
||||
Equivalent to:
|
||||
grpc_slice slice = grpc_slice_malloc(len);
|
||||
memcpy(slice->data, source, len); */
|
||||
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char* source, size_t len);
|
||||
|
||||
/** Create a slice pointing to constant memory */
|
||||
GPRAPI grpc_slice grpc_slice_from_static_string(const char* source);
|
||||
|
||||
/** Create a slice pointing to constant memory */
|
||||
GPRAPI grpc_slice grpc_slice_from_static_buffer(const void* source, size_t len);
|
||||
|
||||
/** Return a result slice derived from s, which shares a ref count with \a s,
|
||||
where result.data==s.data+begin, and result.length==end-begin. The ref count
|
||||
of \a s is increased by one. Do not assign result back to \a s.
|
||||
Requires s initialized, begin <= end, begin <= s.length, and
|
||||
end <= source->length. */
|
||||
GPRAPI grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end);
|
||||
|
||||
/** The same as grpc_slice_sub, but without altering the ref count */
|
||||
GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end);
|
||||
|
||||
/** Splits s into two: modifies s to be s[0:split], and returns a new slice,
|
||||
sharing a refcount with s, that contains s[split:s.length].
|
||||
Requires s intialized, split <= s.length */
|
||||
GPRAPI grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split);
|
||||
|
||||
typedef enum {
|
||||
GRPC_SLICE_REF_TAIL = 1,
|
||||
GRPC_SLICE_REF_HEAD = 2,
|
||||
GRPC_SLICE_REF_BOTH = 1 + 2
|
||||
} grpc_slice_ref_whom;
|
||||
|
||||
/** The same as grpc_slice_split_tail, but with an option to skip altering
|
||||
* refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to
|
||||
* grpc_slice_split_tail(...)) */
|
||||
GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice* s, size_t split,
|
||||
grpc_slice_ref_whom ref_whom);
|
||||
|
||||
/** Splits s into two: modifies s to be s[split:s.length], and returns a new
|
||||
slice, sharing a refcount with s, that contains s[0:split].
|
||||
Requires s intialized, split <= s.length */
|
||||
GPRAPI grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split);
|
||||
|
||||
GPRAPI grpc_slice grpc_empty_slice(void);
|
||||
|
||||
GPRAPI uint32_t grpc_slice_default_hash_impl(grpc_slice s);
|
||||
GPRAPI int grpc_slice_default_eq_impl(grpc_slice a, grpc_slice b);
|
||||
|
||||
GPRAPI int grpc_slice_eq(grpc_slice a, grpc_slice b);
|
||||
|
||||
/** Returns <0 if a < b, ==0 if a == b, >0 if a > b
|
||||
The order is arbitrary, and is not guaranteed to be stable across different
|
||||
versions of the API. */
|
||||
GPRAPI int grpc_slice_cmp(grpc_slice a, grpc_slice b);
|
||||
GPRAPI int grpc_slice_str_cmp(grpc_slice a, const char* b);
|
||||
|
||||
/** return non-zero if the first blen bytes of a are equal to b */
|
||||
GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void* b, size_t blen);
|
||||
|
||||
/** return the index of the last instance of \a c in \a s, or -1 if not found */
|
||||
GPRAPI int grpc_slice_rchr(grpc_slice s, char c);
|
||||
GPRAPI int grpc_slice_chr(grpc_slice s, char c);
|
||||
|
||||
/** return the index of the first occurance of \a needle in \a haystack, or -1
|
||||
if it's not found */
|
||||
GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle);
|
||||
|
||||
GPRAPI uint32_t grpc_slice_hash(grpc_slice s);
|
||||
|
||||
/** Do two slices point at the same memory, with the same length
|
||||
If a or b is inlined, actually compares data */
|
||||
GPRAPI int grpc_slice_is_equivalent(grpc_slice a, grpc_slice b);
|
||||
|
||||
/** Return a slice pointing to newly allocated memory that has the same contents
|
||||
* as \a s */
|
||||
GPRAPI grpc_slice grpc_slice_dup(grpc_slice a);
|
||||
|
||||
/** Return a copy of slice as a C string. Offers no protection against embedded
|
||||
NULL's. Returned string must be freed with gpr_free. */
|
||||
GPRAPI char* grpc_slice_to_c_string(grpc_slice s);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SLICE_H */
|
||||
84
node_modules/grpc/deps/grpc/include/grpc/slice_buffer.h
generated
vendored
Normal file
84
node_modules/grpc/deps/grpc/include/grpc/slice_buffer.h
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SLICE_BUFFER_H
|
||||
#define GRPC_SLICE_BUFFER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/slice.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** initialize a slice buffer */
|
||||
GPRAPI void grpc_slice_buffer_init(grpc_slice_buffer* sb);
|
||||
/** destroy a slice buffer - unrefs any held elements */
|
||||
GPRAPI void grpc_slice_buffer_destroy(grpc_slice_buffer* sb);
|
||||
/** Add an element to a slice buffer - takes ownership of the slice.
|
||||
This function is allowed to concatenate the passed in slice to the end of
|
||||
some other slice if desired by the slice buffer. */
|
||||
GPRAPI void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice slice);
|
||||
/** add an element to a slice buffer - takes ownership of the slice and returns
|
||||
the index of the slice.
|
||||
Guarantees that the slice will not be concatenated at the end of another
|
||||
slice (i.e. the data for this slice will begin at the first byte of the
|
||||
slice at the returned index in sb->slices)
|
||||
The implementation MAY decide to concatenate data at the end of a small
|
||||
slice added in this fashion. */
|
||||
GPRAPI size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer* sb,
|
||||
grpc_slice slice);
|
||||
GPRAPI void grpc_slice_buffer_addn(grpc_slice_buffer* sb, grpc_slice* slices,
|
||||
size_t n);
|
||||
/** add a very small (less than 8 bytes) amount of data to the end of a slice
|
||||
buffer: returns a pointer into which to add the data */
|
||||
GPRAPI uint8_t* grpc_slice_buffer_tiny_add(grpc_slice_buffer* sb, size_t len);
|
||||
/** pop the last buffer, but don't unref it */
|
||||
GPRAPI void grpc_slice_buffer_pop(grpc_slice_buffer* sb);
|
||||
/** clear a slice buffer, unref all elements */
|
||||
GPRAPI void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb);
|
||||
/** swap the contents of two slice buffers */
|
||||
GPRAPI void grpc_slice_buffer_swap(grpc_slice_buffer* a, grpc_slice_buffer* b);
|
||||
/** move all of the elements of src into dst */
|
||||
GPRAPI void grpc_slice_buffer_move_into(grpc_slice_buffer* src,
|
||||
grpc_slice_buffer* dst);
|
||||
/** remove n bytes from the end of a slice buffer */
|
||||
GPRAPI void grpc_slice_buffer_trim_end(grpc_slice_buffer* src, size_t n,
|
||||
grpc_slice_buffer* garbage);
|
||||
/** move the first n bytes of src into dst */
|
||||
GPRAPI void grpc_slice_buffer_move_first(grpc_slice_buffer* src, size_t n,
|
||||
grpc_slice_buffer* dst);
|
||||
/** move the first n bytes of src into dst without adding references */
|
||||
GPRAPI void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer* src,
|
||||
size_t n,
|
||||
grpc_slice_buffer* dst);
|
||||
/** move the first n bytes of src into dst (copying them) */
|
||||
GPRAPI void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src,
|
||||
size_t n, void* dst);
|
||||
/** take the first slice in the slice buffer */
|
||||
GPRAPI grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer* src);
|
||||
/** undo the above with (a possibly different) \a slice */
|
||||
GPRAPI void grpc_slice_buffer_undo_take_first(grpc_slice_buffer* src,
|
||||
grpc_slice slice);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SLICE_BUFFER_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/status.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/status.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_STATUS_H
|
||||
#define GRPC_STATUS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/status.h>
|
||||
|
||||
#endif /* GRPC_STATUS_H */
|
||||
68
node_modules/grpc/deps/grpc/include/grpc/support/alloc.h
generated
vendored
Normal file
68
node_modules/grpc/deps/grpc/include/grpc/support/alloc.h
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_ALLOC_H
|
||||
#define GRPC_SUPPORT_ALLOC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct gpr_allocation_functions {
|
||||
void* (*malloc_fn)(size_t size);
|
||||
void* (*zalloc_fn)(size_t size); /** if NULL, uses malloc_fn then memset */
|
||||
void* (*realloc_fn)(void* ptr, size_t size);
|
||||
void (*free_fn)(void* ptr);
|
||||
} gpr_allocation_functions;
|
||||
|
||||
/** malloc.
|
||||
* If size==0, always returns NULL. Otherwise this function never returns NULL.
|
||||
* The pointer returned is suitably aligned for any kind of variable it could
|
||||
* contain.
|
||||
*/
|
||||
GPRAPI void* gpr_malloc(size_t size);
|
||||
/** like malloc, but zero all bytes before returning them */
|
||||
GPRAPI void* gpr_zalloc(size_t size);
|
||||
/** free */
|
||||
GPRAPI void gpr_free(void* ptr);
|
||||
/** realloc, never returns NULL */
|
||||
GPRAPI void* gpr_realloc(void* p, size_t size);
|
||||
/** aligned malloc, never returns NULL, will align to alignment, which
|
||||
* must be a power of 2. */
|
||||
GPRAPI void* gpr_malloc_aligned(size_t size, size_t alignment);
|
||||
/** free memory allocated by gpr_malloc_aligned */
|
||||
GPRAPI void gpr_free_aligned(void* ptr);
|
||||
|
||||
/** Request the family of allocation functions in \a functions be used. NOTE
|
||||
* that this request will be honored in a *best effort* basis and that no
|
||||
* guarantees are made about the default functions (eg, malloc) being called.
|
||||
* The functions.free_fn implementation must be a no-op for NULL input. */
|
||||
GPRAPI void gpr_set_allocation_functions(gpr_allocation_functions functions);
|
||||
|
||||
/** Return the family of allocation functions currently in effect. */
|
||||
GPRAPI gpr_allocation_functions gpr_get_allocation_functions(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_ALLOC_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/atm.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/atm.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_ATM_H
|
||||
#define GRPC_SUPPORT_ATM_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_ATM_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_gcc_atomic.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_gcc_atomic.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_ATM_GCC_ATOMIC_H
|
||||
#define GRPC_SUPPORT_ATM_GCC_ATOMIC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm_gcc_atomic.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_gcc_sync.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_gcc_sync.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_ATM_GCC_SYNC_H
|
||||
#define GRPC_SUPPORT_ATM_GCC_SYNC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm_gcc_sync.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_ATM_GCC_SYNC_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_windows.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/atm_windows.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_ATM_WINDOWS_H
|
||||
#define GRPC_SUPPORT_ATM_WINDOWS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/atm_windows.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_ATM_WINDOWS_H */
|
||||
44
node_modules/grpc/deps/grpc/include/grpc/support/cpu.h
generated
vendored
Normal file
44
node_modules/grpc/deps/grpc/include/grpc/support/cpu.h
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_CPU_H
|
||||
#define GRPC_SUPPORT_CPU_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Interface providing CPU information for currently running system */
|
||||
|
||||
/** Return the number of CPU cores on the current system. Will return 0 if
|
||||
the information is not available. */
|
||||
GPRAPI unsigned gpr_cpu_num_cores(void);
|
||||
|
||||
/** Return the CPU on which the current thread is executing; N.B. This should
|
||||
be considered advisory only - it is possible that the thread is switched
|
||||
to a different CPU at any time. Returns a value in range
|
||||
[0, gpr_cpu_num_cores() - 1] */
|
||||
GPRAPI unsigned gpr_cpu_current_cpu(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_CPU_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/log.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/log.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_LOG_H
|
||||
#define GRPC_SUPPORT_LOG_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/log.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_LOG_H */
|
||||
38
node_modules/grpc/deps/grpc/include/grpc/support/log_windows.h
generated
vendored
Normal file
38
node_modules/grpc/deps/grpc/include/grpc/support/log_windows.h
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_LOG_WINDOWS_H
|
||||
#define GRPC_SUPPORT_LOG_WINDOWS_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Returns a string allocated with gpr_malloc that contains a UTF-8
|
||||
* formatted error message, corresponding to the error messageid.
|
||||
* Use in conjunction with GetLastError() et al.
|
||||
*/
|
||||
GPRAPI char* gpr_format_message(int messageid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_LOG_WINDOWS_H */
|
||||
24
node_modules/grpc/deps/grpc/include/grpc/support/port_platform.h
generated
vendored
Normal file
24
node_modules/grpc/deps/grpc/include/grpc/support/port_platform.h
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_PORT_PLATFORM_H
|
||||
#define GRPC_SUPPORT_PORT_PLATFORM_H
|
||||
|
||||
#include <grpc/impl/codegen/port_platform.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_PORT_PLATFORM_H */
|
||||
51
node_modules/grpc/deps/grpc/include/grpc/support/string_util.h
generated
vendored
Normal file
51
node_modules/grpc/deps/grpc/include/grpc/support/string_util.h
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_STRING_UTIL_H
|
||||
#define GRPC_SUPPORT_STRING_UTIL_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/gpr_types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** String utility functions */
|
||||
|
||||
/** Returns a copy of src that can be passed to gpr_free().
|
||||
If allocation fails or if src is NULL, returns NULL. */
|
||||
GPRAPI char* gpr_strdup(const char* src);
|
||||
|
||||
/** printf to a newly-allocated string. The set of supported formats may vary
|
||||
between platforms.
|
||||
|
||||
On success, returns the number of bytes printed (excluding the final '\0'),
|
||||
and *strp points to a string which must later be destroyed with gpr_free().
|
||||
|
||||
On error, returns -1 and sets *strp to NULL. If the format string is bad,
|
||||
the result is undefined. */
|
||||
GPRAPI int gpr_asprintf(char** strp, const char* format, ...)
|
||||
GPR_PRINT_FORMAT_CHECK(2, 3);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_STRING_UTIL_H */
|
||||
282
node_modules/grpc/deps/grpc/include/grpc/support/sync.h
generated
vendored
Normal file
282
node_modules/grpc/deps/grpc/include/grpc/support/sync.h
generated
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_SYNC_H
|
||||
#define GRPC_SUPPORT_SYNC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/gpr_types.h> /* for gpr_timespec */
|
||||
#include <grpc/impl/codegen/sync.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** --- Mutex interface ---
|
||||
|
||||
At most one thread may hold an exclusive lock on a mutex at any given time.
|
||||
Actions taken by a thread that holds a mutex exclusively happen after
|
||||
actions taken by all previous holders of the mutex. Variables of type
|
||||
gpr_mu are uninitialized when first declared. */
|
||||
|
||||
/** Initialize *mu. Requires: *mu uninitialized. */
|
||||
GPRAPI void gpr_mu_init(gpr_mu* mu);
|
||||
|
||||
/** Cause *mu no longer to be initialized, freeing any memory in use. Requires:
|
||||
*mu initialized; no other concurrent operation on *mu. */
|
||||
GPRAPI void gpr_mu_destroy(gpr_mu* mu);
|
||||
|
||||
/** Wait until no thread has a lock on *mu, cause the calling thread to own an
|
||||
exclusive lock on *mu, then return. May block indefinitely or crash if the
|
||||
calling thread has a lock on *mu. Requires: *mu initialized. */
|
||||
GPRAPI void gpr_mu_lock(gpr_mu* mu);
|
||||
|
||||
/** Release an exclusive lock on *mu held by the calling thread. Requires: *mu
|
||||
initialized; the calling thread holds an exclusive lock on *mu. */
|
||||
GPRAPI void gpr_mu_unlock(gpr_mu* mu);
|
||||
|
||||
/** Without blocking, attempt to acquire an exclusive lock on *mu for the
|
||||
calling thread, then return non-zero iff success. Fail, if any thread holds
|
||||
the lock; succeeds with high probability if no thread holds the lock.
|
||||
Requires: *mu initialized. */
|
||||
GPRAPI int gpr_mu_trylock(gpr_mu* mu);
|
||||
|
||||
/** --- Condition variable interface ---
|
||||
|
||||
A while-loop should be used with gpr_cv_wait() when waiting for conditions
|
||||
to become true. See the example below. Variables of type gpr_cv are
|
||||
uninitialized when first declared. */
|
||||
|
||||
/** Initialize *cv. Requires: *cv uninitialized. */
|
||||
GPRAPI void gpr_cv_init(gpr_cv* cv);
|
||||
|
||||
/** Cause *cv no longer to be initialized, freeing any memory in use. Requires:
|
||||
*cv initialized; no other concurrent operation on *cv.*/
|
||||
GPRAPI void gpr_cv_destroy(gpr_cv* cv);
|
||||
|
||||
/** Atomically release *mu and wait on *cv. When the calling thread is woken
|
||||
from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu)
|
||||
and return whether the deadline was exceeded. Use
|
||||
abs_deadline==gpr_inf_future for no deadline. abs_deadline can be either
|
||||
an absolute deadline, or a GPR_TIMESPAN. May return even when not
|
||||
woken explicitly. Requires: *mu and *cv initialized; the calling thread
|
||||
holds an exclusive lock on *mu. */
|
||||
GPRAPI int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline);
|
||||
|
||||
/** If any threads are waiting on *cv, wake at least one.
|
||||
Clients may treat this as an optimization of gpr_cv_broadcast()
|
||||
for use in the case where waking more than one waiter is not useful.
|
||||
Requires: *cv initialized. */
|
||||
GPRAPI void gpr_cv_signal(gpr_cv* cv);
|
||||
|
||||
/** Wake all threads waiting on *cv. Requires: *cv initialized. */
|
||||
GPRAPI void gpr_cv_broadcast(gpr_cv* cv);
|
||||
|
||||
/** --- One-time initialization ---
|
||||
|
||||
gpr_once must be declared with static storage class, and initialized with
|
||||
GPR_ONCE_INIT. e.g.,
|
||||
static gpr_once once_var = GPR_ONCE_INIT; */
|
||||
|
||||
/** Ensure that (*init_routine)() has been called exactly once (for the
|
||||
specified gpr_once instance) and then return.
|
||||
If multiple threads call gpr_once() on the same gpr_once instance, one of
|
||||
them will call (*init_routine)(), and the others will block until that call
|
||||
finishes.*/
|
||||
GPRAPI void gpr_once_init(gpr_once* once, void (*init_routine)(void));
|
||||
|
||||
/** --- One-time event notification ---
|
||||
|
||||
These operations act on a gpr_event, which should be initialized with
|
||||
gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g.,
|
||||
static gpr_event event_var = GPR_EVENT_INIT;
|
||||
It requires no destruction. */
|
||||
|
||||
/** Initialize *ev. */
|
||||
GPRAPI void gpr_event_init(gpr_event* ev);
|
||||
|
||||
/** Set *ev so that gpr_event_get() and gpr_event_wait() will return value.
|
||||
Requires: *ev initialized; value != NULL; no prior or concurrent calls to
|
||||
gpr_event_set(ev, ...) since initialization. */
|
||||
GPRAPI void gpr_event_set(gpr_event* ev, void* value);
|
||||
|
||||
/** Return the value set by gpr_event_set(ev, ...), or NULL if no such call has
|
||||
completed. If the result is non-NULL, all operations that occurred prior to
|
||||
the gpr_event_set(ev, ...) set will be visible after this call returns.
|
||||
Requires: *ev initialized. This operation is faster than acquiring a mutex
|
||||
on most platforms. */
|
||||
GPRAPI void* gpr_event_get(gpr_event* ev);
|
||||
|
||||
/** Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is
|
||||
exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use
|
||||
abs_deadline==gpr_inf_future for no deadline. When the event has been
|
||||
signalled before the call, this operation is faster than acquiring a mutex
|
||||
on most platforms. */
|
||||
GPRAPI void* gpr_event_wait(gpr_event* ev, gpr_timespec abs_deadline);
|
||||
|
||||
/** --- Reference counting ---
|
||||
|
||||
These calls act on the type gpr_refcount. It requires no destruction. */
|
||||
|
||||
/** Initialize *r to value n. */
|
||||
GPRAPI void gpr_ref_init(gpr_refcount* r, int n);
|
||||
|
||||
/** Increment the reference count *r. Requires *r initialized. */
|
||||
GPRAPI void gpr_ref(gpr_refcount* r);
|
||||
|
||||
/** Increment the reference count *r. Requires *r initialized.
|
||||
Crashes if refcount is zero */
|
||||
GPRAPI void gpr_ref_non_zero(gpr_refcount* r);
|
||||
|
||||
/** Increment the reference count *r by n. Requires *r initialized, n > 0. */
|
||||
GPRAPI void gpr_refn(gpr_refcount* r, int n);
|
||||
|
||||
/** Decrement the reference count *r and return non-zero iff it has reached
|
||||
zero. . Requires *r initialized. */
|
||||
GPRAPI int gpr_unref(gpr_refcount* r);
|
||||
|
||||
/** Return non-zero iff the reference count of *r is one, and thus is owned
|
||||
by exactly one object. */
|
||||
GPRAPI int gpr_ref_is_unique(gpr_refcount* r);
|
||||
|
||||
/** --- Stats counters ---
|
||||
|
||||
These calls act on the integral type gpr_stats_counter. It requires no
|
||||
destruction. Static instances may be initialized with
|
||||
gpr_stats_counter c = GPR_STATS_INIT;
|
||||
Beware: These operations do not imply memory barriers. Do not use them to
|
||||
synchronize other events. */
|
||||
|
||||
/** Initialize *c to the value n. */
|
||||
GPRAPI void gpr_stats_init(gpr_stats_counter* c, intptr_t n);
|
||||
|
||||
/** *c += inc. Requires: *c initialized. */
|
||||
GPRAPI void gpr_stats_inc(gpr_stats_counter* c, intptr_t inc);
|
||||
|
||||
/** Return *c. Requires: *c initialized. */
|
||||
GPRAPI intptr_t gpr_stats_read(const gpr_stats_counter* c);
|
||||
|
||||
/** ==================Example use of interface===================
|
||||
A producer-consumer queue of up to N integers,
|
||||
illustrating the use of the calls in this interface. */
|
||||
#if 0
|
||||
|
||||
#define N 4
|
||||
|
||||
typedef struct queue {
|
||||
gpr_cv non_empty; /* Signalled when length becomes non-zero. */
|
||||
gpr_cv non_full; /* Signalled when length becomes non-N. */
|
||||
gpr_mu mu; /* Protects all fields below.
|
||||
(That is, except during initialization or
|
||||
destruction, the fields below should be accessed
|
||||
only by a thread that holds mu.) */
|
||||
int head; /* Index of head of queue 0..N-1. */
|
||||
int length; /* Number of valid elements in queue 0..N. */
|
||||
int elem[N]; /* elem[head .. head+length-1] are queue elements. */
|
||||
} queue;
|
||||
|
||||
/* Initialize *q. */
|
||||
void queue_init(queue *q) {
|
||||
gpr_mu_init(&q->mu);
|
||||
gpr_cv_init(&q->non_empty);
|
||||
gpr_cv_init(&q->non_full);
|
||||
q->head = 0;
|
||||
q->length = 0;
|
||||
}
|
||||
|
||||
/* Free storage associated with *q. */
|
||||
void queue_destroy(queue *q) {
|
||||
gpr_mu_destroy(&q->mu);
|
||||
gpr_cv_destroy(&q->non_empty);
|
||||
gpr_cv_destroy(&q->non_full);
|
||||
}
|
||||
|
||||
/* Wait until there is room in *q, then append x to *q. */
|
||||
void queue_append(queue *q, int x) {
|
||||
gpr_mu_lock(&q->mu);
|
||||
/* To wait for a predicate without a deadline, loop on the negation of the
|
||||
predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop
|
||||
to release the lock, wait, and reacquire on each iteration. Code that
|
||||
makes the condition true should use gpr_cv_broadcast() on the
|
||||
corresponding condition variable. The predicate must be on state
|
||||
protected by the lock. */
|
||||
while (q->length == N) {
|
||||
gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future);
|
||||
}
|
||||
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
||||
/* It's normal to use gpr_cv_broadcast() or gpr_signal() while
|
||||
holding the lock. */
|
||||
gpr_cv_broadcast(&q->non_empty);
|
||||
}
|
||||
q->elem[(q->head + q->length) % N] = x;
|
||||
q->length++;
|
||||
gpr_mu_unlock(&q->mu);
|
||||
}
|
||||
|
||||
/* If it can be done without blocking, append x to *q and return non-zero.
|
||||
Otherwise return 0. */
|
||||
int queue_try_append(queue *q, int x) {
|
||||
int result = 0;
|
||||
if (gpr_mu_trylock(&q->mu)) {
|
||||
if (q->length != N) {
|
||||
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
||||
gpr_cv_broadcast(&q->non_empty);
|
||||
}
|
||||
q->elem[(q->head + q->length) % N] = x;
|
||||
q->length++;
|
||||
result = 1;
|
||||
}
|
||||
gpr_mu_unlock(&q->mu);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Wait until the *q is non-empty or deadline abs_deadline passes. If the
|
||||
queue is non-empty, remove its head entry, place it in *head, and return
|
||||
non-zero. Otherwise return 0. */
|
||||
int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) {
|
||||
int result = 0;
|
||||
gpr_mu_lock(&q->mu);
|
||||
/* To wait for a predicate with a deadline, loop on the negation of the
|
||||
predicate or until gpr_cv_wait() returns true. Code that makes
|
||||
the condition true should use gpr_cv_broadcast() on the corresponding
|
||||
condition variable. The predicate must be on state protected by the
|
||||
lock. */
|
||||
while (q->length == 0 &&
|
||||
!gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) {
|
||||
}
|
||||
if (q->length != 0) { /* Queue is non-empty. */
|
||||
result = 1;
|
||||
if (q->length == N) { /* Wake threads blocked in queue_append(). */
|
||||
gpr_cv_broadcast(&q->non_full);
|
||||
}
|
||||
*head = q->elem[q->head];
|
||||
q->head = (q->head + 1) % N;
|
||||
q->length--;
|
||||
} /* else deadline exceeded */
|
||||
gpr_mu_unlock(&q->mu);
|
||||
return result;
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_SYNC_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_custom.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_custom.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_SYNC_CUSTOM_H
|
||||
#define GRPC_SUPPORT_SYNC_CUSTOM_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_custom.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_SYNC_CUSTOM_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_generic.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_generic.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_SYNC_GENERIC_H
|
||||
#define GRPC_SUPPORT_SYNC_GENERIC_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_generic.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_SYNC_GENERIC_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_posix.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_posix.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_SYNC_POSIX_H
|
||||
#define GRPC_SUPPORT_SYNC_POSIX_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_posix.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_SYNC_POSIX_H */
|
||||
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_windows.h
generated
vendored
Normal file
26
node_modules/grpc/deps/grpc/include/grpc/support/sync_windows.h
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_SYNC_WINDOWS_H
|
||||
#define GRPC_SUPPORT_SYNC_WINDOWS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/sync_windows.h>
|
||||
|
||||
#endif /* GRPC_SUPPORT_SYNC_WINDOWS_H */
|
||||
44
node_modules/grpc/deps/grpc/include/grpc/support/thd_id.h
generated
vendored
Normal file
44
node_modules/grpc/deps/grpc/include/grpc/support/thd_id.h
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_THD_ID_H
|
||||
#define GRPC_SUPPORT_THD_ID_H
|
||||
/** Thread ID interface for GPR.
|
||||
|
||||
Used by some wrapped languages for logging purposes.
|
||||
|
||||
Types
|
||||
gpr_thd_id a unique opaque identifier for a thread.
|
||||
*/
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef uintptr_t gpr_thd_id;
|
||||
|
||||
/** Returns the identifier of the current thread. */
|
||||
GPRAPI gpr_thd_id gpr_thd_currentid(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_THD_ID_H */
|
||||
92
node_modules/grpc/deps/grpc/include/grpc/support/time.h
generated
vendored
Normal file
92
node_modules/grpc/deps/grpc/include/grpc/support/time.h
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_TIME_H
|
||||
#define GRPC_SUPPORT_TIME_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/gpr_types.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Time constants. */
|
||||
GPRAPI gpr_timespec
|
||||
gpr_time_0(gpr_clock_type type); /** The zero time interval. */
|
||||
GPRAPI gpr_timespec gpr_inf_future(gpr_clock_type type); /** The far future */
|
||||
GPRAPI gpr_timespec gpr_inf_past(gpr_clock_type type); /** The far past. */
|
||||
|
||||
#define GPR_MS_PER_SEC 1000
|
||||
#define GPR_US_PER_SEC 1000000
|
||||
#define GPR_NS_PER_SEC 1000000000
|
||||
#define GPR_NS_PER_MS 1000000
|
||||
#define GPR_NS_PER_US 1000
|
||||
#define GPR_US_PER_MS 1000
|
||||
|
||||
/** initialize time subsystem */
|
||||
GPRAPI void gpr_time_init(void);
|
||||
|
||||
/** Return the current time measured from the given clocks epoch. */
|
||||
GPRAPI gpr_timespec gpr_now(gpr_clock_type clock);
|
||||
|
||||
/** Convert a timespec from one clock to another */
|
||||
GPRAPI gpr_timespec gpr_convert_clock_type(gpr_timespec t,
|
||||
gpr_clock_type target_clock);
|
||||
|
||||
/** Return -ve, 0, or +ve according to whether a < b, a == b, or a > b
|
||||
respectively. */
|
||||
GPRAPI int gpr_time_cmp(gpr_timespec a, gpr_timespec b);
|
||||
|
||||
GPRAPI gpr_timespec gpr_time_max(gpr_timespec a, gpr_timespec b);
|
||||
GPRAPI gpr_timespec gpr_time_min(gpr_timespec a, gpr_timespec b);
|
||||
|
||||
/** Add and subtract times. Calculations saturate at infinities. */
|
||||
GPRAPI gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b);
|
||||
GPRAPI gpr_timespec gpr_time_sub(gpr_timespec a, gpr_timespec b);
|
||||
|
||||
/** Return a timespec representing a given number of time units. INT64_MIN is
|
||||
interpreted as gpr_inf_past, and INT64_MAX as gpr_inf_future. */
|
||||
GPRAPI gpr_timespec gpr_time_from_micros(int64_t x, gpr_clock_type clock_type);
|
||||
GPRAPI gpr_timespec gpr_time_from_nanos(int64_t x, gpr_clock_type clock_type);
|
||||
GPRAPI gpr_timespec gpr_time_from_millis(int64_t x, gpr_clock_type clock_type);
|
||||
GPRAPI gpr_timespec gpr_time_from_seconds(int64_t x, gpr_clock_type clock_type);
|
||||
GPRAPI gpr_timespec gpr_time_from_minutes(int64_t x, gpr_clock_type clock_type);
|
||||
GPRAPI gpr_timespec gpr_time_from_hours(int64_t x, gpr_clock_type clock_type);
|
||||
|
||||
GPRAPI int32_t gpr_time_to_millis(gpr_timespec timespec);
|
||||
|
||||
/** Return 1 if two times are equal or within threshold of each other,
|
||||
0 otherwise */
|
||||
GPRAPI int gpr_time_similar(gpr_timespec a, gpr_timespec b,
|
||||
gpr_timespec threshold);
|
||||
|
||||
/** Sleep until at least 'until' - an absolute timeout */
|
||||
GPRAPI void gpr_sleep_until(gpr_timespec until);
|
||||
|
||||
GPRAPI double gpr_timespec_to_micros(gpr_timespec t);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* GRPC_SUPPORT_TIME_H */
|
||||
31
node_modules/grpc/deps/grpc/include/grpc/support/workaround_list.h
generated
vendored
Normal file
31
node_modules/grpc/deps/grpc/include/grpc/support/workaround_list.h
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_SUPPORT_WORKAROUND_LIST_H
|
||||
#define GRPC_SUPPORT_WORKAROUND_LIST_H
|
||||
|
||||
/* The list of IDs of server workarounds currently maintained by gRPC. For
|
||||
* explanation and detailed descriptions of workarounds, see
|
||||
* /doc/workarounds.md
|
||||
*/
|
||||
typedef enum {
|
||||
GRPC_WORKAROUND_ID_CRONET_COMPRESSION = 0,
|
||||
GRPC_MAX_WORKAROUND_ID
|
||||
} grpc_workaround_list;
|
||||
|
||||
#endif /* GRPC_SUPPORT_WORKAROUND_LIST_H */
|
||||
1362
node_modules/grpc/deps/grpc/src/boringssl/err_data.c
generated
vendored
Normal file
1362
node_modules/grpc/deps/grpc/src/boringssl/err_data.c
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
35
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/backup_poller.h
generated
vendored
Normal file
35
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/backup_poller.h
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_BACKUP_POLLER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_BACKUP_POLLER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
/* Start polling \a interested_parties periodically in the timer thread */
|
||||
void grpc_client_channel_start_backup_polling(
|
||||
grpc_pollset_set* interested_parties);
|
||||
|
||||
/* Stop polling \a interested_parties */
|
||||
void grpc_client_channel_stop_backup_polling(
|
||||
grpc_pollset_set* interested_parties);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_BACKUP_POLLER_H */
|
||||
62
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel.h
generated
vendored
Normal file
62
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel.h
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
||||
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
|
||||
#include "src/core/ext/filters/client_channel/resolver.h"
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
extern grpc_core::TraceFlag grpc_client_channel_trace;
|
||||
|
||||
// Channel arg key for server URI string.
|
||||
#define GRPC_ARG_SERVER_URI "grpc.server_uri"
|
||||
|
||||
/* A client channel is a channel that begins disconnected, and can connect
|
||||
to some endpoint on demand. If that endpoint disconnects, it will be
|
||||
connected to again later.
|
||||
|
||||
Calls on a disconnected client channel are queued until a connection is
|
||||
established. */
|
||||
|
||||
extern const grpc_channel_filter grpc_client_channel_filter;
|
||||
|
||||
void grpc_client_channel_populate_child_refs(
|
||||
grpc_channel_element* elem, grpc_core::ChildRefsList* child_subchannels,
|
||||
grpc_core::ChildRefsList* child_channels);
|
||||
|
||||
grpc_connectivity_state grpc_client_channel_check_connectivity_state(
|
||||
grpc_channel_element* elem, int try_to_connect);
|
||||
|
||||
int grpc_client_channel_num_external_connectivity_watchers(
|
||||
grpc_channel_element* elem);
|
||||
|
||||
void grpc_client_channel_watch_connectivity_state(
|
||||
grpc_channel_element* elem, grpc_polling_entity pollent,
|
||||
grpc_connectivity_state* state, grpc_closure* on_complete,
|
||||
grpc_closure* watcher_timer_init);
|
||||
|
||||
/* Debug helper: pull the subchannel call from a call stack element */
|
||||
grpc_subchannel_call* grpc_client_channel_get_subchannel_call(
|
||||
grpc_call_element* elem);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H */
|
||||
71
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h
generated
vendored
Normal file
71
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_args.h"
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
#include "src/core/lib/channel/channelz.h"
|
||||
#include "src/core/lib/gprpp/inlined_vector.h"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
// TODO(ncteisen), this only contains the uuids of the children for now,
|
||||
// since that is all that is strictly needed. In a future enhancement we will
|
||||
// add human readable names as in the channelz.proto
|
||||
typedef InlinedVector<intptr_t, 10> ChildRefsList;
|
||||
|
||||
namespace channelz {
|
||||
|
||||
// Subtype of ChannelNode that overrides and provides client_channel specific
|
||||
// functionality like querying for connectivity_state and subchannel data.
|
||||
class ClientChannelNode : public ChannelNode {
|
||||
public:
|
||||
static RefCountedPtr<ChannelNode> MakeClientChannelNode(
|
||||
grpc_channel* channel, size_t channel_tracer_max_nodes,
|
||||
bool is_top_level_channel);
|
||||
|
||||
// Override this functionality since client_channels have a notion of
|
||||
// channel connectivity.
|
||||
void PopulateConnectivityState(grpc_json* json) override;
|
||||
|
||||
// Override this functionality since client_channels have subchannels
|
||||
void PopulateChildRefs(grpc_json* json) override;
|
||||
|
||||
// Helper to create a channel arg to ensure this type of ChannelNode is
|
||||
// created.
|
||||
static grpc_arg CreateChannelArg();
|
||||
|
||||
protected:
|
||||
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
||||
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
|
||||
ClientChannelNode(grpc_channel* channel, size_t channel_tracer_max_nodes,
|
||||
bool is_top_level_channel);
|
||||
virtual ~ClientChannelNode() {}
|
||||
|
||||
private:
|
||||
grpc_channel_element* client_channel_;
|
||||
};
|
||||
|
||||
} // namespace channelz
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H */
|
||||
74
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel_factory.h
generated
vendored
Normal file
74
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/client_channel_factory.h
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/subchannel.h"
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
// Channel arg key for client channel factory.
|
||||
#define GRPC_ARG_CLIENT_CHANNEL_FACTORY "grpc.client_channel_factory"
|
||||
|
||||
typedef struct grpc_client_channel_factory grpc_client_channel_factory;
|
||||
typedef struct grpc_client_channel_factory_vtable
|
||||
grpc_client_channel_factory_vtable;
|
||||
|
||||
typedef enum {
|
||||
GRPC_CLIENT_CHANNEL_TYPE_REGULAR, /** for the user-level regular calls */
|
||||
GRPC_CLIENT_CHANNEL_TYPE_LOAD_BALANCING, /** for communication with a load
|
||||
balancing service */
|
||||
} grpc_client_channel_type;
|
||||
|
||||
/** Constructor for new configured channels.
|
||||
Creating decorators around this type is encouraged to adapt behavior. */
|
||||
struct grpc_client_channel_factory {
|
||||
const grpc_client_channel_factory_vtable* vtable;
|
||||
};
|
||||
|
||||
struct grpc_client_channel_factory_vtable {
|
||||
void (*ref)(grpc_client_channel_factory* factory);
|
||||
void (*unref)(grpc_client_channel_factory* factory);
|
||||
grpc_subchannel* (*create_subchannel)(grpc_client_channel_factory* factory,
|
||||
const grpc_subchannel_args* args);
|
||||
grpc_channel* (*create_client_channel)(grpc_client_channel_factory* factory,
|
||||
const char* target,
|
||||
grpc_client_channel_type type,
|
||||
const grpc_channel_args* args);
|
||||
};
|
||||
|
||||
void grpc_client_channel_factory_ref(grpc_client_channel_factory* factory);
|
||||
void grpc_client_channel_factory_unref(grpc_client_channel_factory* factory);
|
||||
|
||||
/** Create a new grpc_subchannel */
|
||||
grpc_subchannel* grpc_client_channel_factory_create_subchannel(
|
||||
grpc_client_channel_factory* factory, const grpc_subchannel_args* args);
|
||||
|
||||
/** Create a new grpc_channel */
|
||||
grpc_channel* grpc_client_channel_factory_create_channel(
|
||||
grpc_client_channel_factory* factory, const char* target,
|
||||
grpc_client_channel_type type, const grpc_channel_args* args);
|
||||
|
||||
grpc_arg grpc_client_channel_factory_create_channel_arg(
|
||||
grpc_client_channel_factory* factory);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_FACTORY_H */
|
||||
73
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/connector.h
generated
vendored
Normal file
73
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/connector.h
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
#include "src/core/lib/iomgr/resolve_address.h"
|
||||
#include "src/core/lib/transport/transport.h"
|
||||
|
||||
typedef struct grpc_connector grpc_connector;
|
||||
typedef struct grpc_connector_vtable grpc_connector_vtable;
|
||||
|
||||
struct grpc_connector {
|
||||
const grpc_connector_vtable* vtable;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/** set of pollsets interested in this connection */
|
||||
grpc_pollset_set* interested_parties;
|
||||
/** deadline for connection */
|
||||
grpc_millis deadline;
|
||||
/** channel arguments (to be passed to transport) */
|
||||
const grpc_channel_args* channel_args;
|
||||
} grpc_connect_in_args;
|
||||
|
||||
typedef struct {
|
||||
/** the connected transport */
|
||||
grpc_transport* transport;
|
||||
|
||||
/** channel arguments (to be passed to the filters) */
|
||||
grpc_channel_args* channel_args;
|
||||
} grpc_connect_out_args;
|
||||
|
||||
struct grpc_connector_vtable {
|
||||
void (*ref)(grpc_connector* connector);
|
||||
void (*unref)(grpc_connector* connector);
|
||||
/** Implementation of grpc_connector_shutdown */
|
||||
void (*shutdown)(grpc_connector* connector, grpc_error* why);
|
||||
/** Implementation of grpc_connector_connect */
|
||||
void (*connect)(grpc_connector* connector,
|
||||
const grpc_connect_in_args* in_args,
|
||||
grpc_connect_out_args* out_args, grpc_closure* notify);
|
||||
};
|
||||
|
||||
grpc_connector* grpc_connector_ref(grpc_connector* connector);
|
||||
void grpc_connector_unref(grpc_connector* connector);
|
||||
/** Connect using the connector: max one outstanding call at a time */
|
||||
void grpc_connector_connect(grpc_connector* connector,
|
||||
const grpc_connect_in_args* in_args,
|
||||
grpc_connect_out_args* out_args,
|
||||
grpc_closure* notify);
|
||||
/** Cancel any pending connection */
|
||||
void grpc_connector_shutdown(grpc_connector* connector, grpc_error* why);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONNECTOR_H */
|
||||
34
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.h
generated
vendored
Normal file
34
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.h
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
|
||||
|
||||
/// Channel arg indicating the server in HTTP CONNECT request (string).
|
||||
/// The presence of this arg triggers the use of HTTP CONNECT.
|
||||
#define GRPC_ARG_HTTP_CONNECT_SERVER "grpc.http_connect_server"
|
||||
|
||||
/// Channel arg indicating HTTP CONNECT headers (string).
|
||||
/// Multiple headers are separated by newlines. Key/value pairs are
|
||||
/// seperated by colons.
|
||||
#define GRPC_ARG_HTTP_CONNECT_HEADERS "grpc.http_connect_headers"
|
||||
|
||||
/// Registers handshaker factory.
|
||||
void grpc_http_connect_register_handshaker_factory();
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H */
|
||||
24
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/http_proxy.h
generated
vendored
Normal file
24
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/http_proxy.h
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
|
||||
|
||||
void grpc_register_http_proxy_mapper();
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H */
|
||||
221
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy.h
generated
vendored
Normal file
221
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy.h
generated
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
||||
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
|
||||
#include "src/core/ext/filters/client_channel/subchannel.h"
|
||||
#include "src/core/lib/gprpp/abstract.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
||||
#include "src/core/lib/iomgr/combiner.h"
|
||||
#include "src/core/lib/iomgr/polling_entity.h"
|
||||
#include "src/core/lib/transport/connectivity_state.h"
|
||||
|
||||
extern grpc_core::DebugOnlyTraceFlag grpc_trace_lb_policy_refcount;
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
/// Interface for load balancing policies.
|
||||
///
|
||||
/// Note: All methods with a "Locked" suffix must be called from the
|
||||
/// combiner passed to the constructor.
|
||||
///
|
||||
/// Any I/O done by the LB policy should be done under the pollset_set
|
||||
/// returned by \a interested_parties().
|
||||
class LoadBalancingPolicy
|
||||
: public InternallyRefCountedWithTracing<LoadBalancingPolicy> {
|
||||
public:
|
||||
struct Args {
|
||||
/// The combiner under which all LB policy calls will be run.
|
||||
/// Policy does NOT take ownership of the reference to the combiner.
|
||||
// TODO(roth): Once we have a C++-like interface for combiners, this
|
||||
// API should change to take a smart pointer that does pass ownership
|
||||
// of a reference.
|
||||
grpc_combiner* combiner = nullptr;
|
||||
/// Used to create channels and subchannels.
|
||||
grpc_client_channel_factory* client_channel_factory = nullptr;
|
||||
/// Channel args from the resolver.
|
||||
/// Note that the LB policy gets the set of addresses from the
|
||||
/// GRPC_ARG_LB_ADDRESSES channel arg.
|
||||
grpc_channel_args* args = nullptr;
|
||||
};
|
||||
|
||||
/// State used for an LB pick.
|
||||
struct PickState {
|
||||
/// Initial metadata associated with the picking call.
|
||||
grpc_metadata_batch* initial_metadata;
|
||||
/// Bitmask used for selective cancelling. See
|
||||
/// \a CancelMatchingPicksLocked() and \a GRPC_INITIAL_METADATA_* in
|
||||
/// grpc_types.h.
|
||||
uint32_t initial_metadata_flags;
|
||||
/// Storage for LB token in \a initial_metadata, or nullptr if not used.
|
||||
grpc_linked_mdelem lb_token_mdelem_storage;
|
||||
/// Closure to run when pick is complete, if not completed synchronously.
|
||||
/// If null, pick will fail if a result is not available synchronously.
|
||||
grpc_closure* on_complete;
|
||||
/// Will be set to the selected subchannel, or nullptr on failure or when
|
||||
/// the LB policy decides to drop the call.
|
||||
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
||||
/// Will be populated with context to pass to the subchannel call, if
|
||||
/// needed.
|
||||
grpc_call_context_element subchannel_call_context[GRPC_CONTEXT_COUNT];
|
||||
/// Upon success, \a *user_data will be set to whatever opaque information
|
||||
/// may need to be propagated from the LB policy, or nullptr if not needed.
|
||||
// TODO(roth): As part of revamping our metadata APIs, try to find a
|
||||
// way to clean this up and C++-ify it.
|
||||
void** user_data;
|
||||
/// Next pointer. For internal use by LB policy.
|
||||
PickState* next;
|
||||
};
|
||||
|
||||
// Not copyable nor movable.
|
||||
LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
|
||||
LoadBalancingPolicy& operator=(const LoadBalancingPolicy&) = delete;
|
||||
|
||||
/// Updates the policy with a new set of \a args from the resolver.
|
||||
/// Note that the LB policy gets the set of addresses from the
|
||||
/// GRPC_ARG_LB_ADDRESSES channel arg.
|
||||
virtual void UpdateLocked(const grpc_channel_args& args) GRPC_ABSTRACT;
|
||||
|
||||
/// Finds an appropriate subchannel for a call, based on data in \a pick.
|
||||
/// \a pick must remain alive until the pick is complete.
|
||||
///
|
||||
/// If a result is known immediately, returns true, setting \a *error
|
||||
/// upon failure. Otherwise, \a pick->on_complete will be invoked once
|
||||
/// the pick is complete with its error argument set to indicate success
|
||||
/// or failure.
|
||||
///
|
||||
/// If \a pick->on_complete is null and no result is known immediately,
|
||||
/// a synchronous failure will be returned (i.e., \a *error will be
|
||||
/// set and true will be returned).
|
||||
virtual bool PickLocked(PickState* pick, grpc_error** error) GRPC_ABSTRACT;
|
||||
|
||||
/// Cancels \a pick.
|
||||
/// The \a on_complete callback of the pending pick will be invoked with
|
||||
/// \a pick->connected_subchannel set to null.
|
||||
virtual void CancelPickLocked(PickState* pick,
|
||||
grpc_error* error) GRPC_ABSTRACT;
|
||||
|
||||
/// Cancels all pending picks for which their \a initial_metadata_flags (as
|
||||
/// given in the call to \a PickLocked()) matches
|
||||
/// \a initial_metadata_flags_eq when ANDed with
|
||||
/// \a initial_metadata_flags_mask.
|
||||
virtual void CancelMatchingPicksLocked(uint32_t initial_metadata_flags_mask,
|
||||
uint32_t initial_metadata_flags_eq,
|
||||
grpc_error* error) GRPC_ABSTRACT;
|
||||
|
||||
/// Requests a notification when the connectivity state of the policy
|
||||
/// changes from \a *state. When that happens, sets \a *state to the
|
||||
/// new state and schedules \a closure.
|
||||
virtual void NotifyOnStateChangeLocked(grpc_connectivity_state* state,
|
||||
grpc_closure* closure) GRPC_ABSTRACT;
|
||||
|
||||
/// Returns the policy's current connectivity state. Sets \a error to
|
||||
/// the associated error, if any.
|
||||
virtual grpc_connectivity_state CheckConnectivityLocked(
|
||||
grpc_error** connectivity_error) GRPC_ABSTRACT;
|
||||
|
||||
/// Hands off pending picks to \a new_policy.
|
||||
virtual void HandOffPendingPicksLocked(LoadBalancingPolicy* new_policy)
|
||||
GRPC_ABSTRACT;
|
||||
|
||||
/// Tries to enter a READY connectivity state.
|
||||
/// TODO(roth): As part of restructuring how we handle IDLE state,
|
||||
/// consider whether this method is still needed.
|
||||
virtual void ExitIdleLocked() GRPC_ABSTRACT;
|
||||
|
||||
/// Resets connection backoff.
|
||||
virtual void ResetBackoffLocked() GRPC_ABSTRACT;
|
||||
|
||||
/// Populates child_subchannels and child_channels with the uuids of this
|
||||
/// LB policy's referenced children. This is not invoked from the
|
||||
/// client_channel's combiner. The implementation is responsible for
|
||||
/// providing its own synchronization.
|
||||
virtual void FillChildRefsForChannelz(ChildRefsList* child_subchannels,
|
||||
ChildRefsList* child_channels)
|
||||
GRPC_ABSTRACT;
|
||||
|
||||
void Orphan() override {
|
||||
// Invoke ShutdownAndUnrefLocked() inside of the combiner.
|
||||
GRPC_CLOSURE_SCHED(
|
||||
GRPC_CLOSURE_CREATE(&LoadBalancingPolicy::ShutdownAndUnrefLocked, this,
|
||||
grpc_combiner_scheduler(combiner_)),
|
||||
GRPC_ERROR_NONE);
|
||||
}
|
||||
|
||||
/// Sets the re-resolution closure to \a request_reresolution.
|
||||
void SetReresolutionClosureLocked(grpc_closure* request_reresolution) {
|
||||
GPR_ASSERT(request_reresolution_ == nullptr);
|
||||
request_reresolution_ = request_reresolution;
|
||||
}
|
||||
|
||||
grpc_pollset_set* interested_parties() const { return interested_parties_; }
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
|
||||
protected:
|
||||
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
||||
|
||||
explicit LoadBalancingPolicy(const Args& args);
|
||||
virtual ~LoadBalancingPolicy();
|
||||
|
||||
grpc_combiner* combiner() const { return combiner_; }
|
||||
grpc_client_channel_factory* client_channel_factory() const {
|
||||
return client_channel_factory_;
|
||||
}
|
||||
|
||||
/// Shuts down the policy. Any pending picks that have not been
|
||||
/// handed off to a new policy via HandOffPendingPicksLocked() will be
|
||||
/// failed.
|
||||
virtual void ShutdownLocked() GRPC_ABSTRACT;
|
||||
|
||||
/// Tries to request a re-resolution.
|
||||
void TryReresolutionLocked(grpc_core::TraceFlag* grpc_lb_trace,
|
||||
grpc_error* error);
|
||||
|
||||
private:
|
||||
static void ShutdownAndUnrefLocked(void* arg, grpc_error* ignored) {
|
||||
LoadBalancingPolicy* policy = static_cast<LoadBalancingPolicy*>(arg);
|
||||
policy->ShutdownLocked();
|
||||
policy->Unref();
|
||||
}
|
||||
|
||||
/// Combiner under which LB policy actions take place.
|
||||
grpc_combiner* combiner_;
|
||||
/// Client channel factory, used to create channels and subchannels.
|
||||
grpc_client_channel_factory* client_channel_factory_;
|
||||
/// Owned pointer to interested parties in load balancing decisions.
|
||||
grpc_pollset_set* interested_parties_;
|
||||
/// Callback to force a re-resolution.
|
||||
grpc_closure* request_reresolution_;
|
||||
|
||||
// Dummy classes needed for alignment issues.
|
||||
// See https://github.com/grpc/grpc/issues/16032 for context.
|
||||
// TODO(ncteisen): remove this as soon as the issue is resolved.
|
||||
ChildRefsList dummy_list_foo;
|
||||
ChildRefsList dummy_list_bar;
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H */
|
||||
29
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
generated
vendored
Normal file
29
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_CLIENT_LOAD_REPORTING_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_CLIENT_LOAD_REPORTING_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
extern const grpc_channel_filter grpc_client_load_reporting_filter;
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_CLIENT_LOAD_REPORTING_FILTER_H \
|
||||
*/
|
||||
36
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
generated
vendored
Normal file
36
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
/** Channel arg indicating if a target corresponding to the address is grpclb
|
||||
* loadbalancer. The type of this arg is an integer and the value is treated as
|
||||
* a bool. */
|
||||
#define GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER \
|
||||
"grpc.address_is_grpclb_load_balancer"
|
||||
/** Channel arg indicating if a target corresponding to the address is a backend
|
||||
* received from a balancer. The type of this arg is an integer and the value is
|
||||
* treated as a bool. */
|
||||
#define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER \
|
||||
"grpc.address_is_backend_from_grpclb_load_balancer"
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H \
|
||||
*/
|
||||
36
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
generated
vendored
Normal file
36
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CHANNEL_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CHANNEL_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
||||
|
||||
/// Makes any necessary modifications to \a args for use in the grpclb
|
||||
/// balancer channel.
|
||||
///
|
||||
/// Takes ownership of \a args.
|
||||
///
|
||||
/// Caller takes ownership of the returned args.
|
||||
grpc_channel_args* grpc_lb_policy_grpclb_modify_lb_channel_args(
|
||||
grpc_channel_args* args);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CHANNEL_H \
|
||||
*/
|
||||
72
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
generated
vendored
Normal file
72
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CLIENT_STATS_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CLIENT_STATS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/support/atm.h>
|
||||
|
||||
#include "src/core/lib/gprpp/inlined_vector.h"
|
||||
#include "src/core/lib/gprpp/memory.h"
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class GrpcLbClientStats : public RefCounted<GrpcLbClientStats> {
|
||||
public:
|
||||
struct DropTokenCount {
|
||||
UniquePtr<char> token;
|
||||
int64_t count;
|
||||
|
||||
DropTokenCount(UniquePtr<char> token, int64_t count)
|
||||
: token(std::move(token)), count(count) {}
|
||||
};
|
||||
|
||||
typedef InlinedVector<DropTokenCount, 10> DroppedCallCounts;
|
||||
|
||||
GrpcLbClientStats() {}
|
||||
|
||||
void AddCallStarted();
|
||||
void AddCallFinished(bool finished_with_client_failed_to_send,
|
||||
bool finished_known_received);
|
||||
|
||||
// This method is not thread-safe; caller must synchronize.
|
||||
void AddCallDroppedLocked(char* token);
|
||||
|
||||
// This method is not thread-safe; caller must synchronize.
|
||||
void GetLocked(int64_t* num_calls_started, int64_t* num_calls_finished,
|
||||
int64_t* num_calls_finished_with_client_failed_to_send,
|
||||
int64_t* num_calls_finished_known_received,
|
||||
UniquePtr<DroppedCallCounts>* drop_token_counts);
|
||||
|
||||
private:
|
||||
// This field must only be accessed via *_locked() methods.
|
||||
UniquePtr<DroppedCallCounts> drop_token_counts_;
|
||||
// These fields may be accessed from multiple threads at a time.
|
||||
gpr_atm num_calls_started_ = 0;
|
||||
gpr_atm num_calls_finished_ = 0;
|
||||
gpr_atm num_calls_finished_with_client_failed_to_send_ = 0;
|
||||
gpr_atm num_calls_finished_known_received_ = 0;
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_CLIENT_STATS_H \
|
||||
*/
|
||||
90
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
generated
vendored
Normal file
90
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/slice_buffer.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
||||
|
||||
#define GRPC_GRPCLB_SERVICE_NAME_MAX_LENGTH 128
|
||||
|
||||
typedef grpc_lb_v1_Server_ip_address_t grpc_grpclb_ip_address;
|
||||
typedef grpc_lb_v1_LoadBalanceRequest grpc_grpclb_request;
|
||||
typedef grpc_lb_v1_InitialLoadBalanceResponse grpc_grpclb_initial_response;
|
||||
typedef grpc_lb_v1_Server grpc_grpclb_server;
|
||||
typedef google_protobuf_Duration grpc_grpclb_duration;
|
||||
typedef google_protobuf_Timestamp grpc_grpclb_timestamp;
|
||||
|
||||
typedef struct {
|
||||
grpc_grpclb_server** servers;
|
||||
size_t num_servers;
|
||||
} grpc_grpclb_serverlist;
|
||||
|
||||
/** Create a request for a gRPC LB service under \a lb_service_name */
|
||||
grpc_grpclb_request* grpc_grpclb_request_create(const char* lb_service_name);
|
||||
grpc_grpclb_request* grpc_grpclb_load_report_request_create_locked(
|
||||
grpc_core::GrpcLbClientStats* client_stats);
|
||||
|
||||
/** Protocol Buffers v3-encode \a request */
|
||||
grpc_slice grpc_grpclb_request_encode(const grpc_grpclb_request* request);
|
||||
|
||||
/** Destroy \a request */
|
||||
void grpc_grpclb_request_destroy(grpc_grpclb_request* request);
|
||||
|
||||
/** Parse (ie, decode) the bytes in \a encoded_grpc_grpclb_response as a \a
|
||||
* grpc_grpclb_initial_response */
|
||||
grpc_grpclb_initial_response* grpc_grpclb_initial_response_parse(
|
||||
grpc_slice encoded_grpc_grpclb_response);
|
||||
|
||||
/** Parse the list of servers from an encoded \a grpc_grpclb_response */
|
||||
grpc_grpclb_serverlist* grpc_grpclb_response_parse_serverlist(
|
||||
grpc_slice encoded_grpc_grpclb_response);
|
||||
|
||||
/** Return a copy of \a sl. The caller is responsible for calling \a
|
||||
* grpc_grpclb_destroy_serverlist on the returned copy. */
|
||||
grpc_grpclb_serverlist* grpc_grpclb_serverlist_copy(
|
||||
const grpc_grpclb_serverlist* sl);
|
||||
|
||||
bool grpc_grpclb_serverlist_equals(const grpc_grpclb_serverlist* lhs,
|
||||
const grpc_grpclb_serverlist* rhs);
|
||||
|
||||
bool grpc_grpclb_server_equals(const grpc_grpclb_server* lhs,
|
||||
const grpc_grpclb_server* rhs);
|
||||
|
||||
/** Destroy \a serverlist */
|
||||
void grpc_grpclb_destroy_serverlist(grpc_grpclb_serverlist* serverlist);
|
||||
|
||||
/** Compare \a lhs against \a rhs and return 0 if \a lhs and \a rhs are equal,
|
||||
* < 0 if \a lhs represents a duration shorter than \a rhs and > 0 otherwise */
|
||||
int grpc_grpclb_duration_compare(const grpc_grpclb_duration* lhs,
|
||||
const grpc_grpclb_duration* rhs);
|
||||
|
||||
grpc_millis grpc_grpclb_duration_to_millis(grpc_grpclb_duration* duration_pb);
|
||||
|
||||
/** Destroy \a initial_response */
|
||||
void grpc_grpclb_initial_response_destroy(
|
||||
grpc_grpclb_initial_response* response);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H \
|
||||
*/
|
||||
19
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c
generated
vendored
Normal file
19
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Automatically generated nanopb constant definitions */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
const pb_field_t google_protobuf_Duration_fields[3] = {
|
||||
PB_FIELD( 1, INT64 , OPTIONAL, STATIC , FIRST, google_protobuf_Duration, seconds, seconds, 0),
|
||||
PB_FIELD( 2, INT32 , OPTIONAL, STATIC , OTHER, google_protobuf_Duration, nanos, seconds, 0),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h
generated
vendored
Normal file
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/* Automatically generated nanopb header */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#ifndef PB_GOOGLE_PROTOBUF_DURATION_PB_H_INCLUDED
|
||||
#define PB_GOOGLE_PROTOBUF_DURATION_PB_H_INCLUDED
|
||||
#include "pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _google_protobuf_Duration {
|
||||
bool has_seconds;
|
||||
int64_t seconds;
|
||||
bool has_nanos;
|
||||
int32_t nanos;
|
||||
/* @@protoc_insertion_point(struct:google_protobuf_Duration) */
|
||||
} google_protobuf_Duration;
|
||||
|
||||
/* Default values for struct fields */
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define google_protobuf_Duration_init_default {false, 0, false, 0}
|
||||
#define google_protobuf_Duration_init_zero {false, 0, false, 0}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define google_protobuf_Duration_seconds_tag 1
|
||||
#define google_protobuf_Duration_nanos_tag 2
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
extern const pb_field_t google_protobuf_Duration_fields[3];
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define google_protobuf_Duration_size 22
|
||||
|
||||
/* Message IDs (where set with "msgid" option) */
|
||||
#ifdef PB_MSGID
|
||||
|
||||
#define DURATION_MESSAGES \
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
|
||||
#endif
|
||||
19
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c
generated
vendored
Normal file
19
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Automatically generated nanopb constant definitions */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
const pb_field_t google_protobuf_Timestamp_fields[3] = {
|
||||
PB_FIELD( 1, INT64 , OPTIONAL, STATIC , FIRST, google_protobuf_Timestamp, seconds, seconds, 0),
|
||||
PB_FIELD( 2, INT32 , OPTIONAL, STATIC , OTHER, google_protobuf_Timestamp, nanos, seconds, 0),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h
generated
vendored
Normal file
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/* Automatically generated nanopb header */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#ifndef PB_GOOGLE_PROTOBUF_TIMESTAMP_PB_H_INCLUDED
|
||||
#define PB_GOOGLE_PROTOBUF_TIMESTAMP_PB_H_INCLUDED
|
||||
#include "pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _google_protobuf_Timestamp {
|
||||
bool has_seconds;
|
||||
int64_t seconds;
|
||||
bool has_nanos;
|
||||
int32_t nanos;
|
||||
/* @@protoc_insertion_point(struct:google_protobuf_Timestamp) */
|
||||
} google_protobuf_Timestamp;
|
||||
|
||||
/* Default values for struct fields */
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define google_protobuf_Timestamp_init_default {false, 0, false, 0}
|
||||
#define google_protobuf_Timestamp_init_zero {false, 0, false, 0}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define google_protobuf_Timestamp_seconds_tag 1
|
||||
#define google_protobuf_Timestamp_nanos_tag 2
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
extern const pb_field_t google_protobuf_Timestamp_fields[3];
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define google_protobuf_Timestamp_size 22
|
||||
|
||||
/* Message IDs (where set with "msgid" option) */
|
||||
#ifdef PB_MSGID
|
||||
|
||||
#define TIMESTAMP_MESSAGES \
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
|
||||
#endif
|
||||
89
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
generated
vendored
Normal file
89
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
/* Automatically generated nanopb constant definitions */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
const pb_field_t grpc_lb_v1_LoadBalanceRequest_fields[3] = {
|
||||
PB_FIELD( 1, MESSAGE , OPTIONAL, STATIC , FIRST, grpc_lb_v1_LoadBalanceRequest, initial_request, initial_request, &grpc_lb_v1_InitialLoadBalanceRequest_fields),
|
||||
PB_FIELD( 2, MESSAGE , OPTIONAL, STATIC , OTHER, grpc_lb_v1_LoadBalanceRequest, client_stats, initial_request, &grpc_lb_v1_ClientStats_fields),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_InitialLoadBalanceRequest_fields[2] = {
|
||||
PB_FIELD( 1, STRING , OPTIONAL, STATIC , FIRST, grpc_lb_v1_InitialLoadBalanceRequest, name, name, 0),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_ClientStatsPerToken_fields[3] = {
|
||||
PB_FIELD( 1, STRING , OPTIONAL, CALLBACK, FIRST, grpc_lb_v1_ClientStatsPerToken, load_balance_token, load_balance_token, 0),
|
||||
PB_FIELD( 2, INT64 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_ClientStatsPerToken, num_calls, load_balance_token, 0),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_ClientStats_fields[7] = {
|
||||
PB_FIELD( 1, MESSAGE , OPTIONAL, STATIC , FIRST, grpc_lb_v1_ClientStats, timestamp, timestamp, &google_protobuf_Timestamp_fields),
|
||||
PB_FIELD( 2, INT64 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_ClientStats, num_calls_started, timestamp, 0),
|
||||
PB_FIELD( 3, INT64 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_ClientStats, num_calls_finished, num_calls_started, 0),
|
||||
PB_FIELD( 6, INT64 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_ClientStats, num_calls_finished_with_client_failed_to_send, num_calls_finished, 0),
|
||||
PB_FIELD( 7, INT64 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_ClientStats, num_calls_finished_known_received, num_calls_finished_with_client_failed_to_send, 0),
|
||||
PB_FIELD( 8, MESSAGE , REPEATED, CALLBACK, OTHER, grpc_lb_v1_ClientStats, calls_finished_with_drop, num_calls_finished_known_received, &grpc_lb_v1_ClientStatsPerToken_fields),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_LoadBalanceResponse_fields[3] = {
|
||||
PB_FIELD( 1, MESSAGE , OPTIONAL, STATIC , FIRST, grpc_lb_v1_LoadBalanceResponse, initial_response, initial_response, &grpc_lb_v1_InitialLoadBalanceResponse_fields),
|
||||
PB_FIELD( 2, MESSAGE , OPTIONAL, STATIC , OTHER, grpc_lb_v1_LoadBalanceResponse, server_list, initial_response, &grpc_lb_v1_ServerList_fields),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_InitialLoadBalanceResponse_fields[3] = {
|
||||
PB_FIELD( 1, STRING , OPTIONAL, STATIC , FIRST, grpc_lb_v1_InitialLoadBalanceResponse, load_balancer_delegate, load_balancer_delegate, 0),
|
||||
PB_FIELD( 2, MESSAGE , OPTIONAL, STATIC , OTHER, grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval, load_balancer_delegate, &google_protobuf_Duration_fields),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_ServerList_fields[2] = {
|
||||
PB_FIELD( 1, MESSAGE , REPEATED, CALLBACK, FIRST, grpc_lb_v1_ServerList, servers, servers, &grpc_lb_v1_Server_fields),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
const pb_field_t grpc_lb_v1_Server_fields[5] = {
|
||||
PB_FIELD( 1, BYTES , OPTIONAL, STATIC , FIRST, grpc_lb_v1_Server, ip_address, ip_address, 0),
|
||||
PB_FIELD( 2, INT32 , OPTIONAL, STATIC , OTHER, grpc_lb_v1_Server, port, ip_address, 0),
|
||||
PB_FIELD( 3, STRING , OPTIONAL, STATIC , OTHER, grpc_lb_v1_Server, load_balance_token, port, 0),
|
||||
PB_FIELD( 4, BOOL , OPTIONAL, STATIC , OTHER, grpc_lb_v1_Server, drop, load_balance_token, 0),
|
||||
PB_LAST_FIELD
|
||||
};
|
||||
|
||||
|
||||
/* Check that field information fits in pb_field_t */
|
||||
#if !defined(PB_FIELD_32BIT)
|
||||
/* If you get an error here, it means that you need to define PB_FIELD_32BIT
|
||||
* compile-time option. You can do that in pb.h or on compiler command line.
|
||||
*
|
||||
* The reason you need to do this is that some of your messages contain tag
|
||||
* numbers or field sizes that are larger than what can fit in 8 or 16 bit
|
||||
* field descriptors.
|
||||
*/
|
||||
PB_STATIC_ASSERT((pb_membersize(grpc_lb_v1_LoadBalanceRequest, initial_request) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceRequest, client_stats) < 65536 && pb_membersize(grpc_lb_v1_ClientStats, timestamp) < 65536 && pb_membersize(grpc_lb_v1_ClientStats, calls_finished_with_drop) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, initial_response) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, server_list) < 65536 && pb_membersize(grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval) < 65536 && pb_membersize(grpc_lb_v1_ServerList, servers) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_grpc_lb_v1_LoadBalanceRequest_grpc_lb_v1_InitialLoadBalanceRequest_grpc_lb_v1_ClientStatsPerToken_grpc_lb_v1_ClientStats_grpc_lb_v1_LoadBalanceResponse_grpc_lb_v1_InitialLoadBalanceResponse_grpc_lb_v1_ServerList_grpc_lb_v1_Server)
|
||||
#endif
|
||||
|
||||
#if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT)
|
||||
/* If you get an error here, it means that you need to define PB_FIELD_16BIT
|
||||
* compile-time option. You can do that in pb.h or on compiler command line.
|
||||
*
|
||||
* The reason you need to do this is that some of your messages contain tag
|
||||
* numbers or field sizes that are larger than what can fit in the default
|
||||
* 8 bit descriptors.
|
||||
*/
|
||||
PB_STATIC_ASSERT((pb_membersize(grpc_lb_v1_LoadBalanceRequest, initial_request) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceRequest, client_stats) < 256 && pb_membersize(grpc_lb_v1_ClientStats, timestamp) < 256 && pb_membersize(grpc_lb_v1_ClientStats, calls_finished_with_drop) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, initial_response) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, server_list) < 256 && pb_membersize(grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval) < 256 && pb_membersize(grpc_lb_v1_ServerList, servers) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_grpc_lb_v1_LoadBalanceRequest_grpc_lb_v1_InitialLoadBalanceRequest_grpc_lb_v1_ClientStatsPerToken_grpc_lb_v1_ClientStats_grpc_lb_v1_LoadBalanceResponse_grpc_lb_v1_InitialLoadBalanceResponse_grpc_lb_v1_ServerList_grpc_lb_v1_Server)
|
||||
#endif
|
||||
|
||||
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
164
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
generated
vendored
Normal file
164
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
/* Automatically generated nanopb header */
|
||||
/* Generated by nanopb-0.3.7-dev */
|
||||
|
||||
#ifndef PB_GRPC_LB_V1_LOAD_BALANCER_PB_H_INCLUDED
|
||||
#define PB_GRPC_LB_V1_LOAD_BALANCER_PB_H_INCLUDED
|
||||
#include "pb.h"
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h"
|
||||
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h"
|
||||
/* @@protoc_insertion_point(includes) */
|
||||
#if PB_PROTO_HEADER_VERSION != 30
|
||||
#error Regenerate this file with the current version of nanopb generator.
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _grpc_lb_v1_ServerList {
|
||||
pb_callback_t servers;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_ServerList) */
|
||||
} grpc_lb_v1_ServerList;
|
||||
|
||||
typedef struct _grpc_lb_v1_ClientStats {
|
||||
bool has_timestamp;
|
||||
google_protobuf_Timestamp timestamp;
|
||||
bool has_num_calls_started;
|
||||
int64_t num_calls_started;
|
||||
bool has_num_calls_finished;
|
||||
int64_t num_calls_finished;
|
||||
bool has_num_calls_finished_with_client_failed_to_send;
|
||||
int64_t num_calls_finished_with_client_failed_to_send;
|
||||
bool has_num_calls_finished_known_received;
|
||||
int64_t num_calls_finished_known_received;
|
||||
pb_callback_t calls_finished_with_drop;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_ClientStats) */
|
||||
} grpc_lb_v1_ClientStats;
|
||||
|
||||
typedef struct _grpc_lb_v1_ClientStatsPerToken {
|
||||
pb_callback_t load_balance_token;
|
||||
bool has_num_calls;
|
||||
int64_t num_calls;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_ClientStatsPerToken) */
|
||||
} grpc_lb_v1_ClientStatsPerToken;
|
||||
|
||||
typedef struct _grpc_lb_v1_InitialLoadBalanceRequest {
|
||||
bool has_name;
|
||||
char name[128];
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_InitialLoadBalanceRequest) */
|
||||
} grpc_lb_v1_InitialLoadBalanceRequest;
|
||||
|
||||
typedef struct _grpc_lb_v1_InitialLoadBalanceResponse {
|
||||
bool has_load_balancer_delegate;
|
||||
char load_balancer_delegate[64];
|
||||
bool has_client_stats_report_interval;
|
||||
google_protobuf_Duration client_stats_report_interval;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_InitialLoadBalanceResponse) */
|
||||
} grpc_lb_v1_InitialLoadBalanceResponse;
|
||||
|
||||
typedef PB_BYTES_ARRAY_T(16) grpc_lb_v1_Server_ip_address_t;
|
||||
typedef struct _grpc_lb_v1_Server {
|
||||
bool has_ip_address;
|
||||
grpc_lb_v1_Server_ip_address_t ip_address;
|
||||
bool has_port;
|
||||
int32_t port;
|
||||
bool has_load_balance_token;
|
||||
char load_balance_token[50];
|
||||
bool has_drop;
|
||||
bool drop;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_Server) */
|
||||
} grpc_lb_v1_Server;
|
||||
|
||||
typedef struct _grpc_lb_v1_LoadBalanceRequest {
|
||||
bool has_initial_request;
|
||||
grpc_lb_v1_InitialLoadBalanceRequest initial_request;
|
||||
bool has_client_stats;
|
||||
grpc_lb_v1_ClientStats client_stats;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_LoadBalanceRequest) */
|
||||
} grpc_lb_v1_LoadBalanceRequest;
|
||||
|
||||
typedef struct _grpc_lb_v1_LoadBalanceResponse {
|
||||
bool has_initial_response;
|
||||
grpc_lb_v1_InitialLoadBalanceResponse initial_response;
|
||||
bool has_server_list;
|
||||
grpc_lb_v1_ServerList server_list;
|
||||
/* @@protoc_insertion_point(struct:grpc_lb_v1_LoadBalanceResponse) */
|
||||
} grpc_lb_v1_LoadBalanceResponse;
|
||||
|
||||
/* Default values for struct fields */
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define grpc_lb_v1_LoadBalanceRequest_init_default {false, grpc_lb_v1_InitialLoadBalanceRequest_init_default, false, grpc_lb_v1_ClientStats_init_default}
|
||||
#define grpc_lb_v1_InitialLoadBalanceRequest_init_default {false, ""}
|
||||
#define grpc_lb_v1_ClientStatsPerToken_init_default {{{NULL}, NULL}, false, 0}
|
||||
#define grpc_lb_v1_ClientStats_init_default {false, google_protobuf_Timestamp_init_default, false, 0, false, 0, false, 0, false, 0, {{NULL}, NULL}}
|
||||
#define grpc_lb_v1_LoadBalanceResponse_init_default {false, grpc_lb_v1_InitialLoadBalanceResponse_init_default, false, grpc_lb_v1_ServerList_init_default}
|
||||
#define grpc_lb_v1_InitialLoadBalanceResponse_init_default {false, "", false, google_protobuf_Duration_init_default}
|
||||
#define grpc_lb_v1_ServerList_init_default {{{NULL}, NULL}}
|
||||
#define grpc_lb_v1_Server_init_default {false, {0, {0}}, false, 0, false, "", false, 0}
|
||||
#define grpc_lb_v1_LoadBalanceRequest_init_zero {false, grpc_lb_v1_InitialLoadBalanceRequest_init_zero, false, grpc_lb_v1_ClientStats_init_zero}
|
||||
#define grpc_lb_v1_InitialLoadBalanceRequest_init_zero {false, ""}
|
||||
#define grpc_lb_v1_ClientStatsPerToken_init_zero {{{NULL}, NULL}, false, 0}
|
||||
#define grpc_lb_v1_ClientStats_init_zero {false, google_protobuf_Timestamp_init_zero, false, 0, false, 0, false, 0, false, 0, {{NULL}, NULL}}
|
||||
#define grpc_lb_v1_LoadBalanceResponse_init_zero {false, grpc_lb_v1_InitialLoadBalanceResponse_init_zero, false, grpc_lb_v1_ServerList_init_zero}
|
||||
#define grpc_lb_v1_InitialLoadBalanceResponse_init_zero {false, "", false, google_protobuf_Duration_init_zero}
|
||||
#define grpc_lb_v1_ServerList_init_zero {{{NULL}, NULL}}
|
||||
#define grpc_lb_v1_Server_init_zero {false, {0, {0}}, false, 0, false, "", false, 0}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define grpc_lb_v1_ServerList_servers_tag 1
|
||||
#define grpc_lb_v1_ClientStats_timestamp_tag 1
|
||||
#define grpc_lb_v1_ClientStats_num_calls_started_tag 2
|
||||
#define grpc_lb_v1_ClientStats_num_calls_finished_tag 3
|
||||
#define grpc_lb_v1_ClientStats_num_calls_finished_with_client_failed_to_send_tag 6
|
||||
#define grpc_lb_v1_ClientStats_num_calls_finished_known_received_tag 7
|
||||
#define grpc_lb_v1_ClientStats_calls_finished_with_drop_tag 8
|
||||
#define grpc_lb_v1_ClientStatsPerToken_load_balance_token_tag 1
|
||||
#define grpc_lb_v1_ClientStatsPerToken_num_calls_tag 2
|
||||
#define grpc_lb_v1_InitialLoadBalanceRequest_name_tag 1
|
||||
#define grpc_lb_v1_InitialLoadBalanceResponse_load_balancer_delegate_tag 1
|
||||
#define grpc_lb_v1_InitialLoadBalanceResponse_client_stats_report_interval_tag 2
|
||||
#define grpc_lb_v1_Server_ip_address_tag 1
|
||||
#define grpc_lb_v1_Server_port_tag 2
|
||||
#define grpc_lb_v1_Server_load_balance_token_tag 3
|
||||
#define grpc_lb_v1_Server_drop_tag 4
|
||||
#define grpc_lb_v1_LoadBalanceRequest_initial_request_tag 1
|
||||
#define grpc_lb_v1_LoadBalanceRequest_client_stats_tag 2
|
||||
#define grpc_lb_v1_LoadBalanceResponse_initial_response_tag 1
|
||||
#define grpc_lb_v1_LoadBalanceResponse_server_list_tag 2
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
extern const pb_field_t grpc_lb_v1_LoadBalanceRequest_fields[3];
|
||||
extern const pb_field_t grpc_lb_v1_InitialLoadBalanceRequest_fields[2];
|
||||
extern const pb_field_t grpc_lb_v1_ClientStatsPerToken_fields[3];
|
||||
extern const pb_field_t grpc_lb_v1_ClientStats_fields[7];
|
||||
extern const pb_field_t grpc_lb_v1_LoadBalanceResponse_fields[3];
|
||||
extern const pb_field_t grpc_lb_v1_InitialLoadBalanceResponse_fields[3];
|
||||
extern const pb_field_t grpc_lb_v1_ServerList_fields[2];
|
||||
extern const pb_field_t grpc_lb_v1_Server_fields[5];
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
#define grpc_lb_v1_LoadBalanceRequest_size (140 + grpc_lb_v1_ClientStats_size)
|
||||
#define grpc_lb_v1_InitialLoadBalanceRequest_size 131
|
||||
/* grpc_lb_v1_ClientStatsPerToken_size depends on runtime parameters */
|
||||
/* grpc_lb_v1_ClientStats_size depends on runtime parameters */
|
||||
#define grpc_lb_v1_LoadBalanceResponse_size (98 + grpc_lb_v1_ServerList_size)
|
||||
#define grpc_lb_v1_InitialLoadBalanceResponse_size 90
|
||||
/* grpc_lb_v1_ServerList_size depends on runtime parameters */
|
||||
#define grpc_lb_v1_Server_size 83
|
||||
|
||||
/* Message IDs (where set with "msgid" option) */
|
||||
#ifdef PB_MSGID
|
||||
|
||||
#define LOAD_BALANCER_MESSAGES \
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
/* @@protoc_insertion_point(eof) */
|
||||
|
||||
#endif
|
||||
576
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
generated
vendored
Normal file
576
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
generated
vendored
Normal file
@@ -0,0 +1,576 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <grpc/support/alloc.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
||||
#include "src/core/ext/filters/client_channel/subchannel.h"
|
||||
#include "src/core/lib/channel/channel_args.h"
|
||||
#include "src/core/lib/debug/trace.h"
|
||||
#include "src/core/lib/gprpp/abstract.h"
|
||||
#include "src/core/lib/gprpp/inlined_vector.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
||||
#include "src/core/lib/iomgr/closure.h"
|
||||
#include "src/core/lib/iomgr/combiner.h"
|
||||
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
||||
#include "src/core/lib/transport/connectivity_state.h"
|
||||
|
||||
// Code for maintaining a list of subchannels within an LB policy.
|
||||
//
|
||||
// To use this, callers must create their own subclasses, like so:
|
||||
/*
|
||||
|
||||
class MySubchannelList; // Forward declaration.
|
||||
|
||||
class MySubchannelData
|
||||
: public SubchannelData<MySubchannelList, MySubchannelData> {
|
||||
public:
|
||||
void ProcessConnectivityChangeLocked(
|
||||
grpc_connectivity_state connectivity_state, grpc_error* error) override {
|
||||
// ...code to handle connectivity changes...
|
||||
}
|
||||
};
|
||||
|
||||
class MySubchannelList
|
||||
: public SubchannelList<MySubchannelList, MySubchannelData> {
|
||||
};
|
||||
|
||||
*/
|
||||
// All methods with a Locked() suffix must be called from within the
|
||||
// client_channel combiner.
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
// Stores data for a particular subchannel in a subchannel list.
|
||||
// Callers must create a subclass that implements the
|
||||
// ProcessConnectivityChangeLocked() method.
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
class SubchannelData {
|
||||
public:
|
||||
// Returns a pointer to the subchannel list containing this object.
|
||||
SubchannelListType* subchannel_list() const { return subchannel_list_; }
|
||||
|
||||
// Returns the index into the subchannel list of this object.
|
||||
size_t Index() const {
|
||||
return static_cast<size_t>(static_cast<const SubchannelDataType*>(this) -
|
||||
subchannel_list_->subchannel(0));
|
||||
}
|
||||
|
||||
// Returns a pointer to the subchannel.
|
||||
grpc_subchannel* subchannel() const { return subchannel_; }
|
||||
|
||||
// Returns the connected subchannel. Will be null if the subchannel
|
||||
// is not connected.
|
||||
ConnectedSubchannel* connected_subchannel() const {
|
||||
return connected_subchannel_.get();
|
||||
}
|
||||
|
||||
// Synchronously checks the subchannel's connectivity state.
|
||||
// Must not be called while there is a connectivity notification
|
||||
// pending (i.e., between calling StartConnectivityWatchLocked() or
|
||||
// RenewConnectivityWatchLocked() and the resulting invocation of
|
||||
// ProcessConnectivityChangeLocked()).
|
||||
grpc_connectivity_state CheckConnectivityStateLocked(grpc_error** error) {
|
||||
GPR_ASSERT(!connectivity_notification_pending_);
|
||||
pending_connectivity_state_unsafe_ =
|
||||
grpc_subchannel_check_connectivity(subchannel(), error);
|
||||
UpdateConnectedSubchannelLocked();
|
||||
return pending_connectivity_state_unsafe_;
|
||||
}
|
||||
|
||||
// Unrefs the subchannel. May be used if an individual subchannel is
|
||||
// no longer needed even though the subchannel list as a whole is not
|
||||
// being unreffed.
|
||||
virtual void UnrefSubchannelLocked(const char* reason);
|
||||
|
||||
// Resets the connection backoff.
|
||||
// TODO(roth): This method should go away when we move the backoff
|
||||
// code out of the subchannel and into the LB policies.
|
||||
void ResetBackoffLocked();
|
||||
|
||||
// Starts watching the connectivity state of the subchannel.
|
||||
// ProcessConnectivityChangeLocked() will be called when the
|
||||
// connectivity state changes.
|
||||
void StartConnectivityWatchLocked();
|
||||
|
||||
// Renews watching the connectivity state of the subchannel.
|
||||
void RenewConnectivityWatchLocked();
|
||||
|
||||
// Stops watching the connectivity state of the subchannel.
|
||||
void StopConnectivityWatchLocked();
|
||||
|
||||
// Cancels watching the connectivity state of the subchannel.
|
||||
// Must be called only while there is a connectivity notification
|
||||
// pending (i.e., between calling StartConnectivityWatchLocked() or
|
||||
// RenewConnectivityWatchLocked() and the resulting invocation of
|
||||
// ProcessConnectivityChangeLocked()).
|
||||
// From within ProcessConnectivityChangeLocked(), use
|
||||
// StopConnectivityWatchLocked() instead.
|
||||
void CancelConnectivityWatchLocked(const char* reason);
|
||||
|
||||
// Cancels any pending connectivity watch and unrefs the subchannel.
|
||||
void ShutdownLocked();
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
|
||||
protected:
|
||||
SubchannelData(SubchannelListType* subchannel_list,
|
||||
const grpc_lb_user_data_vtable* user_data_vtable,
|
||||
const grpc_lb_address& address, grpc_subchannel* subchannel,
|
||||
grpc_combiner* combiner);
|
||||
|
||||
virtual ~SubchannelData();
|
||||
|
||||
// After StartConnectivityWatchLocked() or RenewConnectivityWatchLocked()
|
||||
// is called, this method will be invoked when the subchannel's connectivity
|
||||
// state changes.
|
||||
// Implementations must invoke either RenewConnectivityWatchLocked() or
|
||||
// StopConnectivityWatchLocked() before returning.
|
||||
virtual void ProcessConnectivityChangeLocked(
|
||||
grpc_connectivity_state connectivity_state,
|
||||
grpc_error* error) GRPC_ABSTRACT;
|
||||
|
||||
private:
|
||||
// Updates connected_subchannel_ based on pending_connectivity_state_unsafe_.
|
||||
// Returns true if the connectivity state should be reported.
|
||||
bool UpdateConnectedSubchannelLocked();
|
||||
|
||||
static void OnConnectivityChangedLocked(void* arg, grpc_error* error);
|
||||
|
||||
// Backpointer to owning subchannel list. Not owned.
|
||||
SubchannelListType* subchannel_list_;
|
||||
|
||||
// The subchannel and connected subchannel.
|
||||
grpc_subchannel* subchannel_;
|
||||
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
||||
|
||||
// Notification that connectivity has changed on subchannel.
|
||||
grpc_closure connectivity_changed_closure_;
|
||||
// Is a connectivity notification pending?
|
||||
bool connectivity_notification_pending_ = false;
|
||||
// Connectivity state to be updated by
|
||||
// grpc_subchannel_notify_on_state_change(), not guarded by
|
||||
// the combiner.
|
||||
grpc_connectivity_state pending_connectivity_state_unsafe_;
|
||||
};
|
||||
|
||||
// A list of subchannels.
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
class SubchannelList
|
||||
: public InternallyRefCountedWithTracing<SubchannelListType> {
|
||||
public:
|
||||
typedef InlinedVector<SubchannelDataType, 10> SubchannelVector;
|
||||
|
||||
// The number of subchannels in the list.
|
||||
size_t num_subchannels() const { return subchannels_.size(); }
|
||||
|
||||
// The data for the subchannel at a particular index.
|
||||
SubchannelDataType* subchannel(size_t index) { return &subchannels_[index]; }
|
||||
|
||||
// Returns true if the subchannel list is shutting down.
|
||||
bool shutting_down() const { return shutting_down_; }
|
||||
|
||||
// Populates refs_list with the uuids of this SubchannelLists's subchannels.
|
||||
void PopulateChildRefsList(ChildRefsList* refs_list) {
|
||||
for (size_t i = 0; i < subchannels_.size(); ++i) {
|
||||
if (subchannels_[i].subchannel() != nullptr) {
|
||||
grpc_core::channelz::SubchannelNode* subchannel_node =
|
||||
grpc_subchannel_get_channelz_node(subchannels_[i].subchannel());
|
||||
if (subchannel_node != nullptr) {
|
||||
refs_list->push_back(subchannel_node->subchannel_uuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Accessors.
|
||||
LoadBalancingPolicy* policy() const { return policy_; }
|
||||
TraceFlag* tracer() const { return tracer_; }
|
||||
|
||||
// Resets connection backoff of all subchannels.
|
||||
// TODO(roth): We will probably need to rethink this as part of moving
|
||||
// the backoff code out of subchannels and into LB policies.
|
||||
void ResetBackoffLocked();
|
||||
|
||||
// Note: Caller must ensure that this is invoked inside of the combiner.
|
||||
void Orphan() override {
|
||||
ShutdownLocked();
|
||||
InternallyRefCountedWithTracing<SubchannelListType>::Unref(DEBUG_LOCATION,
|
||||
"shutdown");
|
||||
}
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
|
||||
protected:
|
||||
SubchannelList(LoadBalancingPolicy* policy, TraceFlag* tracer,
|
||||
const grpc_lb_addresses* addresses, grpc_combiner* combiner,
|
||||
grpc_client_channel_factory* client_channel_factory,
|
||||
const grpc_channel_args& args);
|
||||
|
||||
virtual ~SubchannelList();
|
||||
|
||||
private:
|
||||
// So New() can call our private ctor.
|
||||
template <typename T, typename... Args>
|
||||
friend T* New(Args&&... args);
|
||||
|
||||
// For accessing Ref() and Unref().
|
||||
friend class SubchannelData<SubchannelListType, SubchannelDataType>;
|
||||
|
||||
void ShutdownLocked();
|
||||
|
||||
// Backpointer to owning policy.
|
||||
LoadBalancingPolicy* policy_;
|
||||
|
||||
TraceFlag* tracer_;
|
||||
|
||||
grpc_combiner* combiner_;
|
||||
|
||||
// The list of subchannels.
|
||||
SubchannelVector subchannels_;
|
||||
|
||||
// Is this list shutting down? This may be true due to the shutdown of the
|
||||
// policy itself or because a newer update has arrived while this one hadn't
|
||||
// finished processing.
|
||||
bool shutting_down_ = false;
|
||||
};
|
||||
|
||||
//
|
||||
// implementation -- no user-servicable parts below
|
||||
//
|
||||
|
||||
//
|
||||
// SubchannelData
|
||||
//
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
SubchannelData<SubchannelListType, SubchannelDataType>::SubchannelData(
|
||||
SubchannelListType* subchannel_list,
|
||||
const grpc_lb_user_data_vtable* user_data_vtable,
|
||||
const grpc_lb_address& address, grpc_subchannel* subchannel,
|
||||
grpc_combiner* combiner)
|
||||
: subchannel_list_(subchannel_list),
|
||||
subchannel_(subchannel),
|
||||
// We assume that the current state is IDLE. If not, we'll get a
|
||||
// callback telling us that.
|
||||
pending_connectivity_state_unsafe_(GRPC_CHANNEL_IDLE) {
|
||||
GRPC_CLOSURE_INIT(
|
||||
&connectivity_changed_closure_,
|
||||
(&SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::OnConnectivityChangedLocked),
|
||||
this, grpc_combiner_scheduler(combiner));
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
SubchannelData<SubchannelListType, SubchannelDataType>::~SubchannelData() {
|
||||
UnrefSubchannelLocked("subchannel_data_destroy");
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType, SubchannelDataType>::
|
||||
UnrefSubchannelLocked(const char* reason) {
|
||||
if (subchannel_ != nullptr) {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): unreffing subchannel",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_);
|
||||
}
|
||||
GRPC_SUBCHANNEL_UNREF(subchannel_, reason);
|
||||
subchannel_ = nullptr;
|
||||
connected_subchannel_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::ResetBackoffLocked() {
|
||||
if (subchannel_ != nullptr) {
|
||||
grpc_subchannel_reset_backoff(subchannel_);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::StartConnectivityWatchLocked() {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): starting watch: requesting connectivity change "
|
||||
"notification (from %s)",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_,
|
||||
grpc_connectivity_state_name(pending_connectivity_state_unsafe_));
|
||||
}
|
||||
GPR_ASSERT(!connectivity_notification_pending_);
|
||||
connectivity_notification_pending_ = true;
|
||||
subchannel_list()->Ref(DEBUG_LOCATION, "connectivity_watch").release();
|
||||
grpc_subchannel_notify_on_state_change(
|
||||
subchannel_, subchannel_list_->policy()->interested_parties(),
|
||||
&pending_connectivity_state_unsafe_, &connectivity_changed_closure_);
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::RenewConnectivityWatchLocked() {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): renewing watch: requesting connectivity change "
|
||||
"notification (from %s)",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_,
|
||||
grpc_connectivity_state_name(pending_connectivity_state_unsafe_));
|
||||
}
|
||||
GPR_ASSERT(connectivity_notification_pending_);
|
||||
grpc_subchannel_notify_on_state_change(
|
||||
subchannel_, subchannel_list_->policy()->interested_parties(),
|
||||
&pending_connectivity_state_unsafe_, &connectivity_changed_closure_);
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::StopConnectivityWatchLocked() {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): stopping connectivity watch",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_);
|
||||
}
|
||||
GPR_ASSERT(connectivity_notification_pending_);
|
||||
connectivity_notification_pending_ = false;
|
||||
subchannel_list()->Unref(DEBUG_LOCATION, "connectivity_watch");
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType, SubchannelDataType>::
|
||||
CancelConnectivityWatchLocked(const char* reason) {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): canceling connectivity watch (%s)",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_, reason);
|
||||
}
|
||||
GPR_ASSERT(connectivity_notification_pending_);
|
||||
grpc_subchannel_notify_on_state_change(subchannel_, nullptr, nullptr,
|
||||
&connectivity_changed_closure_);
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
bool SubchannelData<SubchannelListType,
|
||||
SubchannelDataType>::UpdateConnectedSubchannelLocked() {
|
||||
// If the subchannel is READY, take a ref to the connected subchannel.
|
||||
if (pending_connectivity_state_unsafe_ == GRPC_CHANNEL_READY) {
|
||||
connected_subchannel_ =
|
||||
grpc_subchannel_get_connected_subchannel(subchannel_);
|
||||
// If the subchannel became disconnected between the time that READY
|
||||
// was reported and the time we got here (e.g., between when a
|
||||
// notification callback is scheduled and when it was actually run in
|
||||
// the combiner), then the connected subchannel may have disappeared out
|
||||
// from under us. In that case, we don't actually want to consider the
|
||||
// subchannel to be in state READY. Instead, we use IDLE as the
|
||||
// basis for any future connectivity watch; this is the one state that
|
||||
// the subchannel will never transition back into, so this ensures
|
||||
// that we will get a notification for the next state, even if that state
|
||||
// is READY again (e.g., if the subchannel has transitioned back to
|
||||
// READY before the next watch gets requested).
|
||||
if (connected_subchannel_ == nullptr) {
|
||||
if (subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): state is READY but connected subchannel is "
|
||||
"null; moving to state IDLE",
|
||||
subchannel_list_->tracer()->name(), subchannel_list_->policy(),
|
||||
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
||||
subchannel_);
|
||||
}
|
||||
pending_connectivity_state_unsafe_ = GRPC_CHANNEL_IDLE;
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// For any state other than READY, unref the connected subchannel.
|
||||
connected_subchannel_.reset();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType, SubchannelDataType>::
|
||||
OnConnectivityChangedLocked(void* arg, grpc_error* error) {
|
||||
SubchannelData* sd = static_cast<SubchannelData*>(arg);
|
||||
if (sd->subchannel_list_->tracer()->enabled()) {
|
||||
gpr_log(
|
||||
GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
||||
" (subchannel %p): connectivity changed: state=%s, error=%s, "
|
||||
"shutting_down=%d",
|
||||
sd->subchannel_list_->tracer()->name(), sd->subchannel_list_->policy(),
|
||||
sd->subchannel_list_, sd->Index(),
|
||||
sd->subchannel_list_->num_subchannels(), sd->subchannel_,
|
||||
grpc_connectivity_state_name(sd->pending_connectivity_state_unsafe_),
|
||||
grpc_error_string(error), sd->subchannel_list_->shutting_down());
|
||||
}
|
||||
// If shutting down, unref subchannel and stop watching.
|
||||
if (sd->subchannel_list_->shutting_down() || error == GRPC_ERROR_CANCELLED) {
|
||||
sd->UnrefSubchannelLocked("connectivity_shutdown");
|
||||
sd->StopConnectivityWatchLocked();
|
||||
return;
|
||||
}
|
||||
// Get or release ref to connected subchannel.
|
||||
if (!sd->UpdateConnectedSubchannelLocked()) {
|
||||
// We don't want to report this connectivity state, so renew the watch.
|
||||
sd->RenewConnectivityWatchLocked();
|
||||
return;
|
||||
}
|
||||
// Call the subclass's ProcessConnectivityChangeLocked() method.
|
||||
sd->ProcessConnectivityChangeLocked(sd->pending_connectivity_state_unsafe_,
|
||||
GRPC_ERROR_REF(error));
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelData<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
|
||||
// If there's a pending notification for this subchannel, cancel it;
|
||||
// the callback is responsible for unreffing the subchannel.
|
||||
// Otherwise, unref the subchannel directly.
|
||||
if (connectivity_notification_pending_) {
|
||||
CancelConnectivityWatchLocked("shutdown");
|
||||
} else if (subchannel_ != nullptr) {
|
||||
UnrefSubchannelLocked("shutdown");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// SubchannelList
|
||||
//
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
|
||||
LoadBalancingPolicy* policy, TraceFlag* tracer,
|
||||
const grpc_lb_addresses* addresses, grpc_combiner* combiner,
|
||||
grpc_client_channel_factory* client_channel_factory,
|
||||
const grpc_channel_args& args)
|
||||
: InternallyRefCountedWithTracing<SubchannelListType>(tracer),
|
||||
policy_(policy),
|
||||
tracer_(tracer),
|
||||
combiner_(GRPC_COMBINER_REF(combiner, "subchannel_list")) {
|
||||
if (tracer_->enabled()) {
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] Creating subchannel list %p for %" PRIuPTR " subchannels",
|
||||
tracer_->name(), policy, this, addresses->num_addresses);
|
||||
}
|
||||
subchannels_.reserve(addresses->num_addresses);
|
||||
// We need to remove the LB addresses in order to be able to compare the
|
||||
// subchannel keys of subchannels from a different batch of addresses.
|
||||
static const char* keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS,
|
||||
GRPC_ARG_LB_ADDRESSES};
|
||||
// Create a subchannel for each address.
|
||||
grpc_subchannel_args sc_args;
|
||||
for (size_t i = 0; i < addresses->num_addresses; i++) {
|
||||
// If there were any balancer, we would have chosen grpclb policy instead.
|
||||
GPR_ASSERT(!addresses->addresses[i].is_balancer);
|
||||
memset(&sc_args, 0, sizeof(grpc_subchannel_args));
|
||||
grpc_arg addr_arg =
|
||||
grpc_create_subchannel_address_arg(&addresses->addresses[i].address);
|
||||
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
||||
&args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg, 1);
|
||||
gpr_free(addr_arg.value.string);
|
||||
sc_args.args = new_args;
|
||||
grpc_subchannel* subchannel = grpc_client_channel_factory_create_subchannel(
|
||||
client_channel_factory, &sc_args);
|
||||
grpc_channel_args_destroy(new_args);
|
||||
if (subchannel == nullptr) {
|
||||
// Subchannel could not be created.
|
||||
if (tracer_->enabled()) {
|
||||
char* address_uri =
|
||||
grpc_sockaddr_to_uri(&addresses->addresses[i].address);
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] could not create subchannel for address uri %s, "
|
||||
"ignoring",
|
||||
tracer_->name(), policy_, address_uri);
|
||||
gpr_free(address_uri);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (tracer_->enabled()) {
|
||||
char* address_uri =
|
||||
grpc_sockaddr_to_uri(&addresses->addresses[i].address);
|
||||
gpr_log(GPR_INFO,
|
||||
"[%s %p] subchannel list %p index %" PRIuPTR
|
||||
": Created subchannel %p for address uri %s",
|
||||
tracer_->name(), policy_, this, subchannels_.size(), subchannel,
|
||||
address_uri);
|
||||
gpr_free(address_uri);
|
||||
}
|
||||
subchannels_.emplace_back(static_cast<SubchannelListType*>(this),
|
||||
addresses->user_data_vtable,
|
||||
addresses->addresses[i], subchannel, combiner);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
SubchannelList<SubchannelListType, SubchannelDataType>::~SubchannelList() {
|
||||
if (tracer_->enabled()) {
|
||||
gpr_log(GPR_INFO, "[%s %p] Destroying subchannel_list %p", tracer_->name(),
|
||||
policy_, this);
|
||||
}
|
||||
GRPC_COMBINER_UNREF(combiner_, "subchannel_list");
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelList<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
|
||||
if (tracer_->enabled()) {
|
||||
gpr_log(GPR_INFO, "[%s %p] Shutting down subchannel_list %p",
|
||||
tracer_->name(), policy_, this);
|
||||
}
|
||||
GPR_ASSERT(!shutting_down_);
|
||||
shutting_down_ = true;
|
||||
for (size_t i = 0; i < subchannels_.size(); i++) {
|
||||
SubchannelDataType* sd = &subchannels_[i];
|
||||
sd->ShutdownLocked();
|
||||
}
|
||||
}
|
||||
|
||||
template <typename SubchannelListType, typename SubchannelDataType>
|
||||
void SubchannelList<SubchannelListType,
|
||||
SubchannelDataType>::ResetBackoffLocked() {
|
||||
for (size_t i = 0; i < subchannels_.size(); i++) {
|
||||
SubchannelDataType* sd = &subchannels_[i];
|
||||
sd->ResetBackoffLocked();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H */
|
||||
131
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h
generated
vendored
Normal file
131
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h
generated
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/iomgr/resolve_address.h"
|
||||
|
||||
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
|
||||
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
||||
#include "src/core/ext/filters/client_channel/uri_parser.h"
|
||||
|
||||
//
|
||||
// representation of an LB address
|
||||
//
|
||||
|
||||
// Channel arg key for grpc_lb_addresses.
|
||||
#define GRPC_ARG_LB_ADDRESSES "grpc.lb_addresses"
|
||||
|
||||
/** A resolved address alongside any LB related information associated with it.
|
||||
* \a user_data, if not NULL, contains opaque data meant to be consumed by the
|
||||
* gRPC LB policy. Note that no all LB policies support \a user_data as input.
|
||||
* Those who don't will simply ignore it and will correspondingly return NULL in
|
||||
* their namesake pick() output argument. */
|
||||
// TODO(roth): Once we figure out a better way of handling user_data in
|
||||
// LB policies, convert these structs to C++ classes.
|
||||
typedef struct grpc_lb_address {
|
||||
grpc_resolved_address address;
|
||||
bool is_balancer;
|
||||
char* balancer_name; /* For secure naming. */
|
||||
void* user_data;
|
||||
} grpc_lb_address;
|
||||
|
||||
typedef struct grpc_lb_user_data_vtable {
|
||||
void* (*copy)(void*);
|
||||
void (*destroy)(void*);
|
||||
int (*cmp)(void*, void*);
|
||||
} grpc_lb_user_data_vtable;
|
||||
|
||||
typedef struct grpc_lb_addresses {
|
||||
size_t num_addresses;
|
||||
grpc_lb_address* addresses;
|
||||
const grpc_lb_user_data_vtable* user_data_vtable;
|
||||
} grpc_lb_addresses;
|
||||
|
||||
/** Returns a grpc_addresses struct with enough space for
|
||||
\a num_addresses addresses. The \a user_data_vtable argument may be
|
||||
NULL if no user data will be added. */
|
||||
grpc_lb_addresses* grpc_lb_addresses_create(
|
||||
size_t num_addresses, const grpc_lb_user_data_vtable* user_data_vtable);
|
||||
|
||||
/** Creates a copy of \a addresses. */
|
||||
grpc_lb_addresses* grpc_lb_addresses_copy(const grpc_lb_addresses* addresses);
|
||||
|
||||
/** Sets the value of the address at index \a index of \a addresses.
|
||||
* \a address is a socket address of length \a address_len.
|
||||
* Takes ownership of \a balancer_name. */
|
||||
void grpc_lb_addresses_set_address(grpc_lb_addresses* addresses, size_t index,
|
||||
const void* address, size_t address_len,
|
||||
bool is_balancer, const char* balancer_name,
|
||||
void* user_data);
|
||||
|
||||
/** Sets the value of the address at index \a index of \a addresses from \a uri.
|
||||
* Returns true upon success, false otherwise. Takes ownership of \a
|
||||
* balancer_name. */
|
||||
bool grpc_lb_addresses_set_address_from_uri(grpc_lb_addresses* addresses,
|
||||
size_t index, const grpc_uri* uri,
|
||||
bool is_balancer,
|
||||
const char* balancer_name,
|
||||
void* user_data);
|
||||
|
||||
/** Compares \a addresses1 and \a addresses2. */
|
||||
int grpc_lb_addresses_cmp(const grpc_lb_addresses* addresses1,
|
||||
const grpc_lb_addresses* addresses2);
|
||||
|
||||
/** Destroys \a addresses. */
|
||||
void grpc_lb_addresses_destroy(grpc_lb_addresses* addresses);
|
||||
|
||||
/** Returns a channel arg containing \a addresses. */
|
||||
grpc_arg grpc_lb_addresses_create_channel_arg(
|
||||
const grpc_lb_addresses* addresses);
|
||||
|
||||
/** Returns the \a grpc_lb_addresses instance in \a channel_args or NULL */
|
||||
grpc_lb_addresses* grpc_lb_addresses_find_channel_arg(
|
||||
const grpc_channel_args* channel_args);
|
||||
|
||||
// Returns true if addresses contains at least one balancer address.
|
||||
bool grpc_lb_addresses_contains_balancer_address(
|
||||
const grpc_lb_addresses& addresses);
|
||||
|
||||
//
|
||||
// LB policy factory
|
||||
//
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class LoadBalancingPolicyFactory {
|
||||
public:
|
||||
/// Returns a new LB policy instance.
|
||||
virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
||||
const LoadBalancingPolicy::Args& args) const GRPC_ABSTRACT;
|
||||
|
||||
/// Returns the LB policy name that this factory provides.
|
||||
/// Caller does NOT take ownership of result.
|
||||
virtual const char* name() const GRPC_ABSTRACT;
|
||||
|
||||
virtual ~LoadBalancingPolicyFactory() {}
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
|
||||
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h
generated
vendored
Normal file
54
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
||||
#include "src/core/lib/gprpp/memory.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class LoadBalancingPolicyRegistry {
|
||||
public:
|
||||
/// Methods used to create and populate the LoadBalancingPolicyRegistry.
|
||||
/// NOT THREAD SAFE -- to be used only during global gRPC
|
||||
/// initialization and shutdown.
|
||||
class Builder {
|
||||
public:
|
||||
/// Global initialization and shutdown hooks.
|
||||
static void InitRegistry();
|
||||
static void ShutdownRegistry();
|
||||
|
||||
/// Registers an LB policy factory. The factory will be used to create an
|
||||
/// LB policy whose name matches that of the factory.
|
||||
static void RegisterLoadBalancingPolicyFactory(
|
||||
UniquePtr<LoadBalancingPolicyFactory> factory);
|
||||
};
|
||||
|
||||
/// Creates an LB policy of the type specified by \a name.
|
||||
static OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
||||
const char* name, const LoadBalancingPolicy::Args& args);
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
|
||||
78
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/method_params.h
generated
vendored
Normal file
78
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/method_params.h
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_METHOD_PARAMS_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_METHOD_PARAMS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/status_util.h"
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
||||
#include "src/core/lib/iomgr/exec_ctx.h" // for grpc_millis
|
||||
#include "src/core/lib/json/json.h"
|
||||
|
||||
namespace grpc_core {
|
||||
namespace internal {
|
||||
|
||||
class ClientChannelMethodParams : public RefCounted<ClientChannelMethodParams> {
|
||||
public:
|
||||
enum WaitForReady {
|
||||
WAIT_FOR_READY_UNSET = 0,
|
||||
WAIT_FOR_READY_FALSE,
|
||||
WAIT_FOR_READY_TRUE
|
||||
};
|
||||
|
||||
struct RetryPolicy {
|
||||
int max_attempts = 0;
|
||||
grpc_millis initial_backoff = 0;
|
||||
grpc_millis max_backoff = 0;
|
||||
float backoff_multiplier = 0;
|
||||
StatusCodeSet retryable_status_codes;
|
||||
};
|
||||
|
||||
/// Creates a method_parameters object from \a json.
|
||||
/// Intended for use with ServiceConfig::CreateMethodConfigTable().
|
||||
static RefCountedPtr<ClientChannelMethodParams> CreateFromJson(
|
||||
const grpc_json* json);
|
||||
|
||||
grpc_millis timeout() const { return timeout_; }
|
||||
WaitForReady wait_for_ready() const { return wait_for_ready_; }
|
||||
const RetryPolicy* retry_policy() const { return retry_policy_.get(); }
|
||||
|
||||
private:
|
||||
// So New() can call our private ctor.
|
||||
template <typename T, typename... Args>
|
||||
friend T* grpc_core::New(Args&&... args);
|
||||
|
||||
// So Delete() can call our private dtor.
|
||||
template <typename T>
|
||||
friend void grpc_core::Delete(T*);
|
||||
|
||||
ClientChannelMethodParams() {}
|
||||
virtual ~ClientChannelMethodParams() {}
|
||||
|
||||
grpc_millis timeout_ = 0;
|
||||
WaitForReady wait_for_ready_ = WAIT_FOR_READY_UNSET;
|
||||
UniquePtr<RetryPolicy> retry_policy_;
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_METHOD_PARAMS_H */
|
||||
50
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/parse_address.h
generated
vendored
Normal file
50
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/parse_address.h
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/uri_parser.h"
|
||||
#include "src/core/lib/iomgr/resolve_address.h"
|
||||
|
||||
/** Populate \a resolved_addr from \a uri, whose path is expected to contain a
|
||||
* unix socket path. Returns true upon success. */
|
||||
bool grpc_parse_unix(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
|
||||
|
||||
/** Populate \a resolved_addr from \a uri, whose path is expected to contain an
|
||||
* IPv4 host:port pair. Returns true upon success. */
|
||||
bool grpc_parse_ipv4(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
|
||||
|
||||
/** Populate \a resolved_addr from \a uri, whose path is expected to contain an
|
||||
* IPv6 host:port pair. Returns true upon success. */
|
||||
bool grpc_parse_ipv6(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
|
||||
|
||||
/** Populate \a resolved_addr from \a uri. Returns true upon success. */
|
||||
bool grpc_parse_uri(const grpc_uri* uri, grpc_resolved_address* resolved_addr);
|
||||
|
||||
/** Parse bare IPv4 or IPv6 "IP:port" strings. */
|
||||
bool grpc_parse_ipv4_hostport(const char* hostport, grpc_resolved_address* addr,
|
||||
bool log_errors);
|
||||
bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
|
||||
bool log_errors);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PARSE_ADDRESS_H */
|
||||
74
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/proxy_mapper.h
generated
vendored
Normal file
74
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/proxy_mapper.h
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
#include "src/core/lib/iomgr/resolve_address.h"
|
||||
|
||||
typedef struct grpc_proxy_mapper grpc_proxy_mapper;
|
||||
|
||||
typedef struct {
|
||||
/// Determines the proxy name to resolve for \a server_uri.
|
||||
/// If no proxy is needed, returns false.
|
||||
/// Otherwise, sets \a name_to_resolve, optionally sets \a new_args,
|
||||
/// and returns true.
|
||||
bool (*map_name)(grpc_proxy_mapper* mapper, const char* server_uri,
|
||||
const grpc_channel_args* args, char** name_to_resolve,
|
||||
grpc_channel_args** new_args);
|
||||
/// Determines the proxy address to use to contact \a address.
|
||||
/// If no proxy is needed, returns false.
|
||||
/// Otherwise, sets \a new_address, optionally sets \a new_args, and
|
||||
/// returns true.
|
||||
bool (*map_address)(grpc_proxy_mapper* mapper,
|
||||
const grpc_resolved_address* address,
|
||||
const grpc_channel_args* args,
|
||||
grpc_resolved_address** new_address,
|
||||
grpc_channel_args** new_args);
|
||||
/// Destroys \a mapper.
|
||||
void (*destroy)(grpc_proxy_mapper* mapper);
|
||||
} grpc_proxy_mapper_vtable;
|
||||
|
||||
struct grpc_proxy_mapper {
|
||||
const grpc_proxy_mapper_vtable* vtable;
|
||||
};
|
||||
|
||||
void grpc_proxy_mapper_init(const grpc_proxy_mapper_vtable* vtable,
|
||||
grpc_proxy_mapper* mapper);
|
||||
|
||||
bool grpc_proxy_mapper_map_name(grpc_proxy_mapper* mapper,
|
||||
const char* server_uri,
|
||||
const grpc_channel_args* args,
|
||||
char** name_to_resolve,
|
||||
grpc_channel_args** new_args);
|
||||
|
||||
bool grpc_proxy_mapper_map_address(grpc_proxy_mapper* mapper,
|
||||
const grpc_resolved_address* address,
|
||||
const grpc_channel_args* args,
|
||||
grpc_resolved_address** new_address,
|
||||
grpc_channel_args** new_args);
|
||||
|
||||
void grpc_proxy_mapper_destroy(grpc_proxy_mapper* mapper);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H */
|
||||
44
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h
generated
vendored
Normal file
44
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/proxy_mapper.h"
|
||||
|
||||
void grpc_proxy_mapper_registry_init();
|
||||
void grpc_proxy_mapper_registry_shutdown();
|
||||
|
||||
/// Registers a new proxy mapper. Takes ownership.
|
||||
/// If \a at_start is true, the new mapper will be at the beginning of
|
||||
/// the list. Otherwise, it will be added to the end.
|
||||
void grpc_proxy_mapper_register(bool at_start, grpc_proxy_mapper* mapper);
|
||||
|
||||
bool grpc_proxy_mappers_map_name(const char* server_uri,
|
||||
const grpc_channel_args* args,
|
||||
char** name_to_resolve,
|
||||
grpc_channel_args** new_args);
|
||||
|
||||
bool grpc_proxy_mappers_map_address(const grpc_resolved_address* address,
|
||||
const grpc_channel_args* args,
|
||||
grpc_resolved_address** new_address,
|
||||
grpc_channel_args** new_args);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H */
|
||||
144
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver.h
generated
vendored
Normal file
144
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver.h
generated
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/grpc_types.h>
|
||||
|
||||
#include "src/core/lib/gprpp/abstract.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/iomgr/combiner.h"
|
||||
#include "src/core/lib/iomgr/iomgr.h"
|
||||
|
||||
extern grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount;
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
/// Interface for name resolution.
|
||||
///
|
||||
/// This interface is designed to support both push-based and pull-based
|
||||
/// mechanisms. A push-based mechanism is one where the resolver will
|
||||
/// subscribe to updates for a given name, and the name service will
|
||||
/// proactively send new data to the resolver whenever the data associated
|
||||
/// with the name changes. A pull-based mechanism is one where the resolver
|
||||
/// needs to query the name service again to get updated information (e.g.,
|
||||
/// DNS).
|
||||
///
|
||||
/// Note: All methods with a "Locked" suffix must be called from the
|
||||
/// combiner passed to the constructor.
|
||||
class Resolver : public InternallyRefCountedWithTracing<Resolver> {
|
||||
public:
|
||||
// Not copyable nor movable.
|
||||
Resolver(const Resolver&) = delete;
|
||||
Resolver& operator=(const Resolver&) = delete;
|
||||
|
||||
/// Requests a callback when a new result becomes available.
|
||||
/// When the new result is available, sets \a *result to the new result
|
||||
/// and schedules \a on_complete for execution.
|
||||
/// Upon transient failure, sets \a *result to nullptr and schedules
|
||||
/// \a on_complete with no error.
|
||||
/// If resolution is fatally broken, sets \a *result to nullptr and
|
||||
/// schedules \a on_complete with an error.
|
||||
/// TODO(roth): When we have time, improve the way this API represents
|
||||
/// transient failure vs. shutdown.
|
||||
///
|
||||
/// Note that the client channel will almost always have a request
|
||||
/// to \a NextLocked() pending. When it gets the callback, it will
|
||||
/// process the new result and then immediately make another call to
|
||||
/// \a NextLocked(). This allows push-based resolvers to provide new
|
||||
/// data as soon as it becomes available.
|
||||
virtual void NextLocked(grpc_channel_args** result,
|
||||
grpc_closure* on_complete) GRPC_ABSTRACT;
|
||||
|
||||
/// Asks the resolver to obtain an updated resolver result, if
|
||||
/// applicable.
|
||||
///
|
||||
/// This is useful for pull-based implementations to decide when to
|
||||
/// re-resolve. However, the implementation is not required to
|
||||
/// re-resolve immediately upon receiving this call; it may instead
|
||||
/// elect to delay based on some configured minimum time between
|
||||
/// queries, to avoid hammering the name service with queries.
|
||||
///
|
||||
/// For push-based implementations, this may be a no-op.
|
||||
///
|
||||
/// If this causes new data to become available, then the currently
|
||||
/// pending call to \a NextLocked() will return the new result.
|
||||
///
|
||||
/// Note: Currently, all resolvers are required to return a new result
|
||||
/// shortly after this method is called. For pull-based mechanisms, if
|
||||
/// the implementation decides to delay querying the name service, it
|
||||
/// should immediately return a new copy of the previously returned
|
||||
/// result (and it can then return the updated data later, when it
|
||||
/// actually does query the name service). For push-based mechanisms,
|
||||
/// the implementation should immediately return a new copy of the
|
||||
/// last-seen result.
|
||||
/// TODO(roth): Remove this requirement once we fix pick_first to not
|
||||
/// throw away unselected subchannels.
|
||||
virtual void RequestReresolutionLocked() GRPC_ABSTRACT;
|
||||
|
||||
/// Resets the re-resolution backoff, if any.
|
||||
/// This needs to be implemented only by pull-based implementations;
|
||||
/// for push-based implementations, it will be a no-op.
|
||||
/// TODO(roth): Pull the backoff code out of resolver and into
|
||||
/// client_channel, so that it can be shared across resolver
|
||||
/// implementations. At that point, this method can go away.
|
||||
virtual void ResetBackoffLocked() {}
|
||||
|
||||
void Orphan() override {
|
||||
// Invoke ShutdownAndUnrefLocked() inside of the combiner.
|
||||
GRPC_CLOSURE_SCHED(
|
||||
GRPC_CLOSURE_CREATE(&Resolver::ShutdownAndUnrefLocked, this,
|
||||
grpc_combiner_scheduler(combiner_)),
|
||||
GRPC_ERROR_NONE);
|
||||
}
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
|
||||
protected:
|
||||
GPRC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
||||
|
||||
/// Does NOT take ownership of the reference to \a combiner.
|
||||
// TODO(roth): Once we have a C++-like interface for combiners, this
|
||||
// API should change to take a RefCountedPtr<>, so that we always take
|
||||
// ownership of a new ref.
|
||||
explicit Resolver(grpc_combiner* combiner);
|
||||
|
||||
virtual ~Resolver();
|
||||
|
||||
/// Shuts down the resolver. If there is a pending call to
|
||||
/// NextLocked(), the callback will be scheduled with an error.
|
||||
virtual void ShutdownLocked() GRPC_ABSTRACT;
|
||||
|
||||
grpc_combiner* combiner() const { return combiner_; }
|
||||
|
||||
private:
|
||||
static void ShutdownAndUnrefLocked(void* arg, grpc_error* ignored) {
|
||||
Resolver* resolver = static_cast<Resolver*>(arg);
|
||||
resolver->ShutdownLocked();
|
||||
resolver->Unref();
|
||||
}
|
||||
|
||||
grpc_combiner* combiner_;
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_H */
|
||||
106
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
generated
vendored
Normal file
106
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
generated
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <ares.h>
|
||||
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
||||
#include "src/core/lib/gprpp/abstract.h"
|
||||
#include "src/core/lib/iomgr/pollset_set.h"
|
||||
|
||||
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
||||
|
||||
/* Start \a ev_driver. It will keep working until all IO on its ares_channel is
|
||||
done, or grpc_ares_ev_driver_destroy() is called. It may notify the callbacks
|
||||
bound to its ares_channel when necessary. */
|
||||
void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver);
|
||||
|
||||
/* Returns the ares_channel owned by \a ev_driver. To bind a c-ares query to
|
||||
\a ev_driver, use the ares_channel owned by \a ev_driver as the arg of the
|
||||
query. */
|
||||
ares_channel* grpc_ares_ev_driver_get_channel_locked(
|
||||
grpc_ares_ev_driver* ev_driver);
|
||||
|
||||
/* Creates a new grpc_ares_ev_driver. Returns GRPC_ERROR_NONE if \a ev_driver is
|
||||
created successfully. */
|
||||
grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
||||
grpc_pollset_set* pollset_set,
|
||||
grpc_combiner* combiner,
|
||||
grpc_ares_request* request);
|
||||
|
||||
/* Called back when all DNS lookups have completed. */
|
||||
void grpc_ares_ev_driver_on_queries_complete_locked(
|
||||
grpc_ares_ev_driver* ev_driver);
|
||||
|
||||
/* Shutdown all the grpc_fds used by \a ev_driver */
|
||||
void grpc_ares_ev_driver_shutdown_locked(grpc_ares_ev_driver* ev_driver);
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
/* A wrapped fd that integrates with the grpc iomgr of the current platform.
|
||||
* A GrpcPolledFd knows how to create grpc platform-specific iomgr endpoints
|
||||
* from "ares_socket_t" sockets, and then sign up for readability/writeability
|
||||
* with that poller, and do shutdown and destruction. */
|
||||
class GrpcPolledFd {
|
||||
public:
|
||||
virtual ~GrpcPolledFd() {}
|
||||
/* Called when c-ares library is interested and there's no pending callback */
|
||||
virtual void RegisterForOnReadableLocked(grpc_closure* read_closure)
|
||||
GRPC_ABSTRACT;
|
||||
/* Called when c-ares library is interested and there's no pending callback */
|
||||
virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure)
|
||||
GRPC_ABSTRACT;
|
||||
/* Indicates if there is data left even after just being read from */
|
||||
virtual bool IsFdStillReadableLocked() GRPC_ABSTRACT;
|
||||
/* Called once and only once. Must cause cancellation of any pending
|
||||
* read/write callbacks. */
|
||||
virtual void ShutdownLocked(grpc_error* error) GRPC_ABSTRACT;
|
||||
/* Get the underlying ares_socket_t that this was created from */
|
||||
virtual ares_socket_t GetWrappedAresSocketLocked() GRPC_ABSTRACT;
|
||||
/* A unique name, for logging */
|
||||
virtual const char* GetName() GRPC_ABSTRACT;
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
};
|
||||
|
||||
/* A GrpcPolledFdFactory is 1-to-1 with and owned by the
|
||||
* ares event driver. It knows how to create GrpcPolledFd's
|
||||
* for the current platform, and the ares driver uses it for all of
|
||||
* its fd's. */
|
||||
class GrpcPolledFdFactory {
|
||||
public:
|
||||
virtual ~GrpcPolledFdFactory() {}
|
||||
/* Creates a new wrapped fd for the current platform */
|
||||
virtual GrpcPolledFd* NewGrpcPolledFdLocked(
|
||||
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
||||
grpc_combiner* combiner) GRPC_ABSTRACT;
|
||||
/* Optionally configures the ares channel after creation */
|
||||
virtual void ConfigureAresChannelLocked(ares_channel channel) GRPC_ABSTRACT;
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
};
|
||||
|
||||
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(grpc_combiner* combiner);
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H \
|
||||
*/
|
||||
89
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
generated
vendored
Normal file
89
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
||||
#include "src/core/lib/iomgr/iomgr.h"
|
||||
#include "src/core/lib/iomgr/polling_entity.h"
|
||||
#include "src/core/lib/iomgr/resolve_address.h"
|
||||
|
||||
extern grpc_core::TraceFlag grpc_trace_cares_address_sorting;
|
||||
|
||||
extern grpc_core::TraceFlag grpc_trace_cares_resolver;
|
||||
|
||||
#define GRPC_CARES_TRACE_LOG(format, ...) \
|
||||
if (grpc_trace_cares_resolver.enabled()) { \
|
||||
gpr_log(GPR_DEBUG, "(c-ares resolver) " format, __VA_ARGS__); \
|
||||
}
|
||||
|
||||
typedef struct grpc_ares_request grpc_ares_request;
|
||||
|
||||
/* Asynchronously resolve \a name. Use \a default_port if a port isn't
|
||||
designated in \a name, otherwise use the port in \a name. grpc_ares_init()
|
||||
must be called at least once before this function. \a on_done may be
|
||||
called directly in this function without being scheduled with \a exec_ctx,
|
||||
so it must not try to acquire locks that are being held by the caller. */
|
||||
extern void (*grpc_resolve_address_ares)(const char* name,
|
||||
const char* default_port,
|
||||
grpc_pollset_set* interested_parties,
|
||||
grpc_closure* on_done,
|
||||
grpc_resolved_addresses** addresses);
|
||||
|
||||
/* Asynchronously resolve \a name. It will try to resolve grpclb SRV records in
|
||||
addition to the normal address records. For normal address records, it uses
|
||||
\a default_port if a port isn't designated in \a name, otherwise it uses the
|
||||
port in \a name. grpc_ares_init() must be called at least once before this
|
||||
function. \a on_done may be called directly in this function without being
|
||||
scheduled with \a exec_ctx, so it must not try to acquire locks that are
|
||||
being held by the caller. */
|
||||
extern grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
||||
const char* dns_server, const char* name, const char* default_port,
|
||||
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
||||
grpc_lb_addresses** addresses, bool check_grpclb,
|
||||
char** service_config_json, grpc_combiner* combiner);
|
||||
|
||||
/* Cancel the pending grpc_ares_request \a request */
|
||||
void grpc_cancel_ares_request(grpc_ares_request* request);
|
||||
|
||||
/* Initialize gRPC ares wrapper. Must be called at least once before
|
||||
grpc_resolve_address_ares(). */
|
||||
grpc_error* grpc_ares_init(void);
|
||||
|
||||
/* Uninitialized gRPC ares wrapper. If there was more than one previous call to
|
||||
grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
|
||||
it has been called the same number of times as grpc_ares_init(). */
|
||||
void grpc_ares_cleanup(void);
|
||||
|
||||
/** Schedules the desired callback for request completion
|
||||
* and destroys the grpc_ares_request */
|
||||
void grpc_ares_complete_request_locked(grpc_ares_request* request);
|
||||
|
||||
/* Indicates whether or not AAAA queries should be attempted. */
|
||||
/* E.g., return false if ipv6 is known to not be available. */
|
||||
bool grpc_ares_query_ipv6();
|
||||
|
||||
/* Exposed only for testing */
|
||||
void grpc_cares_wrapper_test_only_address_sorting_sort(
|
||||
grpc_lb_addresses* lb_addrs);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H \
|
||||
*/
|
||||
83
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
generated
vendored
Normal file
83
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
//
|
||||
// Copyright 2016 gRPC authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
||||
#include "src/core/ext/filters/client_channel/uri_parser.h"
|
||||
#include "src/core/lib/channel/channel_args.h"
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
|
||||
#define GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR \
|
||||
"grpc.fake_resolver.response_generator"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class FakeResolver;
|
||||
|
||||
/// A mechanism for generating responses for the fake resolver.
|
||||
/// An instance of this class is passed to the fake resolver via a channel
|
||||
/// argument (see \a MakeChannelArg()) and used to inject and trigger custom
|
||||
/// resolutions.
|
||||
// TODO(roth): I would ideally like this to be InternallyRefCounted
|
||||
// instead of RefCounted, but external refs are currently needed to
|
||||
// encode this in channel args. Once channel_args are converted to C++,
|
||||
// see if we can find a way to fix this.
|
||||
class FakeResolverResponseGenerator
|
||||
: public RefCounted<FakeResolverResponseGenerator> {
|
||||
public:
|
||||
FakeResolverResponseGenerator() {}
|
||||
|
||||
// Instructs the fake resolver associated with the response generator
|
||||
// instance to trigger a new resolution with the specified response.
|
||||
void SetResponse(grpc_channel_args* next_response);
|
||||
|
||||
// Sets the re-resolution response, which is returned by the fake resolver
|
||||
// when re-resolution is requested (via \a RequestReresolutionLocked()).
|
||||
// The new re-resolution response replaces any previous re-resolution
|
||||
// response that may have been set by a previous call.
|
||||
// If the re-resolution response is set to NULL, then the fake
|
||||
// resolver will return the last value set via \a SetResponse().
|
||||
void SetReresolutionResponse(grpc_channel_args* response);
|
||||
|
||||
// Tells the resolver to return a transient failure (signalled by
|
||||
// returning a null result with no error).
|
||||
void SetFailure();
|
||||
|
||||
// Returns a channel arg containing \a generator.
|
||||
static grpc_arg MakeChannelArg(FakeResolverResponseGenerator* generator);
|
||||
|
||||
// Returns the response generator in \a args, or null if not found.
|
||||
static FakeResolverResponseGenerator* GetFromArgs(
|
||||
const grpc_channel_args* args);
|
||||
|
||||
private:
|
||||
friend class FakeResolver;
|
||||
|
||||
static void SetResponseLocked(void* arg, grpc_error* error);
|
||||
static void SetReresolutionResponseLocked(void* arg, grpc_error* error);
|
||||
static void SetFailureLocked(void* arg, grpc_error* error);
|
||||
|
||||
FakeResolver* resolver_ = nullptr; // Do not own.
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H \
|
||||
*/
|
||||
71
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver_factory.h
generated
vendored
Normal file
71
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver_factory.h
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/support/string_util.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/resolver.h"
|
||||
#include "src/core/ext/filters/client_channel/uri_parser.h"
|
||||
#include "src/core/lib/gprpp/abstract.h"
|
||||
#include "src/core/lib/gprpp/memory.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/iomgr/pollset_set.h"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
struct ResolverArgs {
|
||||
/// The parsed URI to resolve.
|
||||
grpc_uri* uri = nullptr;
|
||||
/// Channel args to be included in resolver results.
|
||||
const grpc_channel_args* args = nullptr;
|
||||
/// Used to drive I/O in the name resolution process.
|
||||
grpc_pollset_set* pollset_set = nullptr;
|
||||
/// The combiner under which all resolver calls will be run.
|
||||
grpc_combiner* combiner = nullptr;
|
||||
};
|
||||
|
||||
class ResolverFactory {
|
||||
public:
|
||||
/// Returns a new resolver instance.
|
||||
virtual OrphanablePtr<Resolver> CreateResolver(const ResolverArgs& args) const
|
||||
GRPC_ABSTRACT;
|
||||
|
||||
/// Returns a string representing the default authority to use for this
|
||||
/// scheme.
|
||||
virtual UniquePtr<char> GetDefaultAuthority(grpc_uri* uri) const {
|
||||
const char* path = uri->path;
|
||||
if (path[0] == '/') ++path;
|
||||
return UniquePtr<char>(gpr_strdup(path));
|
||||
}
|
||||
|
||||
/// Returns the URI scheme that this factory implements.
|
||||
/// Caller does NOT take ownership of result.
|
||||
virtual const char* scheme() const GRPC_ABSTRACT;
|
||||
|
||||
virtual ~ResolverFactory() {}
|
||||
|
||||
GRPC_ABSTRACT_BASE_CLASS
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
|
||||
83
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver_registry.h
generated
vendored
Normal file
83
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/resolver_registry.h
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_REGISTRY_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_REGISTRY_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/resolver_factory.h"
|
||||
#include "src/core/lib/gprpp/inlined_vector.h"
|
||||
#include "src/core/lib/gprpp/memory.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/iomgr/pollset_set.h"
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class ResolverRegistry {
|
||||
public:
|
||||
/// Methods used to create and populate the ResolverRegistry.
|
||||
/// NOT THREAD SAFE -- to be used only during global gRPC
|
||||
/// initialization and shutdown.
|
||||
class Builder {
|
||||
public:
|
||||
/// Global initialization and shutdown hooks.
|
||||
static void InitRegistry();
|
||||
static void ShutdownRegistry();
|
||||
|
||||
/// Sets the default URI prefix to \a default_prefix.
|
||||
/// Calls InitRegistry() if it has not already been called.
|
||||
static void SetDefaultPrefix(const char* default_prefix);
|
||||
|
||||
/// Registers a resolver factory. The factory will be used to create a
|
||||
/// resolver for any URI whose scheme matches that of the factory.
|
||||
/// Calls InitRegistry() if it has not already been called.
|
||||
static void RegisterResolverFactory(UniquePtr<ResolverFactory> factory);
|
||||
};
|
||||
|
||||
/// Creates a resolver given \a target.
|
||||
/// First tries to parse \a target as a URI. If this succeeds, tries
|
||||
/// to locate a registered resolver factory based on the URI scheme.
|
||||
/// If parsing fails or there is no factory for the URI's scheme,
|
||||
/// prepends default_prefix to target and tries again.
|
||||
/// If a resolver factory is found, uses it to instantiate a resolver and
|
||||
/// returns it; otherwise, returns nullptr.
|
||||
/// \a args, \a pollset_set, and \a combiner are passed to the factory's
|
||||
/// \a CreateResolver() method.
|
||||
/// \a args are the channel args to be included in resolver results.
|
||||
/// \a pollset_set is used to drive I/O in the name resolution process.
|
||||
/// \a combiner is the combiner under which all resolver calls will be run.
|
||||
static OrphanablePtr<Resolver> CreateResolver(const char* target,
|
||||
const grpc_channel_args* args,
|
||||
grpc_pollset_set* pollset_set,
|
||||
grpc_combiner* combiner);
|
||||
|
||||
/// Returns the default authority to pass from a client for \a target.
|
||||
static UniquePtr<char> GetDefaultAuthority(const char* target);
|
||||
|
||||
/// Returns \a target with the default prefix prepended, if needed.
|
||||
static UniquePtr<char> AddDefaultPrefixIfNeeded(const char* target);
|
||||
|
||||
/// Returns the resolver factory for \a scheme.
|
||||
/// Caller does NOT own the return value.
|
||||
static ResolverFactory* LookupResolverFactory(const char* scheme);
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_REGISTRY_H */
|
||||
81
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/retry_throttle.h
generated
vendored
Normal file
81
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/retry_throttle.h
generated
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2017 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RETRY_THROTTLE_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RETRY_THROTTLE_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
|
||||
namespace grpc_core {
|
||||
namespace internal {
|
||||
|
||||
/// Tracks retry throttling data for an individual server name.
|
||||
class ServerRetryThrottleData : public RefCounted<ServerRetryThrottleData> {
|
||||
public:
|
||||
ServerRetryThrottleData(intptr_t max_milli_tokens, intptr_t milli_token_ratio,
|
||||
ServerRetryThrottleData* old_throttle_data);
|
||||
|
||||
/// Records a failure. Returns true if it's okay to send a retry.
|
||||
bool RecordFailure();
|
||||
|
||||
/// Records a success.
|
||||
void RecordSuccess();
|
||||
|
||||
intptr_t max_milli_tokens() const { return max_milli_tokens_; }
|
||||
intptr_t milli_token_ratio() const { return milli_token_ratio_; }
|
||||
|
||||
private:
|
||||
// So Delete() can call our private dtor.
|
||||
template <typename T>
|
||||
friend void grpc_core::Delete(T*);
|
||||
|
||||
~ServerRetryThrottleData();
|
||||
|
||||
void GetReplacementThrottleDataIfNeeded(
|
||||
ServerRetryThrottleData** throttle_data);
|
||||
|
||||
const intptr_t max_milli_tokens_;
|
||||
const intptr_t milli_token_ratio_;
|
||||
gpr_atm milli_tokens_;
|
||||
// A pointer to the replacement for this ServerRetryThrottleData entry.
|
||||
// If non-nullptr, then this entry is stale and must not be used.
|
||||
// We hold a reference to the replacement.
|
||||
gpr_atm replacement_ = 0;
|
||||
};
|
||||
|
||||
/// Global map of server name to retry throttle data.
|
||||
class ServerRetryThrottleMap {
|
||||
public:
|
||||
/// Initializes global map of failure data for each server name.
|
||||
static void Init();
|
||||
/// Shuts down global map of failure data for each server name.
|
||||
static void Shutdown();
|
||||
|
||||
/// Returns the failure data for \a server_name, creating a new entry if
|
||||
/// needed.
|
||||
static RefCountedPtr<ServerRetryThrottleData> GetDataForServer(
|
||||
const char* server_name, intptr_t max_milli_tokens,
|
||||
intptr_t milli_token_ratio);
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
} // namespace grpc_core
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RETRY_THROTTLE_H */
|
||||
194
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/subchannel.h
generated
vendored
Normal file
194
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/subchannel.h
generated
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
|
||||
#include "src/core/ext/filters/client_channel/connector.h"
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
#include "src/core/lib/gpr/arena.h"
|
||||
#include "src/core/lib/gprpp/ref_counted.h"
|
||||
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
||||
#include "src/core/lib/iomgr/polling_entity.h"
|
||||
#include "src/core/lib/transport/connectivity_state.h"
|
||||
#include "src/core/lib/transport/metadata.h"
|
||||
|
||||
// Channel arg containing a grpc_resolved_address to connect to.
|
||||
#define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
|
||||
|
||||
/** A (sub-)channel that knows how to connect to exactly one target
|
||||
address. Provides a target for load balancing. */
|
||||
typedef struct grpc_subchannel grpc_subchannel;
|
||||
typedef struct grpc_subchannel_call grpc_subchannel_call;
|
||||
typedef struct grpc_subchannel_args grpc_subchannel_args;
|
||||
typedef struct grpc_subchannel_key grpc_subchannel_key;
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define GRPC_SUBCHANNEL_REF(p, r) \
|
||||
grpc_subchannel_ref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
|
||||
grpc_subchannel_ref_from_weak_ref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_UNREF(p, r) \
|
||||
grpc_subchannel_unref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) \
|
||||
grpc_subchannel_weak_ref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) \
|
||||
grpc_subchannel_weak_unref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_CALL_REF(p, r) \
|
||||
grpc_subchannel_call_ref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) \
|
||||
grpc_subchannel_call_unref((p), __FILE__, __LINE__, (r))
|
||||
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS \
|
||||
, const char *file, int line, const char *reason
|
||||
#else
|
||||
#define GRPC_SUBCHANNEL_REF(p, r) grpc_subchannel_ref((p))
|
||||
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
|
||||
grpc_subchannel_ref_from_weak_ref((p))
|
||||
#define GRPC_SUBCHANNEL_UNREF(p, r) grpc_subchannel_unref((p))
|
||||
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) grpc_subchannel_weak_ref((p))
|
||||
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) grpc_subchannel_weak_unref((p))
|
||||
#define GRPC_SUBCHANNEL_CALL_REF(p, r) grpc_subchannel_call_ref((p))
|
||||
#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) grpc_subchannel_call_unref((p))
|
||||
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS
|
||||
#endif
|
||||
|
||||
namespace grpc_core {
|
||||
|
||||
class ConnectedSubchannel : public RefCountedWithTracing<ConnectedSubchannel> {
|
||||
public:
|
||||
struct CallArgs {
|
||||
grpc_polling_entity* pollent;
|
||||
grpc_slice path;
|
||||
gpr_timespec start_time;
|
||||
grpc_millis deadline;
|
||||
gpr_arena* arena;
|
||||
grpc_call_context_element* context;
|
||||
grpc_call_combiner* call_combiner;
|
||||
size_t parent_data_size;
|
||||
};
|
||||
|
||||
explicit ConnectedSubchannel(grpc_channel_stack* channel_stack);
|
||||
~ConnectedSubchannel();
|
||||
|
||||
grpc_channel_stack* channel_stack() { return channel_stack_; }
|
||||
void NotifyOnStateChange(grpc_pollset_set* interested_parties,
|
||||
grpc_connectivity_state* state,
|
||||
grpc_closure* closure);
|
||||
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
|
||||
grpc_error* CreateCall(const CallArgs& args, grpc_subchannel_call** call);
|
||||
|
||||
private:
|
||||
grpc_channel_stack* channel_stack_;
|
||||
};
|
||||
|
||||
} // namespace grpc_core
|
||||
|
||||
grpc_subchannel* grpc_subchannel_ref(
|
||||
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
grpc_subchannel* grpc_subchannel_ref_from_weak_ref(
|
||||
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
void grpc_subchannel_unref(
|
||||
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
grpc_subchannel* grpc_subchannel_weak_ref(
|
||||
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
void grpc_subchannel_weak_unref(
|
||||
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
grpc_subchannel_call* grpc_subchannel_call_ref(
|
||||
grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
void grpc_subchannel_call_unref(
|
||||
grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
||||
|
||||
grpc_core::channelz::SubchannelNode* grpc_subchannel_get_channelz_node(
|
||||
grpc_subchannel* subchannel);
|
||||
|
||||
/** Returns a pointer to the parent data associated with \a subchannel_call.
|
||||
The data will be of the size specified in \a parent_data_size
|
||||
field of the args passed to \a grpc_connected_subchannel_create_call(). */
|
||||
void* grpc_connected_subchannel_call_get_parent_data(
|
||||
grpc_subchannel_call* subchannel_call);
|
||||
|
||||
/** poll the current connectivity state of a channel */
|
||||
grpc_connectivity_state grpc_subchannel_check_connectivity(
|
||||
grpc_subchannel* channel, grpc_error** error);
|
||||
|
||||
/** Calls notify when the connectivity state of a channel becomes different
|
||||
from *state. Updates *state with the new state of the channel. */
|
||||
void grpc_subchannel_notify_on_state_change(
|
||||
grpc_subchannel* channel, grpc_pollset_set* interested_parties,
|
||||
grpc_connectivity_state* state, grpc_closure* notify);
|
||||
|
||||
/** retrieve the grpc_core::ConnectedSubchannel - or nullptr if not connected
|
||||
* (which may happen before it initially connects or during transient failures)
|
||||
* */
|
||||
grpc_core::RefCountedPtr<grpc_core::ConnectedSubchannel>
|
||||
grpc_subchannel_get_connected_subchannel(grpc_subchannel* c);
|
||||
|
||||
/** return the subchannel index key for \a subchannel */
|
||||
const grpc_subchannel_key* grpc_subchannel_get_key(
|
||||
const grpc_subchannel* subchannel);
|
||||
|
||||
// Resets the connection backoff of the subchannel.
|
||||
// TODO(roth): Move connection backoff out of subchannels and up into LB
|
||||
// policy code (probably by adding a SubchannelGroup between
|
||||
// SubchannelList and SubchannelData), at which point this method can
|
||||
// go away.
|
||||
void grpc_subchannel_reset_backoff(grpc_subchannel* subchannel);
|
||||
|
||||
/** continue processing a transport op */
|
||||
void grpc_subchannel_call_process_op(grpc_subchannel_call* subchannel_call,
|
||||
grpc_transport_stream_op_batch* op);
|
||||
|
||||
/** Must be called once per call. Sets the 'then_schedule_closure' argument for
|
||||
call stack destruction. */
|
||||
void grpc_subchannel_call_set_cleanup_closure(
|
||||
grpc_subchannel_call* subchannel_call, grpc_closure* closure);
|
||||
|
||||
grpc_call_stack* grpc_subchannel_call_get_call_stack(
|
||||
grpc_subchannel_call* subchannel_call);
|
||||
|
||||
struct grpc_subchannel_args {
|
||||
/* When updating this struct, also update subchannel_index.c */
|
||||
|
||||
/** Channel filters for this channel - wrapped factories will likely
|
||||
want to mutate this */
|
||||
const grpc_channel_filter** filters;
|
||||
/** The number of filters in the above array */
|
||||
size_t filter_count;
|
||||
/** Channel arguments to be supplied to the newly created channel */
|
||||
const grpc_channel_args* args;
|
||||
};
|
||||
|
||||
/** create a subchannel given a connector */
|
||||
grpc_subchannel* grpc_subchannel_create(grpc_connector* connector,
|
||||
const grpc_subchannel_args* args);
|
||||
|
||||
/// Sets \a addr from \a args.
|
||||
void grpc_get_subchannel_address_arg(const grpc_channel_args* args,
|
||||
grpc_resolved_address* addr);
|
||||
|
||||
/// Returns the URI string for the address to connect to.
|
||||
const char* grpc_get_subchannel_address_uri_arg(const grpc_channel_args* args);
|
||||
|
||||
/// Returns a new channel arg encoding the subchannel address as a string.
|
||||
/// Caller is responsible for freeing the string.
|
||||
grpc_arg grpc_create_subchannel_address_arg(const grpc_resolved_address* addr);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H */
|
||||
79
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/subchannel_index.h
generated
vendored
Normal file
79
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/subchannel_index.h
generated
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/ext/filters/client_channel/subchannel.h"
|
||||
|
||||
/** \file Provides an index of active subchannels so that they can be
|
||||
shared amongst channels */
|
||||
|
||||
/** Create a key that can be used to uniquely identify a subchannel */
|
||||
grpc_subchannel_key* grpc_subchannel_key_create(
|
||||
const grpc_subchannel_args* args);
|
||||
|
||||
/** Destroy a subchannel key */
|
||||
void grpc_subchannel_key_destroy(grpc_subchannel_key* key);
|
||||
|
||||
/** Given a subchannel key, find the subchannel registered for it.
|
||||
Returns NULL if no such channel exists.
|
||||
Thread-safe. */
|
||||
grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key);
|
||||
|
||||
/** Register a subchannel against a key.
|
||||
Takes ownership of \a constructed.
|
||||
Returns the registered subchannel. This may be different from
|
||||
\a constructed in the case of a registration race. */
|
||||
grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key,
|
||||
grpc_subchannel* constructed);
|
||||
|
||||
/** Remove \a constructed as the registered subchannel for \a key. */
|
||||
void grpc_subchannel_index_unregister(grpc_subchannel_key* key,
|
||||
grpc_subchannel* constructed);
|
||||
|
||||
int grpc_subchannel_key_compare(const grpc_subchannel_key* a,
|
||||
const grpc_subchannel_key* b);
|
||||
|
||||
/** Initialize the subchannel index (global) */
|
||||
void grpc_subchannel_index_init(void);
|
||||
/** Shutdown the subchannel index (global) */
|
||||
void grpc_subchannel_index_shutdown(void);
|
||||
|
||||
/** Increment the refcount (non-zero) of subchannel index (global). */
|
||||
void grpc_subchannel_index_ref(void);
|
||||
|
||||
/** Decrement the refcount of subchannel index (global). If the refcount drops
|
||||
to zero, unref the subchannel index and destroy its mutex. */
|
||||
void grpc_subchannel_index_unref(void);
|
||||
|
||||
/** \em TEST ONLY.
|
||||
* If \a force_creation is true, all key comparisons will be false, resulting in
|
||||
* new subchannels always being created. Otherwise, the keys will be compared as
|
||||
* usual.
|
||||
*
|
||||
* This function is *not* threadsafe on purpose: it should *only* be used in
|
||||
* test code.
|
||||
*
|
||||
* Tests using this function \em MUST run tests with and without \a
|
||||
* force_creation set. */
|
||||
void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
|
||||
50
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/uri_parser.h
generated
vendored
Normal file
50
node_modules/grpc/deps/grpc/src/core/ext/filters/client_channel/uri_parser.h
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
typedef struct {
|
||||
char* scheme;
|
||||
char* authority;
|
||||
char* path;
|
||||
char* query;
|
||||
/** Query substrings separated by '&' */
|
||||
char** query_parts;
|
||||
/** Number of elements in \a query_parts and \a query_parts_values */
|
||||
size_t num_query_parts;
|
||||
/** Split each query part by '='. NULL if not present. */
|
||||
char** query_parts_values;
|
||||
char* fragment;
|
||||
} grpc_uri;
|
||||
|
||||
/** parse a uri, return NULL on failure */
|
||||
grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors);
|
||||
|
||||
/** return the part of a query string after the '=' in "?key=xxx&...", or NULL
|
||||
* if key is not present */
|
||||
const char* grpc_uri_get_query_arg(const grpc_uri* uri, const char* key);
|
||||
|
||||
/** destroy a uri */
|
||||
void grpc_uri_destroy(grpc_uri* uri);
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_URI_PARSER_H */
|
||||
93
node_modules/grpc/deps/grpc/src/core/ext/filters/deadline/deadline_filter.h
generated
vendored
Normal file
93
node_modules/grpc/deps/grpc/src/core/ext/filters/deadline/deadline_filter.h
generated
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
//
|
||||
// Copyright 2016 gRPC authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
#include "src/core/lib/iomgr/timer.h"
|
||||
|
||||
typedef enum grpc_deadline_timer_state {
|
||||
GRPC_DEADLINE_STATE_INITIAL,
|
||||
GRPC_DEADLINE_STATE_PENDING,
|
||||
GRPC_DEADLINE_STATE_FINISHED
|
||||
} grpc_deadline_timer_state;
|
||||
|
||||
// State used for filters that enforce call deadlines.
|
||||
// Must be the first field in the filter's call_data.
|
||||
typedef struct grpc_deadline_state {
|
||||
// We take a reference to the call stack for the timer callback.
|
||||
grpc_call_stack* call_stack;
|
||||
grpc_call_combiner* call_combiner;
|
||||
grpc_deadline_timer_state timer_state;
|
||||
grpc_timer timer;
|
||||
grpc_closure timer_callback;
|
||||
// Closure to invoke when we receive trailing metadata.
|
||||
// We use this to cancel the timer.
|
||||
grpc_closure recv_trailing_metadata_ready;
|
||||
// The original recv_trailing_metadata_ready closure, which we chain to
|
||||
// after our own closure is invoked.
|
||||
grpc_closure* original_recv_trailing_metadata_ready;
|
||||
} grpc_deadline_state;
|
||||
|
||||
//
|
||||
// NOTE: All of these functions require that the first field in
|
||||
// elem->call_data is a grpc_deadline_state.
|
||||
//
|
||||
|
||||
// assumes elem->call_data is zero'd
|
||||
void grpc_deadline_state_init(grpc_call_element* elem,
|
||||
grpc_call_stack* call_stack,
|
||||
grpc_call_combiner* call_combiner,
|
||||
grpc_millis deadline);
|
||||
|
||||
void grpc_deadline_state_destroy(grpc_call_element* elem);
|
||||
|
||||
// Cancels the existing timer and starts a new one with new_deadline.
|
||||
//
|
||||
// Note: It is generally safe to call this with an earlier deadline
|
||||
// value than the current one, but not the reverse. No checks are done
|
||||
// to ensure that the timer callback is not invoked while it is in the
|
||||
// process of being reset, which means that attempting to increase the
|
||||
// deadline may result in the timer being called twice.
|
||||
//
|
||||
// Note: Must be called while holding the call combiner.
|
||||
void grpc_deadline_state_reset(grpc_call_element* elem,
|
||||
grpc_millis new_deadline);
|
||||
|
||||
// To be called from the client-side filter's start_transport_stream_op_batch()
|
||||
// method. Ensures that the deadline timer is cancelled when the call
|
||||
// is completed.
|
||||
//
|
||||
// Note: It is the caller's responsibility to chain to the next filter if
|
||||
// necessary after this function returns.
|
||||
//
|
||||
// Note: Must be called while holding the call combiner.
|
||||
void grpc_deadline_state_client_start_transport_stream_op_batch(
|
||||
grpc_call_element* elem, grpc_transport_stream_op_batch* op);
|
||||
|
||||
// Should deadline checking be performed (according to channel args)
|
||||
bool grpc_deadline_checking_enabled(const grpc_channel_args* args);
|
||||
|
||||
// Deadline filters for direct client channels and server channels.
|
||||
// Note: Deadlines for non-direct client channels are handled by the
|
||||
// client_channel filter.
|
||||
extern const grpc_channel_filter grpc_client_deadline_filter;
|
||||
extern const grpc_channel_filter grpc_server_deadline_filter;
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H */
|
||||
31
node_modules/grpc/deps/grpc/src/core/ext/filters/http/client/http_client_filter.h
generated
vendored
Normal file
31
node_modules/grpc/deps/grpc/src/core/ext/filters/http/client/http_client_filter.h
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
/* Processes metadata on the client side for HTTP2 transports */
|
||||
extern const grpc_channel_filter grpc_http_client_filter;
|
||||
|
||||
/* Channel arg to determine maximum size of payload eligable for GET request */
|
||||
#define GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET "grpc.max_payload_size_for_get"
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H */
|
||||
34
node_modules/grpc/deps/grpc/src/core/ext/filters/http/client_authority_filter.h
generated
vendored
Normal file
34
node_modules/grpc/deps/grpc/src/core/ext/filters/http/client_authority_filter.h
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
/// Filter responsible for setting the authority header, if not already set. It
|
||||
/// uses the value of the GRPC_ARG_DEFAULT_AUTHORITY channel arg if the initial
|
||||
/// metadata doesn't already contain an authority value.
|
||||
|
||||
extern const grpc_channel_filter grpc_client_authority_filter;
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_AUTHORITY_FILTER_H */
|
||||
53
node_modules/grpc/deps/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h
generated
vendored
Normal file
53
node_modules/grpc/deps/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_MESSAGE_COMPRESS_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_MESSAGE_COMPRESS_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <grpc/impl/codegen/compression_types.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
/** Compression filter for outgoing data.
|
||||
*
|
||||
* See <grpc/compression.h> for the available compression settings.
|
||||
*
|
||||
* Compression settings may come from:
|
||||
* - Channel configuration, as established at channel creation time.
|
||||
* - The metadata accompanying the outgoing data to be compressed. This is
|
||||
* taken as a request only. We may choose not to honor it. The metadata key
|
||||
* is given by \a GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY.
|
||||
*
|
||||
* Compression can be disabled for concrete messages (for instance in order to
|
||||
* prevent CRIME/BEAST type attacks) by having the GRPC_WRITE_NO_COMPRESS set in
|
||||
* the BEGIN_MESSAGE flags.
|
||||
*
|
||||
* The attempted compression mechanism is added to the resulting initial
|
||||
* metadata under the'grpc-encoding' key.
|
||||
*
|
||||
* If compression is actually performed, BEGIN_MESSAGE's flag is modified to
|
||||
* incorporate GRPC_WRITE_INTERNAL_COMPRESS. Otherwise, and regardless of the
|
||||
* aforementioned 'grpc-encoding' metadata value, data will pass through
|
||||
* uncompressed. */
|
||||
|
||||
extern const grpc_channel_filter grpc_message_compress_filter;
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_MESSAGE_COMPRESS_MESSAGE_COMPRESS_FILTER_H \
|
||||
*/
|
||||
29
node_modules/grpc/deps/grpc/src/core/ext/filters/http/server/http_server_filter.h
generated
vendored
Normal file
29
node_modules/grpc/deps/grpc/src/core/ext/filters/http/server/http_server_filter.h
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2015 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
|
||||
#define GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/channel/channel_stack.h"
|
||||
|
||||
/* Processes metadata on the server side for HTTP2 transports */
|
||||
extern const grpc_channel_filter grpc_http_server_filter;
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H */
|
||||
117
node_modules/grpc/deps/grpc/src/core/ext/filters/load_reporting/registered_opencensus_objects.h
generated
vendored
Normal file
117
node_modules/grpc/deps/grpc/src/core/ext/filters/load_reporting/registered_opencensus_objects.h
generated
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2018 gRPC authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_REGISTERED_OPENCENSUS_OBJECTS_H
|
||||
#define GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_REGISTERED_OPENCENSUS_OBJECTS_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include "opencensus/stats/stats.h"
|
||||
|
||||
#include "src/cpp/server/load_reporter/constants.h"
|
||||
|
||||
namespace grpc {
|
||||
namespace load_reporter {
|
||||
|
||||
// Note that the functions here are specified as inline to share the static
|
||||
// objects across all the translation units including this header. See more
|
||||
// details on https://en.cppreference.com/w/cpp/language/inline.
|
||||
|
||||
// Measures.
|
||||
|
||||
inline ::opencensus::stats::MeasureInt64 MeasureStartCount() {
|
||||
static const ::opencensus::stats::MeasureInt64 measure =
|
||||
::opencensus::stats::MeasureInt64::Register(
|
||||
kMeasureStartCount, kMeasureStartCount, kMeasureStartCount);
|
||||
return measure;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::MeasureInt64 MeasureEndCount() {
|
||||
static const ::opencensus::stats::MeasureInt64 measure =
|
||||
::opencensus::stats::MeasureInt64::Register(
|
||||
kMeasureEndCount, kMeasureEndCount, kMeasureEndCount);
|
||||
return measure;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::MeasureInt64 MeasureEndBytesSent() {
|
||||
static const ::opencensus::stats::MeasureInt64 measure =
|
||||
::opencensus::stats::MeasureInt64::Register(
|
||||
kMeasureEndBytesSent, kMeasureEndBytesSent, kMeasureEndBytesSent);
|
||||
return measure;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::MeasureInt64 MeasureEndBytesReceived() {
|
||||
static const ::opencensus::stats::MeasureInt64 measure =
|
||||
::opencensus::stats::MeasureInt64::Register(kMeasureEndBytesReceived,
|
||||
kMeasureEndBytesReceived,
|
||||
kMeasureEndBytesReceived);
|
||||
return measure;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::MeasureInt64 MeasureEndLatencyMs() {
|
||||
static const ::opencensus::stats::MeasureInt64 measure =
|
||||
::opencensus::stats::MeasureInt64::Register(
|
||||
kMeasureEndLatencyMs, kMeasureEndLatencyMs, kMeasureEndLatencyMs);
|
||||
return measure;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::MeasureDouble MeasureOtherCallMetric() {
|
||||
static const ::opencensus::stats::MeasureDouble measure =
|
||||
::opencensus::stats::MeasureDouble::Register(kMeasureOtherCallMetric,
|
||||
kMeasureOtherCallMetric,
|
||||
kMeasureOtherCallMetric);
|
||||
return measure;
|
||||
}
|
||||
|
||||
// Tags.
|
||||
|
||||
inline ::opencensus::stats::TagKey TagKeyToken() {
|
||||
static const ::opencensus::stats::TagKey token =
|
||||
opencensus::stats::TagKey::Register(kTagKeyToken);
|
||||
return token;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::TagKey TagKeyHost() {
|
||||
static const ::opencensus::stats::TagKey token =
|
||||
opencensus::stats::TagKey::Register(kTagKeyHost);
|
||||
return token;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::TagKey TagKeyUserId() {
|
||||
static const ::opencensus::stats::TagKey token =
|
||||
opencensus::stats::TagKey::Register(kTagKeyUserId);
|
||||
return token;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::TagKey TagKeyStatus() {
|
||||
static const ::opencensus::stats::TagKey token =
|
||||
opencensus::stats::TagKey::Register(kTagKeyStatus);
|
||||
return token;
|
||||
}
|
||||
|
||||
inline ::opencensus::stats::TagKey TagKeyMetricName() {
|
||||
static const ::opencensus::stats::TagKey token =
|
||||
opencensus::stats::TagKey::Register(kTagKeyMetricName);
|
||||
return token;
|
||||
}
|
||||
|
||||
} // namespace load_reporter
|
||||
} // namespace grpc
|
||||
|
||||
#endif /* GRPC_CORE_EXT_FILTERS_LOAD_REPORTING_REGISTERED_OPENCENSUS_OBJECTS_H \
|
||||
*/
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user