Skip to content

Commit

Permalink
Make CreateThreadPool settable
Browse files Browse the repository at this point in the history
  • Loading branch information
ncteisen committed Jul 19, 2017
1 parent 10bed24 commit 30939f8
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/cpp/client/secure_credentials.cc
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ void MetadataCredentialsPluginWrapper::InvokePlugin(

MetadataCredentialsPluginWrapper::MetadataCredentialsPluginWrapper(
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::unique_ptr<MetadataCredentialsPlugin> plugin) {
Expand Down
12 changes: 11 additions & 1 deletion src/cpp/server/create_default_thread_pool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,22 @@

namespace grpc {

ThreadPoolInterface* CreateDefaultThreadPool() {
static ThreadPoolInterface* CreateDefaultThreadPool() {
int cores = gpr_cpu_num_cores();
if (!cores) cores = 4;
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

#endif // !GRPC_CUSTOM_DEFAULT_THREAD_POOL
2 changes: 1 addition & 1 deletion src/cpp/server/secure_server_credentials.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class AuthMetadataProcessorAyncWrapper final {

AuthMetadataProcessorAyncWrapper(
const std::shared_ptr<AuthMetadataProcessor>& processor)
: thread_pool_(CreateDefaultThreadPool()), processor_(processor) {}
: thread_pool_(CreateThreadPool()), processor_(processor) {}

private:
void InvokeProcessor(grpc_auth_context* context, const grpc_metadata* md,
Expand Down
6 changes: 5 additions & 1 deletion src/cpp/server/thread_pool_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@ class ThreadPoolInterface {
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

Expand Down

0 comments on commit 30939f8

Please sign in to comment.