Skip to content

Commit

Permalink
Refactor ServiceRequestInfo, ServiceRequestInfoMap, and ServiceInfoHo…
Browse files Browse the repository at this point in the history
…lder 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
  • Loading branch information
Evan Zou authored and facebook-github-bot committed Jan 10, 2025
1 parent 8ce7c9c commit a156593
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 30 deletions.
31 changes: 1 addition & 30 deletions thrift/lib/cpp2/async/AsyncProcessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
#include <thrift/lib/cpp2/async/SchemaV1.h>
#include <thrift/lib/cpp2/async/ServerRequestData.h>
#include <thrift/lib/cpp2/async/ServerStream.h>
#include <thrift/lib/cpp2/async/ServiceInfoHolder.h>
#include <thrift/lib/cpp2/async/Sink.h>
#include <thrift/lib/cpp2/protocol/Protocol.h>
#include <thrift/lib/cpp2/server/ConcurrencyControllerInterface.h>
Expand Down Expand Up @@ -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<std::string>
interactionName; // Interaction name if part of an interaction
concurrency::PRIORITY priority; // Method priority set in the IDL
std::optional<std::string>
createdInteraction; // The name of the interaction created by the RPC
};

using ServiceRequestInfoMap =
folly::F14ValueMap<std::string, ServiceRequestInfo>;

// 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:
Expand Down
33 changes: 33 additions & 0 deletions thrift/lib/cpp2/async/ServiceInfoHolder.h
Original file line number Diff line number Diff line change
@@ -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 <thrift/lib/cpp2/async/ServiceRequestInfo.h>

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
44 changes: 44 additions & 0 deletions thrift/lib/cpp2/async/ServiceRequestInfo.h
Original file line number Diff line number Diff line change
@@ -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 <thrift/lib/cpp/concurrency/Thread.h>
#include <thrift/lib/thrift/gen-cpp2/RpcMetadata_types.h>

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<std::string>
interactionName; // Interaction name if part of an interaction
concurrency::PRIORITY priority; // Method priority set in the IDL
std::optional<std::string>
createdInteraction; // The name of the interaction created by the RPC
};

using ServiceRequestInfoMap =
folly::F14ValueMap<std::string, ServiceRequestInfo>;

} // namespace apache::thrift

0 comments on commit a156593

Please sign in to comment.