diff options
author | David Garcia Quintas <dgq@google.com> | 2016-06-03 14:18:01 -0700 |
---|---|---|
committer | David Garcia Quintas <dgq@google.com> | 2016-06-03 14:18:01 -0700 |
commit | 55c08f81cff3d8231d4ae18b2a8f9e4abccc2d76 (patch) | |
tree | 0ad9cdab1db83fe008829bdcfedf2525ab94d860 /include | |
parent | 3e4f49f88d611efb9573972a18ca727f50292d14 (diff) | |
parent | 84f71932eaf8b601355189896fc5b91449ac82d2 (diff) |
Merge branch 'master' of github.com:grpc/grpc into compression_md_level_bis
Diffstat (limited to 'include')
-rw-r--r-- | include/grpc++/impl/codegen/channel_interface.h | 10 | ||||
-rw-r--r-- | include/grpc++/impl/codegen/completion_queue.h | 13 | ||||
-rw-r--r-- | include/grpc++/server_builder.h | 12 | ||||
-rw-r--r-- | include/grpc/grpc.h | 11 | ||||
-rw-r--r-- | include/grpc/impl/codegen/atm.h | 4 | ||||
-rw-r--r-- | include/grpc/impl/codegen/atm_windows.h (renamed from include/grpc/impl/codegen/atm_win32.h) | 6 | ||||
-rw-r--r-- | include/grpc/impl/codegen/connectivity_state.h | 2 | ||||
-rw-r--r-- | include/grpc/impl/codegen/grpc_types.h | 2 | ||||
-rw-r--r-- | include/grpc/impl/codegen/port_platform.h | 24 | ||||
-rw-r--r-- | include/grpc/impl/codegen/sync.h | 4 | ||||
-rw-r--r-- | include/grpc/impl/codegen/sync_windows.h (renamed from include/grpc/impl/codegen/sync_win32.h) | 6 | ||||
-rw-r--r-- | include/grpc/support/atm_windows.h (renamed from include/grpc/support/sync_win32.h) | 8 | ||||
-rw-r--r-- | include/grpc/support/log_windows.h (renamed from include/grpc/support/log_win32.h) | 6 | ||||
-rw-r--r-- | include/grpc/support/sync_windows.h (renamed from include/grpc/support/atm_win32.h) | 8 |
14 files changed, 77 insertions, 39 deletions
diff --git a/include/grpc++/impl/codegen/channel_interface.h b/include/grpc++/impl/codegen/channel_interface.h index 6fcd5c315c..cf78438117 100644 --- a/include/grpc++/impl/codegen/channel_interface.h +++ b/include/grpc++/impl/codegen/channel_interface.h @@ -85,6 +85,16 @@ class ChannelInterface { return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time()); } + /// Wait for this channel to be connected + template <typename T> + bool WaitForConnected(T deadline) { + grpc_connectivity_state state; + while ((state = GetState(true)) != GRPC_CHANNEL_READY) { + if (!WaitForStateChange(state, deadline)) return false; + } + return true; + } + private: template <class R> friend class ::grpc::ClientReader; diff --git a/include/grpc++/impl/codegen/completion_queue.h b/include/grpc++/impl/codegen/completion_queue.h index 56864d6d53..1b84b44705 100644 --- a/include/grpc++/impl/codegen/completion_queue.h +++ b/include/grpc++/impl/codegen/completion_queue.h @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -222,9 +222,18 @@ class CompletionQueue : private GrpcLibraryCodegen { /// A specific type of completion queue used by the processing of notifications /// by servers. Instantiated by \a ServerBuilder. class ServerCompletionQueue : public CompletionQueue { + public: + bool IsFrequentlyPolled() { return is_frequently_polled_; } + private: + bool is_frequently_polled_; friend class ServerBuilder; - ServerCompletionQueue() {} + /// \param is_frequently_polled Informs the GPRC library about whether the + /// server completion queue would be actively polled (by calling Next() or + /// AsyncNext()). By default all server completion queues are assumed to be + /// frequently polled. + ServerCompletionQueue(bool is_frequently_polled = true) + : is_frequently_polled_(is_frequently_polled) {} }; } // namespace grpc diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h index c48c86d2b8..54f01d11b5 100644 --- a/include/grpc++/server_builder.h +++ b/include/grpc++/server_builder.h @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -122,7 +122,15 @@ class ServerBuilder { /// Add a completion queue for handling asynchronous services /// Caller is required to keep this completion queue live until /// the server is destroyed. - std::unique_ptr<ServerCompletionQueue> AddCompletionQueue(); + /// + /// \param is_frequently_polled This is an optional parameter to inform GRPC + /// library about whether this completion queue would be frequently polled + /// (i.e by calling Next() or AsyncNext()). The default value is 'true' and is + /// the recommended setting. Setting this to 'false' (i.e not polling the + /// completion queue frequently) will have a significantly negative + /// performance impact and hence should not be used in production use cases. + std::unique_ptr<ServerCompletionQueue> AddCompletionQueue( + bool is_frequently_polled = true); /// Return a running server which is ready for processing calls. std::unique_ptr<Server> BuildAndStart(); diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h index 0ca28c0fef..6f7a67b715 100644 --- a/include/grpc/grpc.h +++ b/include/grpc/grpc.h @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -334,6 +334,15 @@ GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved); +/** Register a non-listening completion queue with the server. This API is + similar to grpc_server_register_completion_queue except that the server will + not use this completion_queue to listen to any incoming channels. + + Registering a non-listening completion queue will have negative performance + impact and hence this API is not recommended for production use cases. */ +GRPCAPI void grpc_server_register_non_listening_completion_queue( + grpc_server *server, grpc_completion_queue *q, void *reserved); + /** Add a HTTP2 over plaintext over tcp listener. Returns bound port number on success, 0 on failure. REQUIRES: server not started */ diff --git a/include/grpc/impl/codegen/atm.h b/include/grpc/impl/codegen/atm.h index 5376026dde..5589d5d411 100644 --- a/include/grpc/impl/codegen/atm.h +++ b/include/grpc/impl/codegen/atm.h @@ -83,8 +83,8 @@ #include <grpc/impl/codegen/atm_gcc_atomic.h> #elif defined(GPR_GCC_SYNC) #include <grpc/impl/codegen/atm_gcc_sync.h> -#elif defined(GPR_WIN32_ATOMIC) -#include <grpc/impl/codegen/atm_win32.h> +#elif defined(GPR_WINDOWS_ATOMIC) +#include <grpc/impl/codegen/atm_windows.h> #else #error could not determine platform for atm #endif diff --git a/include/grpc/impl/codegen/atm_win32.h b/include/grpc/impl/codegen/atm_windows.h index 7c1ccaf8e2..d5fa8c0f62 100644 --- a/include/grpc/impl/codegen/atm_win32.h +++ b/include/grpc/impl/codegen/atm_windows.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPC_IMPL_CODEGEN_ATM_WIN32_H -#define GRPC_IMPL_CODEGEN_ATM_WIN32_H +#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> @@ -122,4 +122,4 @@ static __inline gpr_atm gpr_atm_full_fetch_add(gpr_atm *p, gpr_atm delta) { return old; } -#endif /* GRPC_IMPL_CODEGEN_ATM_WIN32_H */ +#endif /* GRPC_IMPL_CODEGEN_ATM_WINDOWS_H */ diff --git a/include/grpc/impl/codegen/connectivity_state.h b/include/grpc/impl/codegen/connectivity_state.h index 5bb9eb8f4e..71865d8a56 100644 --- a/include/grpc/impl/codegen/connectivity_state.h +++ b/include/grpc/impl/codegen/connectivity_state.h @@ -49,7 +49,7 @@ typedef enum { /** 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_FATAL_FAILURE + GRPC_CHANNEL_SHUTDOWN } grpc_connectivity_state; #ifdef __cplusplus diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h index b4ccafd1ab..a209085386 100644 --- a/include/grpc/impl/codegen/grpc_types.h +++ b/include/grpc/impl/codegen/grpc_types.h @@ -115,6 +115,8 @@ typedef struct { /* Channel argument keys: */ /** Enable census for tracing and stats collection */ #define GRPC_ARG_ENABLE_CENSUS "grpc.census" +/** Enable load reporting */ +#define GRPC_ARG_ENABLE_LOAD_REPORTING "grpc.loadreporting" /** Maximum number of concurrent incoming streams to allow on a http2 connection */ #define GRPC_ARG_MAX_CONCURRENT_STREAMS "grpc.max_concurrent_streams" diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index d2d9ac7808..be4215a54b 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -89,10 +89,10 @@ #define GPR_ARCH_32 1 #endif #define GPR_PLATFORM_STRING "windows" -#define GPR_WIN32 1 +#define GPR_WINDOWS 1 #define GPR_WINSOCK_SOCKET 1 #define GPR_WINDOWS_SUBPROCESS 1 -#define GPR_WIN32_ENV +#define GPR_WINDOWS_ENV #ifdef __MSYS__ #define GPR_GETPID_IN_UNISTD_H 1 #define GPR_MSYS_TMPFILE @@ -101,17 +101,17 @@ #define GPR_POSIX_TIME #else #define GPR_GETPID_IN_PROCESS_H 1 -#define GPR_WIN32_TMPFILE -#define GPR_WIN32_LOG +#define GPR_WINDOWS_TMPFILE +#define GPR_WINDOWS_LOG #define GPR_WINDOWS_CRASH_HANDLER 1 -#define GPR_WIN32_STRING -#define GPR_WIN32_TIME +#define GPR_WINDOWS_STRING +#define GPR_WINDOWS_TIME #endif #ifdef __GNUC__ #define GPR_GCC_ATOMIC 1 #define GPR_GCC_TLS 1 #else -#define GPR_WIN32_ATOMIC 1 +#define GPR_WINDOWS_ATOMIC 1 #define GPR_MSVC_TLS 1 #endif #elif defined(GPR_MANYLINUX1) @@ -386,19 +386,19 @@ typedef unsigned __int64 uint64_t; /* Validate platform combinations */ #if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \ - defined(GPR_WIN32_ATOMIC) != \ + defined(GPR_WINDOWS_ATOMIC) != \ 1 -#error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WIN32_ATOMIC +#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_WIN32) + \ - defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \ +#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_WIN32, GPR_CPU_IPHONE, GPR_CPU_CUSTOM +#error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM #endif #if defined(GPR_POSIX_MULTIPOLL_WITH_POLL) && !defined(GPR_POSIX_SOCKET) diff --git a/include/grpc/impl/codegen/sync.h b/include/grpc/impl/codegen/sync.h index 6fd7d64b29..5542482ed8 100644 --- a/include/grpc/impl/codegen/sync.h +++ b/include/grpc/impl/codegen/sync.h @@ -58,8 +58,8 @@ #if defined(GPR_POSIX_SYNC) #include <grpc/impl/codegen/sync_posix.h> -#elif defined(GPR_WIN32) -#include <grpc/impl/codegen/sync_win32.h> +#elif defined(GPR_WINDOWS) +#include <grpc/impl/codegen/sync_windows.h> #elif !defined(GPR_CUSTOM_SYNC) #error Unable to determine platform for sync #endif diff --git a/include/grpc/impl/codegen/sync_win32.h b/include/grpc/impl/codegen/sync_windows.h index bdc43dd99a..aa4e5153da 100644 --- a/include/grpc/impl/codegen/sync_win32.h +++ b/include/grpc/impl/codegen/sync_windows.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPC_IMPL_CODEGEN_SYNC_WIN32_H -#define GRPC_IMPL_CODEGEN_SYNC_WIN32_H +#ifndef GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H +#define GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H #include <grpc/impl/codegen/sync_generic.h> @@ -46,4 +46,4 @@ typedef CONDITION_VARIABLE gpr_cv; typedef INIT_ONCE gpr_once; #define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT -#endif /* GRPC_IMPL_CODEGEN_SYNC_WIN32_H */ +#endif /* GRPC_IMPL_CODEGEN_SYNC_WINDOWS_H */ diff --git a/include/grpc/support/sync_win32.h b/include/grpc/support/atm_windows.h index 5631c52974..6aec5b7212 100644 --- a/include/grpc/support/sync_win32.h +++ b/include/grpc/support/atm_windows.h @@ -31,9 +31,9 @@ * */ -#ifndef GRPC_SUPPORT_SYNC_WIN32_H -#define GRPC_SUPPORT_SYNC_WIN32_H +#ifndef GRPC_SUPPORT_ATM_WINDOWS_H +#define GRPC_SUPPORT_ATM_WINDOWS_H -#include <grpc/impl/codegen/sync_win32.h> +#include <grpc/impl/codegen/atm_windows.h> -#endif /* GRPC_SUPPORT_SYNC_WIN32_H */ +#endif /* GRPC_SUPPORT_ATM_WINDOWS_H */ diff --git a/include/grpc/support/log_win32.h b/include/grpc/support/log_windows.h index e5c25e06fc..12bf8cc1f5 100644 --- a/include/grpc/support/log_win32.h +++ b/include/grpc/support/log_windows.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPC_SUPPORT_LOG_WIN32_H -#define GRPC_SUPPORT_LOG_WIN32_H +#ifndef GRPC_SUPPORT_LOG_WINDOWS_H +#define GRPC_SUPPORT_LOG_WINDOWS_H #ifdef __cplusplus extern "C" { @@ -48,4 +48,4 @@ GPRAPI char *gpr_format_message(int messageid); } #endif -#endif /* GRPC_SUPPORT_LOG_WIN32_H */ +#endif /* GRPC_SUPPORT_LOG_WINDOWS_H */ diff --git a/include/grpc/support/atm_win32.h b/include/grpc/support/sync_windows.h index 13526d9f3e..0624e0c3b5 100644 --- a/include/grpc/support/atm_win32.h +++ b/include/grpc/support/sync_windows.h @@ -31,9 +31,9 @@ * */ -#ifndef GRPC_SUPPORT_ATM_WIN32_H -#define GRPC_SUPPORT_ATM_WIN32_H +#ifndef GRPC_SUPPORT_SYNC_WINDOWS_H +#define GRPC_SUPPORT_SYNC_WINDOWS_H -#include <grpc/impl/codegen/atm_win32.h> +#include <grpc/impl/codegen/sync_windows.h> -#endif /* GRPC_SUPPORT_ATM_WIN32_H */ +#endif /* GRPC_SUPPORT_SYNC_WINDOWS_H */ |