From a15659323a26b526373ac41f3244bb04b6c601ea Mon Sep 17 00:00:00 2001 From: Evan Zou Date: Fri, 10 Jan 2025 02:04:32 -0800 Subject: [PATCH] Refactor ServiceRequestInfo, ServiceRequestInfoMap, and ServiceInfoHolder to ServiceRequestInfo.h and ServiceInfoHolder.h Summary: Title - this should be purely mechanical, i.e no behavioral change Reviewed By: sazonovkirill Differential Revision: D67879727 fbshipit-source-id: 1f3f2ea447cae5ae8039453597f4414c27a7601d --- thrift/lib/cpp2/async/AsyncProcessor.h | 31 +-------------- thrift/lib/cpp2/async/ServiceInfoHolder.h | 33 ++++++++++++++++ thrift/lib/cpp2/async/ServiceRequestInfo.h | 44 ++++++++++++++++++++++ 3 files changed, 78 insertions(+), 30 deletions(-) create mode 100644 thrift/lib/cpp2/async/ServiceInfoHolder.h create mode 100644 thrift/lib/cpp2/async/ServiceRequestInfo.h diff --git a/thrift/lib/cpp2/async/AsyncProcessor.h b/thrift/lib/cpp2/async/AsyncProcessor.h index 58b82696ed9..e8dda081de1 100644 --- a/thrift/lib/cpp2/async/AsyncProcessor.h +++ b/thrift/lib/cpp2/async/AsyncProcessor.h @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -82,36 +83,6 @@ class ServiceHandlerBase; class ServerRequest; class IResourcePoolAcceptor; -// This contains information about a request that is required in the thrift -// server prior to the AsyncProcessor::executeRequest interface. -struct ServiceRequestInfo { - bool isSync; // True if this has thread='eb' - RpcKind rpcKind; // Type of this request - // The qualified function name is currently an input to TProcessorEventHandler - // callbacks. We will refactor TProcessorEventHandler to remove the - // requirement to pass this as a single string. T112104402 - const char* functionName_deprecated; // Qualified function name (includes - // service name) - std::optional - interactionName; // Interaction name if part of an interaction - concurrency::PRIORITY priority; // Method priority set in the IDL - std::optional - createdInteraction; // The name of the interaction created by the RPC -}; - -using ServiceRequestInfoMap = - folly::F14ValueMap; - -// The base class for generated code that contains information about a service. -// Each service generates a subclass of this. -class ServiceInfoHolder { - public: - virtual ~ServiceInfoHolder() = default; - - // This function is generated from the thrift IDL. - virtual const ServiceRequestInfoMap& requestInfoMap() const = 0; -}; - // Returned by resource pool components when a request is rejected. class ServerRequestRejection { public: diff --git a/thrift/lib/cpp2/async/ServiceInfoHolder.h b/thrift/lib/cpp2/async/ServiceInfoHolder.h new file mode 100644 index 00000000000..6833a73129b --- /dev/null +++ b/thrift/lib/cpp2/async/ServiceInfoHolder.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include + +namespace apache::thrift { + +// The base class for generated code that contains information about a service. +// Each service generates a subclass of this. +class ServiceInfoHolder { + public: + virtual ~ServiceInfoHolder() = default; + + // This function is generated from the thrift IDL. + virtual const ServiceRequestInfoMap& requestInfoMap() const = 0; +}; + +} // namespace apache::thrift diff --git a/thrift/lib/cpp2/async/ServiceRequestInfo.h b/thrift/lib/cpp2/async/ServiceRequestInfo.h new file mode 100644 index 00000000000..283089097a1 --- /dev/null +++ b/thrift/lib/cpp2/async/ServiceRequestInfo.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include + +namespace apache::thrift { + +// This contains information about a request that is required in the thrift +// server prior to the AsyncProcessor::executeRequest interface. +struct ServiceRequestInfo { + bool isSync; // True if this has thread='eb' + RpcKind rpcKind; // Type of this request + // The qualified function name is currently an input to TProcessorEventHandler + // callbacks. We will refactor TProcessorEventHandler to remove the + // requirement to pass this as a single string. T112104402 + const char* functionName_deprecated; // Qualified function name (includes + // service name) + std::optional + interactionName; // Interaction name if part of an interaction + concurrency::PRIORITY priority; // Method priority set in the IDL + std::optional + createdInteraction; // The name of the interaction created by the RPC +}; + +using ServiceRequestInfoMap = + folly::F14ValueMap; + +} // namespace apache::thrift