aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-09-28 14:22:12 -0700
committerGravatar Craig Tiller <ctiller@google.com>2016-09-28 14:22:12 -0700
commitdb1a5cce471cb038953f4221401142da85c2412a (patch)
treeb56f4abfacd665381974819446c8f6f67f0d6040
parent42ee4d86b9fb3d47f6aa59fca5a2e2b0da1f092d (diff)
Buffer pool C++ wrapper
-rw-r--r--BUILD4
-rw-r--r--CMakeLists.txt4
-rw-r--r--Makefile4
-rw-r--r--build.yaml2
-rw-r--r--include/grpc++/buffer_pool.h70
-rw-r--r--include/grpc++/server_builder.h8
-rw-r--r--include/grpc++/support/channel_arguments.h8
-rw-r--r--src/cpp/common/buffer_pool.cc50
-rw-r--r--src/cpp/common/channel_arguments.cc14
-rw-r--r--src/cpp/server/server_builder.cc22
-rw-r--r--test/cpp/end2end/end2end_test.cc38
-rw-r--r--tools/doxygen/Doxyfile.c++1
-rw-r--r--tools/doxygen/Doxyfile.c++.internal2
-rw-r--r--tools/run_tests/sources_and_headers.json3
-rw-r--r--vsprojects/vcxproj/grpc++/grpc++.vcxproj3
-rw-r--r--vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters6
-rw-r--r--vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj3
-rw-r--r--vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters6
18 files changed, 245 insertions, 3 deletions
diff --git a/BUILD b/BUILD
index 69a40f9601..b82f546989 100644
--- a/BUILD
+++ b/BUILD
@@ -1367,6 +1367,7 @@ cc_library(
"src/cpp/client/create_channel_posix.cc",
"src/cpp/client/credentials_cc.cc",
"src/cpp/client/generic_stub.cc",
+ "src/cpp/common/buffer_pool.cc",
"src/cpp/common/channel_arguments.cc",
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
@@ -1480,6 +1481,7 @@ cc_library(
],
hdrs = [
"include/grpc++/alarm.h",
+ "include/grpc++/buffer_pool.h",
"include/grpc++/channel.h",
"include/grpc++/client_context.h",
"include/grpc++/completion_queue.h",
@@ -1771,6 +1773,7 @@ cc_library(
"src/cpp/client/create_channel_posix.cc",
"src/cpp/client/credentials_cc.cc",
"src/cpp/client/generic_stub.cc",
+ "src/cpp/common/buffer_pool.cc",
"src/cpp/common/channel_arguments.cc",
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
@@ -1884,6 +1887,7 @@ cc_library(
],
hdrs = [
"include/grpc++/alarm.h",
+ "include/grpc++/buffer_pool.h",
"include/grpc++/channel.h",
"include/grpc++/client_context.h",
"include/grpc++/completion_queue.h",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e56ed00fe6..04683f148a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1017,6 +1017,7 @@ add_library(grpc++
src/cpp/client/create_channel_posix.cc
src/cpp/client/credentials_cc.cc
src/cpp/client/generic_stub.cc
+ src/cpp/common/buffer_pool.cc
src/cpp/common/channel_arguments.cc
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
@@ -1148,6 +1149,7 @@ target_link_libraries(grpc++
foreach(_hdr
include/grpc++/alarm.h
+ include/grpc++/buffer_pool.h
include/grpc++/channel.h
include/grpc++/client_context.h
include/grpc++/completion_queue.h
@@ -1370,6 +1372,7 @@ add_library(grpc++_unsecure
src/cpp/client/create_channel_posix.cc
src/cpp/client/credentials_cc.cc
src/cpp/client/generic_stub.cc
+ src/cpp/common/buffer_pool.cc
src/cpp/common/channel_arguments.cc
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
@@ -1500,6 +1503,7 @@ target_link_libraries(grpc++_unsecure
foreach(_hdr
include/grpc++/alarm.h
+ include/grpc++/buffer_pool.h
include/grpc++/channel.h
include/grpc++/client_context.h
include/grpc++/completion_queue.h
diff --git a/Makefile b/Makefile
index 305066816e..8f9d301a09 100644
--- a/Makefile
+++ b/Makefile
@@ -3586,6 +3586,7 @@ LIBGRPC++_SRC = \
src/cpp/client/create_channel_posix.cc \
src/cpp/client/credentials_cc.cc \
src/cpp/client/generic_stub.cc \
+ src/cpp/common/buffer_pool.cc \
src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
@@ -3699,6 +3700,7 @@ LIBGRPC++_SRC = \
PUBLIC_HEADERS_CXX += \
include/grpc++/alarm.h \
+ include/grpc++/buffer_pool.h \
include/grpc++/channel.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
@@ -4214,6 +4216,7 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/client/create_channel_posix.cc \
src/cpp/client/credentials_cc.cc \
src/cpp/client/generic_stub.cc \
+ src/cpp/common/buffer_pool.cc \
src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
@@ -4327,6 +4330,7 @@ LIBGRPC++_UNSECURE_SRC = \
PUBLIC_HEADERS_CXX += \
include/grpc++/alarm.h \
+ include/grpc++/buffer_pool.h \
include/grpc++/channel.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
diff --git a/build.yaml b/build.yaml
index fda6eaaa29..b956704249 100644
--- a/build.yaml
+++ b/build.yaml
@@ -661,6 +661,7 @@ filegroups:
language: c++
public_headers:
- include/grpc++/alarm.h
+ - include/grpc++/buffer_pool.h
- include/grpc++/channel.h
- include/grpc++/client_context.h
- include/grpc++/completion_queue.h
@@ -720,6 +721,7 @@ filegroups:
- src/cpp/client/create_channel_posix.cc
- src/cpp/client/credentials_cc.cc
- src/cpp/client/generic_stub.cc
+ - src/cpp/common/buffer_pool.cc
- src/cpp/common/channel_arguments.cc
- src/cpp/common/channel_filter.cc
- src/cpp/common/completion_queue_cc.cc
diff --git a/include/grpc++/buffer_pool.h b/include/grpc++/buffer_pool.h
new file mode 100644
index 0000000000..3494cdffd9
--- /dev/null
+++ b/include/grpc++/buffer_pool.h
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_BUFFER_POOL_H
+#define GRPCXX_BUFFER_POOL_H
+
+struct grpc_buffer_pool;
+
+#include <grpc++/impl/codegen/config.h>
+
+namespace grpc {
+
+/// BufferPool represents a bound on memory usage by the gRPC library.
+/// A BufferPool can be attached to a server (via ServerBuilder), or a client
+/// channel (via ChannelArguments). gRPC will attempt to keep memory used by
+/// all attached entities below the BufferPool bound.
+class BufferPool GRPC_FINAL {
+ public:
+ explicit BufferPool(const grpc::string& name);
+ BufferPool();
+ ~BufferPool();
+
+ /// Resize this BufferPool to a new size. If new_size is smaller than the
+ /// current size of the pool, memory usage will be monotonically decreased
+ /// until it falls under new_size. No time bound is given for this to occur
+ /// however.
+ void Resize(size_t new_size);
+
+ grpc_buffer_pool* c_buffer_pool() const { return impl_; }
+
+ private:
+ BufferPool(const BufferPool& rhs);
+ BufferPool& operator=(const BufferPool& rhs);
+
+ grpc_buffer_pool* const impl_;
+};
+
+} // namespace grpc
+
+#endif
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 37f1f8cb80..282d49c643 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -43,9 +43,12 @@
#include <grpc++/support/config.h>
#include <grpc/compression.h>
+struct grpc_buffer_pool;
+
namespace grpc {
class AsyncGenericService;
+class BufferPool;
class CompletionQueue;
class RpcService;
class Server;
@@ -61,6 +64,7 @@ class ServerBuilderPluginTest;
class ServerBuilder {
public:
ServerBuilder();
+ ~ServerBuilder();
/// Register a service. This call does not take ownership of the service.
/// The service must exist for the lifetime of the \a Server instance returned
@@ -113,6 +117,9 @@ class ServerBuilder {
ServerBuilder& SetDefaultCompressionAlgorithm(
grpc_compression_algorithm algorithm);
+ /// Set the attached buffer pool for this server
+ ServerBuilder& SetBufferPool(const BufferPool& buffer_pool);
+
ServerBuilder& SetOption(std::unique_ptr<ServerBuilderOption> option);
/// Tries to bind \a server to the given \a addr.
@@ -187,6 +194,7 @@ class ServerBuilder {
std::vector<ServerCompletionQueue*> cqs_;
std::shared_ptr<ServerCredentials> creds_;
std::vector<std::unique_ptr<ServerBuilderPlugin>> plugins_;
+ grpc_buffer_pool* buffer_pool_;
AsyncGenericService* generic_service_;
struct {
bool is_set;
diff --git a/include/grpc++/support/channel_arguments.h b/include/grpc++/support/channel_arguments.h
index ae243939e9..e6fdc3bf17 100644
--- a/include/grpc++/support/channel_arguments.h
+++ b/include/grpc++/support/channel_arguments.h
@@ -46,6 +46,8 @@ namespace testing {
class ChannelArgumentsTest;
} // namespace testing
+class BufferPool;
+
/// Options for channel creation. The user can use generic setters to pass
/// key value pairs down to c channel creation code. For grpc related options,
/// concrete setters are provided.
@@ -80,6 +82,9 @@ class ChannelArguments {
/// The given string will be sent at the front of the user agent string.
void SetUserAgentPrefix(const grpc::string& user_agent_prefix);
+ /// The given buffer pool will be attached to the constructed channel
+ void SetBufferPool(const BufferPool& buffer_pool);
+
// Generic channel argument setters. Only for advanced use cases.
/// Set an integer argument \a value under \a key.
void SetInt(const grpc::string& key, int value);
@@ -88,6 +93,9 @@ class ChannelArguments {
/// Set a pointer argument \a value under \a key. Owership is not transferred.
void SetPointer(const grpc::string& key, void* value);
+ void SetPointerWithVtable(const grpc::string& key, void* value,
+ const grpc_arg_pointer_vtable* vtable);
+
/// Set a textual argument \a value under \a key.
void SetString(const grpc::string& key, const grpc::string& value);
diff --git a/src/cpp/common/buffer_pool.cc b/src/cpp/common/buffer_pool.cc
new file mode 100644
index 0000000000..9d65bd7431
--- /dev/null
+++ b/src/cpp/common/buffer_pool.cc
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc++/buffer_pool.h>
+#include <grpc/grpc.h>
+
+namespace grpc {
+
+BufferPool::BufferPool() : impl_(grpc_buffer_pool_create(nullptr)) {}
+
+BufferPool::BufferPool(const grpc::string& name)
+ : impl_(grpc_buffer_pool_create(name.c_str())) {}
+
+BufferPool::~BufferPool() { grpc_buffer_pool_unref(impl_); }
+
+void BufferPool::Resize(size_t new_size) {
+ grpc_buffer_pool_resize(impl_, new_size);
+}
+
+} // namespace grpc
diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc
index f297ae8587..afde513e1e 100644
--- a/src/cpp/common/channel_arguments.cc
+++ b/src/cpp/common/channel_arguments.cc
@@ -34,6 +34,7 @@
#include <sstream>
+#include <grpc++/buffer_pool.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
@@ -113,6 +114,11 @@ void ChannelArguments::SetUserAgentPrefix(
}
}
+void ChannelArguments::SetBufferPool(const grpc::BufferPool& buffer_pool) {
+ SetPointerWithVtable(GRPC_ARG_BUFFER_POOL, buffer_pool.c_buffer_pool(),
+ grpc_buffer_pool_arg_vtable());
+}
+
void ChannelArguments::SetInt(const grpc::string& key, int value) {
grpc_arg arg;
arg.type = GRPC_ARG_INTEGER;
@@ -127,12 +133,18 @@ void ChannelArguments::SetPointer(const grpc::string& key, void* value) {
static const grpc_arg_pointer_vtable vtable = {
&PointerVtableMembers::Copy, &PointerVtableMembers::Destroy,
&PointerVtableMembers::Compare};
+ SetPointerWithVtable(key, value, &vtable);
+}
+
+void ChannelArguments::SetPointerWithVtable(
+ const grpc::string& key, void* value,
+ const grpc_arg_pointer_vtable* vtable) {
grpc_arg arg;
arg.type = GRPC_ARG_POINTER;
strings_.push_back(key);
arg.key = const_cast<char*>(strings_.back().c_str());
arg.value.pointer.p = value;
- arg.value.pointer.vtable = &vtable;
+ arg.value.pointer.vtable = vtable;
args_.push_back(arg);
}
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 2980b16c56..be5b97846a 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -33,6 +33,7 @@
#include <grpc++/server_builder.h>
+#include <grpc++/buffer_pool.h>
#include <grpc++/impl/service_type.h>
#include <grpc++/server.h>
#include <grpc/support/log.h>
@@ -54,6 +55,7 @@ static void do_plugin_list_init(void) {
ServerBuilder::ServerBuilder()
: max_receive_message_size_(-1),
max_send_message_size_(-1),
+ buffer_pool_(nullptr),
generic_service_(nullptr) {
gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
for (auto it = g_plugin_factory_list->begin();
@@ -70,6 +72,12 @@ ServerBuilder::ServerBuilder()
sizeof(maybe_default_compression_algorithm_));
}
+ServerBuilder::~ServerBuilder() {
+ if (buffer_pool_ != nullptr) {
+ grpc_buffer_pool_unref(buffer_pool_);
+ }
+}
+
std::unique_ptr<ServerCompletionQueue> ServerBuilder::AddCompletionQueue(
bool is_frequently_polled) {
ServerCompletionQueue* cq = new ServerCompletionQueue(is_frequently_polled);
@@ -130,6 +138,16 @@ ServerBuilder& ServerBuilder::SetDefaultCompressionAlgorithm(
return *this;
}
+ServerBuilder& ServerBuilder::SetBufferPool(
+ const grpc::BufferPool& buffer_pool) {
+ if (buffer_pool_ != nullptr) {
+ grpc_buffer_pool_unref(buffer_pool_);
+ }
+ buffer_pool_ = buffer_pool.c_buffer_pool();
+ grpc_buffer_pool_ref(buffer_pool_);
+ return *this;
+}
+
ServerBuilder& ServerBuilder::AddListeningPort(
const grpc::string& addr, std::shared_ptr<ServerCredentials> creds,
int* selected_port) {
@@ -178,6 +196,10 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
args.SetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM,
maybe_default_compression_algorithm_.algorithm);
}
+ if (buffer_pool_ != nullptr) {
+ args.SetPointerWithVtable(GRPC_ARG_BUFFER_POOL, buffer_pool_,
+ grpc_buffer_pool_arg_vtable());
+ }
std::unique_ptr<Server> server(new Server(thread_pool.release(), true,
max_receive_message_size_, &args));
ServerInitializer* initializer = server->initializer();
diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index b1d3ce92f6..17e6d248b5 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -34,6 +34,7 @@
#include <mutex>
#include <thread>
+#include <grpc++/buffer_pool.h>
#include <grpc++/channel.h>
#include <grpc++/client_context.h>
#include <grpc++/create_channel.h>
@@ -240,6 +241,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> {
server_address_ << "127.0.0.1:" << port;
// Setup server
ServerBuilder builder;
+ ConfigureServerBuilder(&builder);
auto server_creds = GetServerCredentials(GetParam().credentials_type);
if (GetParam().credentials_type != kInsecureCredentialsType) {
server_creds->SetAuthMetadataProcessor(processor);
@@ -247,13 +249,16 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> {
builder.AddListeningPort(server_address_.str(), server_creds);
builder.RegisterService(&service_);
builder.RegisterService("foo.test.youtube.com", &special_service_);
- builder.SetMaxMessageSize(
- kMaxMessageSize_); // For testing max message size.
builder.RegisterService(&dup_pkg_service_);
server_ = builder.BuildAndStart();
is_server_started_ = true;
}
+ virtual void ConfigureServerBuilder(ServerBuilder* builder) {
+ builder->SetMaxMessageSize(
+ kMaxMessageSize_); // For testing max message size.
+ }
+
void ResetChannel() {
if (!is_server_started_) {
StartServer(std::shared_ptr<AuthMetadataProcessor>());
@@ -1476,6 +1481,31 @@ TEST_P(SecureEnd2endTest, ClientAuthContext) {
}
}
+class BufferPoolEnd2endTest : public End2endTest {
+ public:
+ BufferPoolEnd2endTest() : server_buffer_pool_("server_buffer_pool") {}
+
+ virtual void ConfigureServerBuilder(ServerBuilder* builder) GRPC_OVERRIDE {
+ builder->SetBufferPool(server_buffer_pool_);
+ }
+
+ private:
+ BufferPool server_buffer_pool_;
+};
+
+TEST_P(BufferPoolEnd2endTest, SimpleRequest) {
+ ResetStub();
+
+ EchoRequest request;
+ EchoResponse response;
+ request.set_message("Hello");
+
+ ClientContext context;
+ Status s = stub_->Echo(&context, request, &response);
+ EXPECT_EQ(response.message(), request.message());
+ EXPECT_TRUE(s.ok());
+}
+
std::vector<TestScenario> CreateTestScenarios(bool use_proxy,
bool test_insecure,
bool test_secure) {
@@ -1513,6 +1543,10 @@ INSTANTIATE_TEST_CASE_P(SecureEnd2end, SecureEnd2endTest,
::testing::ValuesIn(CreateTestScenarios(false, false,
true)));
+INSTANTIATE_TEST_CASE_P(BufferPoolEnd2end, BufferPoolEnd2endTest,
+ ::testing::ValuesIn(CreateTestScenarios(false, true,
+ true)));
+
} // namespace
} // namespace testing
} // namespace grpc
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 2a56d40c63..2136013a76 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -761,6 +761,7 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched.
INPUT = include/grpc++/alarm.h \
+include/grpc++/buffer_pool.h \
include/grpc++/channel.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 19ceb16375..3f8df1d4ad 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -761,6 +761,7 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched.
INPUT = include/grpc++/alarm.h \
+include/grpc++/buffer_pool.h \
include/grpc++/channel.h \
include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
@@ -968,6 +969,7 @@ src/cpp/client/create_channel_internal.cc \
src/cpp/client/create_channel_posix.cc \
src/cpp/client/credentials_cc.cc \
src/cpp/client/generic_stub.cc \
+src/cpp/common/buffer_pool.cc \
src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index fd888f9abb..79a894a800 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -6819,6 +6819,7 @@
],
"headers": [
"include/grpc++/alarm.h",
+ "include/grpc++/buffer_pool.h",
"include/grpc++/channel.h",
"include/grpc++/client_context.h",
"include/grpc++/completion_queue.h",
@@ -6874,6 +6875,7 @@
"name": "grpc++_base",
"src": [
"include/grpc++/alarm.h",
+ "include/grpc++/buffer_pool.h",
"include/grpc++/channel.h",
"include/grpc++/client_context.h",
"include/grpc++/completion_queue.h",
@@ -6928,6 +6930,7 @@
"src/cpp/client/create_channel_posix.cc",
"src/cpp/client/credentials_cc.cc",
"src/cpp/client/generic_stub.cc",
+ "src/cpp/common/buffer_pool.cc",
"src/cpp/common/channel_arguments.cc",
"src/cpp/common/channel_filter.cc",
"src/cpp/common/channel_filter.h",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 497e370a5e..9339a26893 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -259,6 +259,7 @@
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\alarm.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc++\buffer_pool.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\channel.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\client_context.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\completion_queue.h" />
@@ -485,6 +486,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\client\generic_stub.cc">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\cpp\common\buffer_pool.cc">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_arguments.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_filter.cc">
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index e26f3853cb..1c39f52f84 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -46,6 +46,9 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\client\generic_stub.cc">
<Filter>src\cpp\client</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\cpp\common\buffer_pool.cc">
+ <Filter>src\cpp\common</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_arguments.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
@@ -381,6 +384,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\alarm.h">
<Filter>include\grpc++</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc++\buffer_pool.h">
+ <Filter>include\grpc++</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\channel.h">
<Filter>include\grpc++</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 19e8438f28..c9c10ec75f 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -259,6 +259,7 @@
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\alarm.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc++\buffer_pool.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\channel.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\client_context.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\completion_queue.h" />
@@ -471,6 +472,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\client\generic_stub.cc">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\cpp\common\buffer_pool.cc">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_arguments.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_filter.cc">
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 5b978fcb0b..e410c95a2d 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -31,6 +31,9 @@
<ClCompile Include="$(SolutionDir)\..\src\cpp\client\generic_stub.cc">
<Filter>src\cpp\client</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\cpp\common\buffer_pool.cc">
+ <Filter>src\cpp\common</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\cpp\common\channel_arguments.cc">
<Filter>src\cpp\common</Filter>
</ClCompile>
@@ -366,6 +369,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\alarm.h">
<Filter>include\grpc++</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc++\buffer_pool.h">
+ <Filter>include\grpc++</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\channel.h">
<Filter>include\grpc++</Filter>
</ClInclude>