diff options
author | Craig Tiller <ctiller@google.com> | 2017-09-29 11:18:26 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2017-09-29 11:18:26 -0700 |
commit | 1e868f0f9539925e51aa52269c848082d23b7c4e (patch) | |
tree | 49fd965a5f58e2605864df54a1d70621367eee36 /include | |
parent | 710334577ce1b2de94f656ec0762eeba6effd29b (diff) | |
parent | 903f06fe3f8b1b971f1b633dff45488ca68c6708 (diff) |
Merge github.com:grpc/grpc into flowctl+millis
Diffstat (limited to 'include')
-rw-r--r-- | include/grpc++/generic/generic_stub.h | 10 | ||||
-rw-r--r-- | include/grpc++/support/channel_arguments.h | 6 | ||||
-rw-r--r-- | include/grpc/grpc.h | 2 | ||||
-rw-r--r-- | include/grpc/grpc_security.h | 35 | ||||
-rw-r--r-- | include/grpc/impl/codegen/grpc_types.h | 6 | ||||
-rw-r--r-- | include/grpc/impl/codegen/port_platform.h | 5 |
6 files changed, 50 insertions, 14 deletions
diff --git a/include/grpc++/generic/generic_stub.h b/include/grpc++/generic/generic_stub.h index 2b3ff59ea2..d5064318cf 100644 --- a/include/grpc++/generic/generic_stub.h +++ b/include/grpc++/generic/generic_stub.h @@ -20,6 +20,7 @@ #define GRPCXX_GENERIC_GENERIC_STUB_H #include <grpc++/support/async_stream.h> +#include <grpc++/support/async_unary_call.h> #include <grpc++/support/byte_buffer.h> namespace grpc { @@ -27,6 +28,7 @@ namespace grpc { class CompletionQueue; typedef ClientAsyncReaderWriter<ByteBuffer, ByteBuffer> GenericClientAsyncReaderWriter; +typedef ClientAsyncResponseReader<ByteBuffer> GenericClientAsyncResponseReader; /// Generic stubs provide a type-unsafe interface to call gRPC methods /// by name. @@ -51,6 +53,14 @@ class GenericStub final { std::unique_ptr<GenericClientAsyncReaderWriter> PrepareCall( ClientContext* context, const grpc::string& method, CompletionQueue* cq); + /// Setup a unary call to a named method \a method using \a context, and don't + /// start it. Let it be started explicitly with StartCall. + /// The return value only indicates whether or not registration of the call + /// succeeded (i.e. the call won't proceed if the return value is nullptr). + std::unique_ptr<GenericClientAsyncResponseReader> PrepareUnaryCall( + ClientContext* context, const grpc::string& method, + const ByteBuffer& request, CompletionQueue* cq); + private: std::shared_ptr<ChannelInterface> channel_; }; diff --git a/include/grpc++/support/channel_arguments.h b/include/grpc++/support/channel_arguments.h index 7b6befeaf1..9dc505f008 100644 --- a/include/grpc++/support/channel_arguments.h +++ b/include/grpc++/support/channel_arguments.h @@ -64,6 +64,12 @@ class ChannelArguments { /// Set the compression algorithm for the channel. void SetCompressionAlgorithm(grpc_compression_algorithm algorithm); + /// Set the grpclb fallback timeout (in ms) for the channel. If this amount + /// of time has passed but we have not gotten any non-empty \a serverlist from + /// the balancer, we will fall back to use the backend address(es) returned by + /// the resolver. + void SetGrpclbFallbackTimeout(int fallback_timeout); + /// Set the socket mutator for the channel. void SetSocketMutator(grpc_socket_mutator* mutator); diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index fab7d438aa..1de289fba4 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -313,7 +313,7 @@ GRPCAPI grpc_call_error grpc_call_cancel_with_status(grpc_call *call, void *reserved); /** Ref a call. - THREAD SAFETY: grpc_call_unref is thread-compatible */ + THREAD SAFETY: grpc_call_ref is thread-compatible */ GRPCAPI void grpc_call_ref(grpc_call *call); /** Unref a call. diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h index 2005e25df2..95b1447935 100644 --- a/include/grpc/grpc_security.h +++ b/include/grpc/grpc_security.h @@ -249,19 +249,40 @@ typedef struct { 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. - - context is the information that can be used by the plugin to create auth - metadata. - - cb is the callback that needs to be called when the metadata is ready. - - user_data needs to be passed as the first parameter of the callback. */ - void (*get_metadata)(void *state, grpc_auth_metadata_context context, - grpc_credentials_plugin_metadata_cb cb, void *user_data); + /** 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); diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h index 90f03f49a3..65463bb33b 100644 --- a/include/grpc/impl/codegen/grpc_types.h +++ b/include/grpc/impl/codegen/grpc_types.h @@ -288,7 +288,11 @@ typedef struct { "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_timeout_ms" +#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. */ +#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" diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index 1904c636f7..0f4316c954 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -183,7 +183,6 @@ #define _BSD_SOURCE #endif #if TARGET_OS_IPHONE -#define GPR_FORBID_UNREACHABLE_CODE 1 #define GPR_PLATFORM_STRING "ios" #define GPR_CPU_IPHONE 1 #define GPR_PTHREAD_TLS 1 @@ -292,10 +291,6 @@ #endif #ifdef _MSC_VER -#ifdef _PYTHON_MSVC -// The Python 3.5 Windows runtime is missing InetNtop -#define GPR_WIN_INET_NTOP -#endif // _PYTHON_MSVC #if _MSC_VER < 1700 typedef __int8 int8_t; typedef __int16 int16_t; |