Make CreateThreadPool settable

pull/11693/head
ncteisen 8 years ago
parent 10bed24e8b
commit 30939f8854
  1. 2
      src/cpp/client/secure_credentials.cc
  2. 12
      src/cpp/server/create_default_thread_pool.cc
  3. 2
      src/cpp/server/secure_server_credentials.h
  4. 6
      src/cpp/server/thread_pool_interface.h

@ -207,7 +207,7 @@ void MetadataCredentialsPluginWrapper::InvokePlugin(
MetadataCredentialsPluginWrapper::MetadataCredentialsPluginWrapper( MetadataCredentialsPluginWrapper::MetadataCredentialsPluginWrapper(
std::unique_ptr<MetadataCredentialsPlugin> plugin) std::unique_ptr<MetadataCredentialsPlugin> plugin)
: thread_pool_(CreateDefaultThreadPool()), plugin_(std::move(plugin)) {} : thread_pool_(CreateThreadPool()), plugin_(std::move(plugin)) {}
std::shared_ptr<CallCredentials> MetadataCredentialsFromPlugin( std::shared_ptr<CallCredentials> MetadataCredentialsFromPlugin(
std::unique_ptr<MetadataCredentialsPlugin> plugin) { std::unique_ptr<MetadataCredentialsPlugin> plugin) {

@ -24,12 +24,22 @@
namespace grpc { namespace grpc {
ThreadPoolInterface* CreateDefaultThreadPool() { static ThreadPoolInterface* CreateDefaultThreadPool() {
int cores = gpr_cpu_num_cores(); int cores = gpr_cpu_num_cores();
if (!cores) cores = 4; if (!cores) cores = 4;
return new DynamicThreadPool(cores); return new DynamicThreadPool(cores);
} }
static CreateThreadPoolFunc g_ctp_impl = CreateDefaultThreadPool;
ThreadPoolInterface* CreateThreadPool() {
return g_ctp_impl();
}
void SetCreateThreadPool(CreateThreadPoolFunc func) {
g_ctp_impl = func;
}
} // namespace grpc } // namespace grpc
#endif // !GRPC_CUSTOM_DEFAULT_THREAD_POOL #endif // !GRPC_CUSTOM_DEFAULT_THREAD_POOL

@ -39,7 +39,7 @@ class AuthMetadataProcessorAyncWrapper final {
AuthMetadataProcessorAyncWrapper( AuthMetadataProcessorAyncWrapper(
const std::shared_ptr<AuthMetadataProcessor>& processor) const std::shared_ptr<AuthMetadataProcessor>& processor)
: thread_pool_(CreateDefaultThreadPool()), processor_(processor) {} : thread_pool_(CreateThreadPool()), processor_(processor) {}
private: private:
void InvokeProcessor(grpc_auth_context* context, const grpc_metadata* md, void InvokeProcessor(grpc_auth_context* context, const grpc_metadata* md,

@ -32,7 +32,11 @@ class ThreadPoolInterface {
virtual void Add(const std::function<void()>& callback) = 0; virtual void Add(const std::function<void()>& callback) = 0;
}; };
ThreadPoolInterface* CreateDefaultThreadPool(); // Allows different codebases to use their own thread pool impls
typedef ThreadPoolInterface* (*CreateThreadPoolFunc)(void);
void SetCreateThreadPool(CreateThreadPoolFunc func);
ThreadPoolInterface* CreateThreadPool();
} // namespace grpc } // namespace grpc

Loading…
Cancel
Save