blob: 028842a776f8ac7cec8fcdb6bdda7c24fd01728c [file] [log] [blame]
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -08001/*
2 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02003 * Copyright 2015 gRPC authors.
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -08004 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02005 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -08008 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02009 * http://www.apache.org/licenses/LICENSE-2.0
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -080010 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +020011 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -080016 *
17 */
18
Vijay Paie8a7e302015-08-24 10:52:33 -070019#ifndef GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H
20#define GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -080021
22#include <functional>
23
24namespace grpc {
25
26// A thread pool interface for running callbacks.
27class ThreadPoolInterface {
28 public:
29 virtual ~ThreadPoolInterface() {}
30
31 // Schedule the given callback for execution.
vjpai72a44172015-07-16 21:44:44 -070032 virtual void Add(const std::function<void()>& callback) = 0;
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -080033};
34
ncteisen30939f82017-07-05 15:43:18 -070035// Allows different codebases to use their own thread pool impls
36typedef ThreadPoolInterface* (*CreateThreadPoolFunc)(void);
37void SetCreateThreadPool(CreateThreadPoolFunc func);
38
ncteisena5d557b2017-07-05 15:52:28 -070039ThreadPoolInterface* CreateDefaultThreadPool();
Vijay Pai69f24102015-07-15 12:33:37 -070040
Nicolas Nobleb7ebd3b2014-11-26 16:33:03 -080041} // namespace grpc
42
Vijay Paie8a7e302015-08-24 10:52:33 -070043#endif // GRPC_INTERNAL_CPP_THREAD_POOL_INTERFACE_H