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