From 488f17eb46450f68f4fc5c1581365633791751e6 Mon Sep 17 00:00:00 2001 From: Cheng-Yu Chung Date: Thu, 6 Oct 2022 13:18:24 -0400 Subject: [PATCH] Remove `include/grpcpp/impl/codegen/message_allocator.h` (#31246) --- .../grpcpp/impl/codegen/message_allocator.h | 52 ++----------------- include/grpcpp/support/message_allocator.h | 49 ++++++++++++++++- src/compiler/cpp_generator.cc | 4 +- test/cpp/codegen/compiler_test_golden | 2 +- 4 files changed, 54 insertions(+), 53 deletions(-) diff --git a/include/grpcpp/impl/codegen/message_allocator.h b/include/grpcpp/impl/codegen/message_allocator.h index 440c7f1d232..df21e02a8fb 100644 --- a/include/grpcpp/impl/codegen/message_allocator.h +++ b/include/grpcpp/impl/codegen/message_allocator.h @@ -19,55 +19,9 @@ #ifndef GRPCPP_IMPL_CODEGEN_MESSAGE_ALLOCATOR_H #define GRPCPP_IMPL_CODEGEN_MESSAGE_ALLOCATOR_H -// IWYU pragma: private, include +// IWYU pragma: private -namespace grpc { - -// NOTE: This is an API for advanced users who need custom allocators. -// Per rpc struct for the allocator. This is the interface to return to user. -class RpcAllocatorState { - public: - virtual ~RpcAllocatorState() = default; - // Optionally deallocate request early to reduce the size of working set. - // A custom MessageAllocator needs to be registered to make use of this. - // This is not abstract because implementing it is optional. - virtual void FreeRequest() {} -}; - -// This is the interface returned by the allocator. -// grpc library will call the methods to get request/response pointers and to -// release the object when it is done. -template -class MessageHolder : public RpcAllocatorState { - public: - // Release this object. For example, if the custom allocator's - // AllocateMessasge creates an instance of a subclass with new, the Release() - // should do a "delete this;". - virtual void Release() = 0; - RequestT* request() { return request_; } - ResponseT* response() { return response_; } - - protected: - void set_request(RequestT* request) { request_ = request; } - void set_response(ResponseT* response) { response_ = response; } - - private: - // NOTE: subclasses should set these pointers. - RequestT* request_; - ResponseT* response_; -}; - -// A custom allocator can be set via the generated code to a callback unary -// method, such as SetMessageAllocatorFor_Echo(custom_allocator). The allocator -// needs to be alive for the lifetime of the server. -// Implementations need to be thread-safe. -template -class MessageAllocator { - public: - virtual ~MessageAllocator() = default; - virtual MessageHolder* AllocateMessages() = 0; -}; - -} // namespace grpc +/// TODO(chengyuc): Remove this file after solving compatibility. +#include #endif // GRPCPP_IMPL_CODEGEN_MESSAGE_ALLOCATOR_H diff --git a/include/grpcpp/support/message_allocator.h b/include/grpcpp/support/message_allocator.h index 22a963f3afe..e801548fa3e 100644 --- a/include/grpcpp/support/message_allocator.h +++ b/include/grpcpp/support/message_allocator.h @@ -19,6 +19,53 @@ #ifndef GRPCPP_SUPPORT_MESSAGE_ALLOCATOR_H #define GRPCPP_SUPPORT_MESSAGE_ALLOCATOR_H -#include // IWYU pragma: export +namespace grpc { + +// NOTE: This is an API for advanced users who need custom allocators. +// Per rpc struct for the allocator. This is the interface to return to user. +class RpcAllocatorState { + public: + virtual ~RpcAllocatorState() = default; + // Optionally deallocate request early to reduce the size of working set. + // A custom MessageAllocator needs to be registered to make use of this. + // This is not abstract because implementing it is optional. + virtual void FreeRequest() {} +}; + +// This is the interface returned by the allocator. +// grpc library will call the methods to get request/response pointers and to +// release the object when it is done. +template +class MessageHolder : public RpcAllocatorState { + public: + // Release this object. For example, if the custom allocator's + // AllocateMessasge creates an instance of a subclass with new, the Release() + // should do a "delete this;". + virtual void Release() = 0; + RequestT* request() { return request_; } + ResponseT* response() { return response_; } + + protected: + void set_request(RequestT* request) { request_ = request; } + void set_response(ResponseT* response) { response_ = response; } + + private: + // NOTE: subclasses should set these pointers. + RequestT* request_; + ResponseT* response_; +}; + +// A custom allocator can be set via the generated code to a callback unary +// method, such as SetMessageAllocatorFor_Echo(custom_allocator). The allocator +// needs to be alive for the lifetime of the server. +// Implementations need to be thread-safe. +template +class MessageAllocator { + public: + virtual ~MessageAllocator() = default; + virtual MessageHolder* AllocateMessages() = 0; +}; + +} // namespace grpc #endif // GRPCPP_SUPPORT_MESSAGE_ALLOCATOR_H diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc index 3ea5ee1c85c..e714223bed0 100644 --- a/src/compiler/cpp_generator.cc +++ b/src/compiler/cpp_generator.cc @@ -143,7 +143,7 @@ std::string GetHeaderIncludes(grpc_generator::File* file, "grpcpp/support/client_callback.h", "grpcpp/client_context.h", "grpcpp/impl/codegen/completion_queue.h", - "grpcpp/impl/codegen/message_allocator.h", + "grpcpp/support/message_allocator.h", "grpcpp/impl/codegen/method_handler.h", "grpcpp/impl/codegen/proto_utils.h", "grpcpp/impl/codegen/rpc_method.h", @@ -1653,7 +1653,7 @@ std::string GetSourceIncludes(grpc_generator::File* file, "grpcpp/impl/codegen/channel_interface.h", "grpcpp/impl/codegen/client_unary_call.h", "grpcpp/support/client_callback.h", - "grpcpp/impl/codegen/message_allocator.h", + "grpcpp/support/message_allocator.h", "grpcpp/impl/codegen/method_handler.h", "grpcpp/impl/codegen/rpc_service_method.h", "grpcpp/impl/codegen/server_callback.h", diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden index ff836ab9f8d..f9236e29f89 100644 --- a/test/cpp/codegen/compiler_test_golden +++ b/test/cpp/codegen/compiler_test_golden @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include #include