/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated @nocommit
 */

#pragma once

#include <thrift/lib/cpp2/gen/module_types_h.h>
#include "thrift/lib/cpp2/util/ManagedStringView.h"
#include "thrift/lib/thrift/RpcMetadata_extra.h"
#include "folly/container/F14Map.h"

namespace apache::thrift {
namespace ident {
struct algorithm;
struct checksum;
struct salt;
struct levelPreset;
struct levelPreset;
struct levelPreset;
struct payload;
struct zlibConfig;
struct zstdConfig;
struct customConfig;
struct lz4Config;
struct codecConfig;
struct compressionSizeLimit;
struct compressionAlgos;
struct useStopTLS;
struct useStopTLSV2;
struct interactionId;
struct interactionName;
struct interactionId;
struct fdSeqNum;
struct numFds;
struct logSampleRatio;
struct logErrorSampleRatio;
struct requestId;
struct routingTarget;
struct requestAttemptId;
struct protocol;
struct name;
struct kind;
struct clientTimeoutMs;
struct queueTimeoutMs;
struct priority;
struct otherMetadata;
struct crc32c;
struct loadMetric;
struct compression;
struct compressionConfig;
struct interactionId;
struct interactionCreate;
struct clientId;
struct serviceTraceMeta;
struct frameworkMetadata;
struct fdMetadata;
struct loggingContext;
struct tenantId;
struct checksum;
struct checksumResponse;
struct secondaryLoadMetric;
struct kind;
struct blame;
struct safety;
struct errorClassification;
struct errorClassification;
struct declaredException;
struct DEPRECATED_proxyException;
struct appUnknownException;
struct anyException;
struct name_utf8;
struct what_utf8;
struct metadata;
struct responseMetadata;
struct exceptionMetadata;
struct queueingTimeMs;
struct queueTimeoutMs;
struct otherMetadata;
struct load;
struct crc32c;
struct compression;
struct payloadMetadata;
struct proxiedPayloadMetadata;
struct streamId;
struct queueMetadata;
struct fdMetadata;
struct frameworkMetadata;
struct checksum;
struct secondaryLoad;
struct name_utf8;
struct what_utf8;
struct category;
struct code;
struct load;
struct name_utf8;
struct what_utf8;
struct code;
struct compression;
struct otherMetadata;
struct payloadMetadata;
struct fdMetadata;
struct checksum;
struct agent;
struct hostname;
struct otherMetadata;
struct compressorName;
struct payload;
struct custom;
struct compressorName;
struct payload;
struct custom;
struct opaque;
struct interfaceKind;
struct minVersion;
struct maxVersion;
struct dscpToReflect;
struct markToReflect;
struct qosUseCaseId;
struct qosPolicyId;
struct clientMetadata;
struct keepAliveTimeoutMs;
struct encodeMetadataUsingBinary;
struct compressionSetupRequest;
struct version;
struct zstdSupported;
struct compressionSetupResponse;
struct streamId;
struct headersPayloadContent;
struct transportMetadata;
struct drainCompleteCode;
struct setupResponse;
struct streamHeadersPush;
struct drainCompletePush;
struct interactionTerminate;
struct streamHeadersPush;
struct transportMetadataPush;
struct otherMetadata;
struct compression;
} // namespace ident
namespace detail {
#ifndef APACHE_THRIFT_ACCESSOR_algorithm
#define APACHE_THRIFT_ACCESSOR_algorithm
APACHE_THRIFT_DEFINE_ACCESSOR(algorithm);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_checksum
#define APACHE_THRIFT_ACCESSOR_checksum
APACHE_THRIFT_DEFINE_ACCESSOR(checksum);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_salt
#define APACHE_THRIFT_ACCESSOR_salt
APACHE_THRIFT_DEFINE_ACCESSOR(salt);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_levelPreset
#define APACHE_THRIFT_ACCESSOR_levelPreset
APACHE_THRIFT_DEFINE_ACCESSOR(levelPreset);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_levelPreset
#define APACHE_THRIFT_ACCESSOR_levelPreset
APACHE_THRIFT_DEFINE_ACCESSOR(levelPreset);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_levelPreset
#define APACHE_THRIFT_ACCESSOR_levelPreset
APACHE_THRIFT_DEFINE_ACCESSOR(levelPreset);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_payload
#define APACHE_THRIFT_ACCESSOR_payload
APACHE_THRIFT_DEFINE_ACCESSOR(payload);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_zlibConfig
#define APACHE_THRIFT_ACCESSOR_zlibConfig
APACHE_THRIFT_DEFINE_ACCESSOR(zlibConfig);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_zstdConfig
#define APACHE_THRIFT_ACCESSOR_zstdConfig
APACHE_THRIFT_DEFINE_ACCESSOR(zstdConfig);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_customConfig
#define APACHE_THRIFT_ACCESSOR_customConfig
APACHE_THRIFT_DEFINE_ACCESSOR(customConfig);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_lz4Config
#define APACHE_THRIFT_ACCESSOR_lz4Config
APACHE_THRIFT_DEFINE_ACCESSOR(lz4Config);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_codecConfig
#define APACHE_THRIFT_ACCESSOR_codecConfig
APACHE_THRIFT_DEFINE_ACCESSOR(codecConfig);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressionSizeLimit
#define APACHE_THRIFT_ACCESSOR_compressionSizeLimit
APACHE_THRIFT_DEFINE_ACCESSOR(compressionSizeLimit);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressionAlgos
#define APACHE_THRIFT_ACCESSOR_compressionAlgos
APACHE_THRIFT_DEFINE_ACCESSOR(compressionAlgos);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_useStopTLS
#define APACHE_THRIFT_ACCESSOR_useStopTLS
APACHE_THRIFT_DEFINE_ACCESSOR(useStopTLS);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_useStopTLSV2
#define APACHE_THRIFT_ACCESSOR_useStopTLSV2
APACHE_THRIFT_DEFINE_ACCESSOR(useStopTLSV2);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionId
#define APACHE_THRIFT_ACCESSOR_interactionId
APACHE_THRIFT_DEFINE_ACCESSOR(interactionId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionName
#define APACHE_THRIFT_ACCESSOR_interactionName
APACHE_THRIFT_DEFINE_ACCESSOR(interactionName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionId
#define APACHE_THRIFT_ACCESSOR_interactionId
APACHE_THRIFT_DEFINE_ACCESSOR(interactionId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_fdSeqNum
#define APACHE_THRIFT_ACCESSOR_fdSeqNum
APACHE_THRIFT_DEFINE_ACCESSOR(fdSeqNum);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_numFds
#define APACHE_THRIFT_ACCESSOR_numFds
APACHE_THRIFT_DEFINE_ACCESSOR(numFds);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_logSampleRatio
#define APACHE_THRIFT_ACCESSOR_logSampleRatio
APACHE_THRIFT_DEFINE_ACCESSOR(logSampleRatio);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_logErrorSampleRatio
#define APACHE_THRIFT_ACCESSOR_logErrorSampleRatio
APACHE_THRIFT_DEFINE_ACCESSOR(logErrorSampleRatio);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_requestId
#define APACHE_THRIFT_ACCESSOR_requestId
APACHE_THRIFT_DEFINE_ACCESSOR(requestId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_routingTarget
#define APACHE_THRIFT_ACCESSOR_routingTarget
APACHE_THRIFT_DEFINE_ACCESSOR(routingTarget);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_requestAttemptId
#define APACHE_THRIFT_ACCESSOR_requestAttemptId
APACHE_THRIFT_DEFINE_ACCESSOR(requestAttemptId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_protocol
#define APACHE_THRIFT_ACCESSOR_protocol
APACHE_THRIFT_DEFINE_ACCESSOR(protocol);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name
#define APACHE_THRIFT_ACCESSOR_name
APACHE_THRIFT_DEFINE_ACCESSOR(name);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_kind
#define APACHE_THRIFT_ACCESSOR_kind
APACHE_THRIFT_DEFINE_ACCESSOR(kind);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_clientTimeoutMs
#define APACHE_THRIFT_ACCESSOR_clientTimeoutMs
APACHE_THRIFT_DEFINE_ACCESSOR(clientTimeoutMs);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_queueTimeoutMs
#define APACHE_THRIFT_ACCESSOR_queueTimeoutMs
APACHE_THRIFT_DEFINE_ACCESSOR(queueTimeoutMs);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_priority
#define APACHE_THRIFT_ACCESSOR_priority
APACHE_THRIFT_DEFINE_ACCESSOR(priority);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_otherMetadata
#define APACHE_THRIFT_ACCESSOR_otherMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(otherMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_crc32c
#define APACHE_THRIFT_ACCESSOR_crc32c
APACHE_THRIFT_DEFINE_ACCESSOR(crc32c);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_loadMetric
#define APACHE_THRIFT_ACCESSOR_loadMetric
APACHE_THRIFT_DEFINE_ACCESSOR(loadMetric);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compression
#define APACHE_THRIFT_ACCESSOR_compression
APACHE_THRIFT_DEFINE_ACCESSOR(compression);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressionConfig
#define APACHE_THRIFT_ACCESSOR_compressionConfig
APACHE_THRIFT_DEFINE_ACCESSOR(compressionConfig);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionId
#define APACHE_THRIFT_ACCESSOR_interactionId
APACHE_THRIFT_DEFINE_ACCESSOR(interactionId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionCreate
#define APACHE_THRIFT_ACCESSOR_interactionCreate
APACHE_THRIFT_DEFINE_ACCESSOR(interactionCreate);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_clientId
#define APACHE_THRIFT_ACCESSOR_clientId
APACHE_THRIFT_DEFINE_ACCESSOR(clientId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_serviceTraceMeta
#define APACHE_THRIFT_ACCESSOR_serviceTraceMeta
APACHE_THRIFT_DEFINE_ACCESSOR(serviceTraceMeta);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_frameworkMetadata
#define APACHE_THRIFT_ACCESSOR_frameworkMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(frameworkMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_fdMetadata
#define APACHE_THRIFT_ACCESSOR_fdMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(fdMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_loggingContext
#define APACHE_THRIFT_ACCESSOR_loggingContext
APACHE_THRIFT_DEFINE_ACCESSOR(loggingContext);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_tenantId
#define APACHE_THRIFT_ACCESSOR_tenantId
APACHE_THRIFT_DEFINE_ACCESSOR(tenantId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_checksum
#define APACHE_THRIFT_ACCESSOR_checksum
APACHE_THRIFT_DEFINE_ACCESSOR(checksum);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_checksumResponse
#define APACHE_THRIFT_ACCESSOR_checksumResponse
APACHE_THRIFT_DEFINE_ACCESSOR(checksumResponse);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_secondaryLoadMetric
#define APACHE_THRIFT_ACCESSOR_secondaryLoadMetric
APACHE_THRIFT_DEFINE_ACCESSOR(secondaryLoadMetric);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_kind
#define APACHE_THRIFT_ACCESSOR_kind
APACHE_THRIFT_DEFINE_ACCESSOR(kind);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_blame
#define APACHE_THRIFT_ACCESSOR_blame
APACHE_THRIFT_DEFINE_ACCESSOR(blame);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_safety
#define APACHE_THRIFT_ACCESSOR_safety
APACHE_THRIFT_DEFINE_ACCESSOR(safety);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_errorClassification
#define APACHE_THRIFT_ACCESSOR_errorClassification
APACHE_THRIFT_DEFINE_ACCESSOR(errorClassification);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_errorClassification
#define APACHE_THRIFT_ACCESSOR_errorClassification
APACHE_THRIFT_DEFINE_ACCESSOR(errorClassification);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_declaredException
#define APACHE_THRIFT_ACCESSOR_declaredException
APACHE_THRIFT_DEFINE_ACCESSOR(declaredException);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_DEPRECATED_proxyException
#define APACHE_THRIFT_ACCESSOR_DEPRECATED_proxyException
APACHE_THRIFT_DEFINE_ACCESSOR(DEPRECATED_proxyException);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_appUnknownException
#define APACHE_THRIFT_ACCESSOR_appUnknownException
APACHE_THRIFT_DEFINE_ACCESSOR(appUnknownException);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_anyException
#define APACHE_THRIFT_ACCESSOR_anyException
APACHE_THRIFT_DEFINE_ACCESSOR(anyException);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name_utf8
#define APACHE_THRIFT_ACCESSOR_name_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(name_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_what_utf8
#define APACHE_THRIFT_ACCESSOR_what_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(what_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_metadata
#define APACHE_THRIFT_ACCESSOR_metadata
APACHE_THRIFT_DEFINE_ACCESSOR(metadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_responseMetadata
#define APACHE_THRIFT_ACCESSOR_responseMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(responseMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_exceptionMetadata
#define APACHE_THRIFT_ACCESSOR_exceptionMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(exceptionMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_queueingTimeMs
#define APACHE_THRIFT_ACCESSOR_queueingTimeMs
APACHE_THRIFT_DEFINE_ACCESSOR(queueingTimeMs);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_queueTimeoutMs
#define APACHE_THRIFT_ACCESSOR_queueTimeoutMs
APACHE_THRIFT_DEFINE_ACCESSOR(queueTimeoutMs);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_otherMetadata
#define APACHE_THRIFT_ACCESSOR_otherMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(otherMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_load
#define APACHE_THRIFT_ACCESSOR_load
APACHE_THRIFT_DEFINE_ACCESSOR(load);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_crc32c
#define APACHE_THRIFT_ACCESSOR_crc32c
APACHE_THRIFT_DEFINE_ACCESSOR(crc32c);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compression
#define APACHE_THRIFT_ACCESSOR_compression
APACHE_THRIFT_DEFINE_ACCESSOR(compression);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_payloadMetadata
#define APACHE_THRIFT_ACCESSOR_payloadMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(payloadMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_proxiedPayloadMetadata
#define APACHE_THRIFT_ACCESSOR_proxiedPayloadMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(proxiedPayloadMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_streamId
#define APACHE_THRIFT_ACCESSOR_streamId
APACHE_THRIFT_DEFINE_ACCESSOR(streamId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_queueMetadata
#define APACHE_THRIFT_ACCESSOR_queueMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(queueMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_fdMetadata
#define APACHE_THRIFT_ACCESSOR_fdMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(fdMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_frameworkMetadata
#define APACHE_THRIFT_ACCESSOR_frameworkMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(frameworkMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_checksum
#define APACHE_THRIFT_ACCESSOR_checksum
APACHE_THRIFT_DEFINE_ACCESSOR(checksum);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_secondaryLoad
#define APACHE_THRIFT_ACCESSOR_secondaryLoad
APACHE_THRIFT_DEFINE_ACCESSOR(secondaryLoad);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name_utf8
#define APACHE_THRIFT_ACCESSOR_name_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(name_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_what_utf8
#define APACHE_THRIFT_ACCESSOR_what_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(what_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_category
#define APACHE_THRIFT_ACCESSOR_category
APACHE_THRIFT_DEFINE_ACCESSOR(category);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_code
#define APACHE_THRIFT_ACCESSOR_code
APACHE_THRIFT_DEFINE_ACCESSOR(code);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_load
#define APACHE_THRIFT_ACCESSOR_load
APACHE_THRIFT_DEFINE_ACCESSOR(load);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_name_utf8
#define APACHE_THRIFT_ACCESSOR_name_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(name_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_what_utf8
#define APACHE_THRIFT_ACCESSOR_what_utf8
APACHE_THRIFT_DEFINE_ACCESSOR(what_utf8);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_code
#define APACHE_THRIFT_ACCESSOR_code
APACHE_THRIFT_DEFINE_ACCESSOR(code);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compression
#define APACHE_THRIFT_ACCESSOR_compression
APACHE_THRIFT_DEFINE_ACCESSOR(compression);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_otherMetadata
#define APACHE_THRIFT_ACCESSOR_otherMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(otherMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_payloadMetadata
#define APACHE_THRIFT_ACCESSOR_payloadMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(payloadMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_fdMetadata
#define APACHE_THRIFT_ACCESSOR_fdMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(fdMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_checksum
#define APACHE_THRIFT_ACCESSOR_checksum
APACHE_THRIFT_DEFINE_ACCESSOR(checksum);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_agent
#define APACHE_THRIFT_ACCESSOR_agent
APACHE_THRIFT_DEFINE_ACCESSOR(agent);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_hostname
#define APACHE_THRIFT_ACCESSOR_hostname
APACHE_THRIFT_DEFINE_ACCESSOR(hostname);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_otherMetadata
#define APACHE_THRIFT_ACCESSOR_otherMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(otherMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressorName
#define APACHE_THRIFT_ACCESSOR_compressorName
APACHE_THRIFT_DEFINE_ACCESSOR(compressorName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_payload
#define APACHE_THRIFT_ACCESSOR_payload
APACHE_THRIFT_DEFINE_ACCESSOR(payload);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_custom
#define APACHE_THRIFT_ACCESSOR_custom
APACHE_THRIFT_DEFINE_ACCESSOR(custom);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressorName
#define APACHE_THRIFT_ACCESSOR_compressorName
APACHE_THRIFT_DEFINE_ACCESSOR(compressorName);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_payload
#define APACHE_THRIFT_ACCESSOR_payload
APACHE_THRIFT_DEFINE_ACCESSOR(payload);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_custom
#define APACHE_THRIFT_ACCESSOR_custom
APACHE_THRIFT_DEFINE_ACCESSOR(custom);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_opaque
#define APACHE_THRIFT_ACCESSOR_opaque
APACHE_THRIFT_DEFINE_ACCESSOR(opaque);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interfaceKind
#define APACHE_THRIFT_ACCESSOR_interfaceKind
APACHE_THRIFT_DEFINE_ACCESSOR(interfaceKind);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_minVersion
#define APACHE_THRIFT_ACCESSOR_minVersion
APACHE_THRIFT_DEFINE_ACCESSOR(minVersion);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_maxVersion
#define APACHE_THRIFT_ACCESSOR_maxVersion
APACHE_THRIFT_DEFINE_ACCESSOR(maxVersion);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_dscpToReflect
#define APACHE_THRIFT_ACCESSOR_dscpToReflect
APACHE_THRIFT_DEFINE_ACCESSOR(dscpToReflect);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_markToReflect
#define APACHE_THRIFT_ACCESSOR_markToReflect
APACHE_THRIFT_DEFINE_ACCESSOR(markToReflect);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_qosUseCaseId
#define APACHE_THRIFT_ACCESSOR_qosUseCaseId
APACHE_THRIFT_DEFINE_ACCESSOR(qosUseCaseId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_qosPolicyId
#define APACHE_THRIFT_ACCESSOR_qosPolicyId
APACHE_THRIFT_DEFINE_ACCESSOR(qosPolicyId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_clientMetadata
#define APACHE_THRIFT_ACCESSOR_clientMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(clientMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_keepAliveTimeoutMs
#define APACHE_THRIFT_ACCESSOR_keepAliveTimeoutMs
APACHE_THRIFT_DEFINE_ACCESSOR(keepAliveTimeoutMs);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_encodeMetadataUsingBinary
#define APACHE_THRIFT_ACCESSOR_encodeMetadataUsingBinary
APACHE_THRIFT_DEFINE_ACCESSOR(encodeMetadataUsingBinary);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressionSetupRequest
#define APACHE_THRIFT_ACCESSOR_compressionSetupRequest
APACHE_THRIFT_DEFINE_ACCESSOR(compressionSetupRequest);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_version
#define APACHE_THRIFT_ACCESSOR_version
APACHE_THRIFT_DEFINE_ACCESSOR(version);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_zstdSupported
#define APACHE_THRIFT_ACCESSOR_zstdSupported
APACHE_THRIFT_DEFINE_ACCESSOR(zstdSupported);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compressionSetupResponse
#define APACHE_THRIFT_ACCESSOR_compressionSetupResponse
APACHE_THRIFT_DEFINE_ACCESSOR(compressionSetupResponse);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_streamId
#define APACHE_THRIFT_ACCESSOR_streamId
APACHE_THRIFT_DEFINE_ACCESSOR(streamId);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_headersPayloadContent
#define APACHE_THRIFT_ACCESSOR_headersPayloadContent
APACHE_THRIFT_DEFINE_ACCESSOR(headersPayloadContent);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_transportMetadata
#define APACHE_THRIFT_ACCESSOR_transportMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(transportMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_drainCompleteCode
#define APACHE_THRIFT_ACCESSOR_drainCompleteCode
APACHE_THRIFT_DEFINE_ACCESSOR(drainCompleteCode);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_setupResponse
#define APACHE_THRIFT_ACCESSOR_setupResponse
APACHE_THRIFT_DEFINE_ACCESSOR(setupResponse);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_streamHeadersPush
#define APACHE_THRIFT_ACCESSOR_streamHeadersPush
APACHE_THRIFT_DEFINE_ACCESSOR(streamHeadersPush);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_drainCompletePush
#define APACHE_THRIFT_ACCESSOR_drainCompletePush
APACHE_THRIFT_DEFINE_ACCESSOR(drainCompletePush);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_interactionTerminate
#define APACHE_THRIFT_ACCESSOR_interactionTerminate
APACHE_THRIFT_DEFINE_ACCESSOR(interactionTerminate);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_streamHeadersPush
#define APACHE_THRIFT_ACCESSOR_streamHeadersPush
APACHE_THRIFT_DEFINE_ACCESSOR(streamHeadersPush);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_transportMetadataPush
#define APACHE_THRIFT_ACCESSOR_transportMetadataPush
APACHE_THRIFT_DEFINE_ACCESSOR(transportMetadataPush);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_otherMetadata
#define APACHE_THRIFT_ACCESSOR_otherMetadata
APACHE_THRIFT_DEFINE_ACCESSOR(otherMetadata);
#endif
#ifndef APACHE_THRIFT_ACCESSOR_compression
#define APACHE_THRIFT_ACCESSOR_compression
APACHE_THRIFT_DEFINE_ACCESSOR(compression);
#endif
} // namespace detail
} // namespace apache::thrift

// BEGIN declare_enums
namespace apache::thrift {

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ChecksumAlgorithm", "kind": "enum" } */
enum class ChecksumAlgorithm {
  NONE = 0,
  CRC32 = 1,
  XXH3_64 = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ProtocolId", "kind": "enum" } */
enum class ProtocolId {
  BINARY = 0,
  COMPACT = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "RpcKind", "kind": "enum" } */
enum class RpcKind {
  SINGLE_REQUEST_SINGLE_RESPONSE = 0,
  SINGLE_REQUEST_NO_RESPONSE = 1,
  SINGLE_REQUEST_STREAMING_RESPONSE = 4,
  SINK = 6,
  BIDIRECTIONAL_STREAM = 7,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "RpcPriority", "kind": "enum" } */
enum class RpcPriority {
  HIGH_IMPORTANT = 0,
  HIGH = 1,
  IMPORTANT = 2,
  NORMAL = 3,
  BEST_EFFORT = 4,
  N_PRIORITIES = 5,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "TTransform", "kind": "enum" } */
enum class TTransform : ::std::uint16_t {
  NONE = 0,
  ZLIB = 1,
  ZSTD = 5,
  LZ4 = 6,
  CUSTOM = 7,
  ZLIB_LESS = 8,
  ZSTD_LESS = 9,
  LZ4_LESS = 10,
  ZLIB_MORE = 11,
  ZSTD_MORE = 12,
  LZ4_MORE = 13,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CompressionAlgorithm", "kind": "enum" } */
enum class CompressionAlgorithm {
  NONE = 0,
  ZLIB = 1,
  ZSTD = 2,
  LZ4 = 3,
  CUSTOM = 1000,
  ZLIB_LESS = 100000,
  ZSTD_LESS = 100001,
  LZ4_LESS = 100002,
  ZLIB_MORE = 200000,
  ZSTD_MORE = 200001,
  LZ4_MORE = 200002,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ZlibCompressionLevelPreset", "kind": "enum" } */
enum class ZlibCompressionLevelPreset {
  DEFAULT = 0,
  LESS = 1,
  MORE = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ZstdCompressionLevelPreset", "kind": "enum" } */
enum class ZstdCompressionLevelPreset {
  DEFAULT = 0,
  LESS = 1,
  MORE = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "Lz4CompressionLevelPreset", "kind": "enum" } */
enum class Lz4CompressionLevelPreset {
  DEFAULT = 0,
  LESS = 1,
  MORE = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ErrorKind", "kind": "enum" } */
enum class ErrorKind {
  UNSPECIFIED = 0,
  TRANSIENT = 1,
  STATEFUL = 2,
  PERMANENT = 3,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ErrorBlame", "kind": "enum" } */
enum class ErrorBlame {
  UNSPECIFIED = 0,
  SERVER = 1,
  CLIENT = 2,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ErrorSafety", "kind": "enum" } */
enum class ErrorSafety {
  UNSPECIFIED = 0,
  SAFE = 1,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ResponseRpcErrorCategory", "kind": "enum" } */
enum class ResponseRpcErrorCategory {
  INTERNAL_ERROR = 0,
  INVALID_REQUEST = 1,
  LOADSHEDDING = 2,
  SHUTDOWN = 3,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ResponseRpcErrorCode", "kind": "enum" } */
enum class ResponseRpcErrorCode {
  UNKNOWN = 0,
  OVERLOAD = 1,
  TASK_EXPIRED = 2,
  QUEUE_OVERLOADED = 3,
  SHUTDOWN = 4,
  INJECTED_FAILURE = 5,
  REQUEST_PARSING_FAILURE = 6,
  QUEUE_TIMEOUT = 7,
  RESPONSE_TOO_BIG = 8,
  WRONG_RPC_KIND = 9,
  UNKNOWN_METHOD = 10,
  CHECKSUM_MISMATCH = 11,
  INTERRUPTION = 12,
  APP_OVERLOAD = 13,
  UNKNOWN_INTERACTION_ID = 14,
  INTERACTION_CONSTRUCTOR_ERROR = 15,
  UNIMPLEMENTED_METHOD = 16,
  TENANT_QUOTA_EXCEEDED = 17,
  INTERACTION_LOADSHEDDED = 19,
  INTERACTION_LOADSHEDDED_OVERLOAD = 20,
  INTERACTION_LOADSHEDDED_APP_OVERLOAD = 21,
  INTERACTION_LOADSHEDDED_QUEUE_TIMEOUT = 22,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "StreamRpcErrorCode", "kind": "enum" } */
enum class StreamRpcErrorCode {
  UNKNOWN = 0,
  CREDIT_TIMEOUT = 1,
  CHUNK_TIMEOUT = 2,
  SERVER_CLOSING_CONNECTION = 3,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "InterfaceKind", "kind": "enum" } */
enum class InterfaceKind {
  USER = 0,
  DEBUGGING = 1,
  MONITORING = 2,
  PROFILING = 3,
};

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "DrainCompleteCode", "kind": "enum" } */
enum class DrainCompleteCode {
  EXCEEDED_INGRESS_MEM_LIMIT = 1,
};

} // namespace apache::thrift

template<> struct std::hash<::apache::thrift::ChecksumAlgorithm> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ChecksumAlgorithm> {};
template<> struct std::hash<::apache::thrift::ProtocolId> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ProtocolId> {};
template<> struct std::hash<::apache::thrift::RpcKind> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::RpcKind> {};
template<> struct std::hash<::apache::thrift::RpcPriority> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::RpcPriority> {};
template<> struct std::hash<::apache::thrift::TTransform> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::TTransform> {};
template<> struct std::hash<::apache::thrift::CompressionAlgorithm> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::CompressionAlgorithm> {};
template<> struct std::hash<::apache::thrift::ZlibCompressionLevelPreset> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ZlibCompressionLevelPreset> {};
template<> struct std::hash<::apache::thrift::ZstdCompressionLevelPreset> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ZstdCompressionLevelPreset> {};
template<> struct std::hash<::apache::thrift::Lz4CompressionLevelPreset> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::Lz4CompressionLevelPreset> {};
template<> struct std::hash<::apache::thrift::ErrorKind> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ErrorKind> {};
template<> struct std::hash<::apache::thrift::ErrorBlame> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ErrorBlame> {};
template<> struct std::hash<::apache::thrift::ErrorSafety> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ErrorSafety> {};
template<> struct std::hash<::apache::thrift::ResponseRpcErrorCategory> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ResponseRpcErrorCategory> {};
template<> struct std::hash<::apache::thrift::ResponseRpcErrorCode> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::ResponseRpcErrorCode> {};
template<> struct std::hash<::apache::thrift::StreamRpcErrorCode> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::StreamRpcErrorCode> {};
template<> struct std::hash<::apache::thrift::InterfaceKind> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::InterfaceKind> {};
template<> struct std::hash<::apache::thrift::DrainCompleteCode> :
  ::apache::thrift::detail::enum_hash<::apache::thrift::DrainCompleteCode> {};

namespace apache::thrift {

template <> struct TEnumTraits<::apache::thrift::ChecksumAlgorithm> {
  using type = ::apache::thrift::ChecksumAlgorithm;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ChecksumAlgorithm";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::NONE; }
  static constexpr type max() { return type::XXH3_64; }
};

template <> struct TEnumTraits<::apache::thrift::ProtocolId> {
  using type = ::apache::thrift::ProtocolId;

  static constexpr std::size_t const size = 2;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ProtocolId";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::BINARY; }
  static constexpr type max() { return type::COMPACT; }
};

template <> struct TEnumTraits<::apache::thrift::RpcKind> {
  using type = ::apache::thrift::RpcKind;

  static constexpr std::size_t const size = 5;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "RpcKind";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::SINGLE_REQUEST_SINGLE_RESPONSE; }
  static constexpr type max() { return type::BIDIRECTIONAL_STREAM; }
};

template <> struct TEnumTraits<::apache::thrift::RpcPriority> {
  using type = ::apache::thrift::RpcPriority;

  static constexpr std::size_t const size = 6;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "RpcPriority";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::HIGH_IMPORTANT; }
  static constexpr type max() { return type::N_PRIORITIES; }
};

template <> struct TEnumTraits<::apache::thrift::TTransform> {
  using type = ::apache::thrift::TTransform;

  static constexpr std::size_t const size = 11;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "TTransform";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::NONE; }
  static constexpr type max() { return type::LZ4_MORE; }
};

template <> struct TEnumTraits<::apache::thrift::CompressionAlgorithm> {
  using type = ::apache::thrift::CompressionAlgorithm;

  static constexpr std::size_t const size = 11;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "CompressionAlgorithm";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::NONE; }
  static constexpr type max() { return type::LZ4_MORE; }
};

template <> struct TEnumTraits<::apache::thrift::ZlibCompressionLevelPreset> {
  using type = ::apache::thrift::ZlibCompressionLevelPreset;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ZlibCompressionLevelPreset";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::DEFAULT; }
  static constexpr type max() { return type::MORE; }
};

template <> struct TEnumTraits<::apache::thrift::ZstdCompressionLevelPreset> {
  using type = ::apache::thrift::ZstdCompressionLevelPreset;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ZstdCompressionLevelPreset";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::DEFAULT; }
  static constexpr type max() { return type::MORE; }
};

template <> struct TEnumTraits<::apache::thrift::Lz4CompressionLevelPreset> {
  using type = ::apache::thrift::Lz4CompressionLevelPreset;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "Lz4CompressionLevelPreset";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::DEFAULT; }
  static constexpr type max() { return type::MORE; }
};

template <> struct TEnumTraits<::apache::thrift::ErrorKind> {
  using type = ::apache::thrift::ErrorKind;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ErrorKind";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::UNSPECIFIED; }
  static constexpr type max() { return type::PERMANENT; }
};

template <> struct TEnumTraits<::apache::thrift::ErrorBlame> {
  using type = ::apache::thrift::ErrorBlame;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ErrorBlame";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::UNSPECIFIED; }
  static constexpr type max() { return type::CLIENT; }
};

template <> struct TEnumTraits<::apache::thrift::ErrorSafety> {
  using type = ::apache::thrift::ErrorSafety;

  static constexpr std::size_t const size = 2;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ErrorSafety";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::UNSPECIFIED; }
  static constexpr type max() { return type::SAFE; }
};

template <> struct TEnumTraits<::apache::thrift::ResponseRpcErrorCategory> {
  using type = ::apache::thrift::ResponseRpcErrorCategory;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ResponseRpcErrorCategory";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::INTERNAL_ERROR; }
  static constexpr type max() { return type::SHUTDOWN; }
};

template <> struct TEnumTraits<::apache::thrift::ResponseRpcErrorCode> {
  using type = ::apache::thrift::ResponseRpcErrorCode;

  static constexpr std::size_t const size = 22;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "ResponseRpcErrorCode";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::UNKNOWN; }
  static constexpr type max() { return type::INTERACTION_LOADSHEDDED_QUEUE_TIMEOUT; }
};

template <> struct TEnumTraits<::apache::thrift::StreamRpcErrorCode> {
  using type = ::apache::thrift::StreamRpcErrorCode;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "StreamRpcErrorCode";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::UNKNOWN; }
  static constexpr type max() { return type::SERVER_CLOSING_CONNECTION; }
};

template <> struct TEnumTraits<::apache::thrift::InterfaceKind> {
  using type = ::apache::thrift::InterfaceKind;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "InterfaceKind";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::USER; }
  static constexpr type max() { return type::PROFILING; }
};

template <> struct TEnumTraits<::apache::thrift::DrainCompleteCode> {
  using type = ::apache::thrift::DrainCompleteCode;

  static constexpr std::size_t const size = 1;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;
  static const std::string_view __fbthrift_module_name_internal_do_not_use;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  FOLLY_ERASE static std::string_view typeName() noexcept {
    return "DrainCompleteCode";
  }

  FOLLY_ERASE static constexpr std::string_view moduleName() noexcept {
    return "RpcMetadata";
  }

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }
  static constexpr type min() { return type::EXCEEDED_INGRESS_MEM_LIMIT; }
  static constexpr type max() { return type::EXCEEDED_INGRESS_MEM_LIMIT; }
};

} // namespace apache::thrift
// END declare_enums
// BEGIN forward_declare
namespace apache::thrift {
class Checksum;
class ZlibCompressionCodecConfig;
class ZstdCompressionCodecConfig;
class Lz4CompressionCodecConfig;
class CustomCompressionCodecConfig;
class CodecConfig;
class CompressionConfig;
class NegotiationParameters;
class InteractionCreate;
class InteractionTerminate;
class FdMetadata;
class LoggingContext;
class RequestRpcMetadata;
class ErrorClassification;
class PayloadResponseMetadata;
class PayloadDeclaredExceptionMetadata;
class PayloadProxyExceptionMetadata;
class PayloadAppUnknownExceptionMetdata;
class PayloadAnyExceptionMetadata;
class PayloadExceptionMetadata;
class PayloadExceptionMetadataBase;
class PayloadMetadata;
class ProxiedPayloadMetadata;
class QueueMetadata;
class ResponseRpcMetadata;
class ResponseRpcError;
class StreamRpcError;
class StreamPayloadMetadata;
class ClientMetadata;
class CustomCompressionSetupRequest;
class CompressionSetupRequest;
class CustomCompressionSetupResponse;
class CompressionSetupResponse;
class RequestSetupMetadata;
class SetupResponse;
class StreamHeadersPush;
class TransportMetadataPush;
class DrainCompletePush;
class ServerPushMetadata;
class ClientPushMetadata;
class HeadersPayloadContent;
class HeadersPayloadMetadata;
} // namespace apache::thrift
// END forward_declare
namespace apache::thrift::detail::annotation {
} // namespace apache::thrift::detail::annotation

namespace apache::thrift::detail::qualifier {
template<>
struct is_cpp_ref_field_optional<::apache::thrift::RequestRpcMetadata,::apache::thrift::type::field_id<22>> : std::true_type{};
template<>
struct is_cpp_ref_field_optional<::apache::thrift::ResponseRpcMetadata,::apache::thrift::type::field_id<12>> : std::true_type{};
template<>
struct is_cpp_ref_field_optional<::apache::thrift::StreamPayloadMetadata,::apache::thrift::type::field_id<5>> : std::true_type{};
} // namespace apache::thrift::detail::qualifier

// BEGIN hash_and_equal_to
// END hash_and_equal_to
namespace apache::thrift {
using ::apache::thrift::detail::operator!=;
using ::apache::thrift::detail::operator>;
using ::apache::thrift::detail::operator<=;
using ::apache::thrift::detail::operator>=;

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "IOBufPtr", "kind": "typedef" } */
using IOBufPtr = std::unique_ptr<folly::IOBuf>;
/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ManagedStringViewField", "kind": "typedef" } */
using ManagedStringViewField = ::apache::thrift::ManagedStringViewWithConversions;
/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "string_4852", "kind": "typedef" } */
using string_4852 = ::std::string;

/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "Checksum", "kind": "struct" } */
class Checksum final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::algorithm,
    ::apache::thrift::ident::checksum,
    ::apache::thrift::ident::salt
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::ChecksumAlgorithm>,
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::i64_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Checksum;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  Checksum() :
      __fbthrift_field_algorithm(),
      __fbthrift_field_checksum(),
      __fbthrift_field_salt() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Checksum(apache::thrift::FragileConstructor, ::apache::thrift::ChecksumAlgorithm algorithm__arg, ::std::int64_t checksum__arg, ::std::int64_t salt__arg);

  Checksum(Checksum&&) = default;

  Checksum(const Checksum&) = default;


  Checksum& operator=(Checksum&&) = default;

  Checksum& operator=(const Checksum&) = default;
 private:
  ::apache::thrift::ChecksumAlgorithm __fbthrift_field_algorithm;
 private:
  ::std::int64_t __fbthrift_field_checksum;
 private:
  ::std::int64_t __fbthrift_field_salt;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Checksum&) const;
  bool operator<(const Checksum&) const;

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> algorithm_ref() const& {
    return {this->__fbthrift_field_algorithm, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> algorithm_ref() & {
    return {this->__fbthrift_field_algorithm, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> algorithm_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_algorithm), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> algorithm() const& {
    return {this->__fbthrift_field_algorithm, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> algorithm() & {
    return {this->__fbthrift_field_algorithm, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "algorithm" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ChecksumAlgorithm>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> algorithm() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_algorithm), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> checksum_ref() const& {
    return {this->__fbthrift_field_checksum, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> checksum_ref() & {
    return {this->__fbthrift_field_checksum, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> checksum_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> checksum() const& {
    return {this->__fbthrift_field_checksum, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> checksum() & {
    return {this->__fbthrift_field_checksum, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> checksum() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> salt_ref() const& {
    return {this->__fbthrift_field_salt, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> salt_ref() & {
    return {this->__fbthrift_field_salt, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> salt_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_salt), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> salt() const& {
    return {this->__fbthrift_field_salt, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> salt() & {
    return {this->__fbthrift_field_salt, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "salt" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> salt() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_salt), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "algorithm" } */
  [[deprecated("Use `FOO.algorithm().value()` instead of `FOO.get_algorithm()`")]]
  ::apache::thrift::ChecksumAlgorithm get_algorithm() const;

  /** Glean { "field": "algorithm" } */
  [[deprecated("Use `FOO.algorithm() = BAR` instead of `FOO.set_algorithm(BAR)`")]]
  ::apache::thrift::ChecksumAlgorithm& set_algorithm(::apache::thrift::ChecksumAlgorithm algorithm_);

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  ::std::int64_t get_checksum() const;

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum() = BAR` instead of `FOO.set_checksum(BAR)`")]]
  ::std::int64_t& set_checksum(::std::int64_t checksum_);

  /** Glean { "field": "salt" } */
  [[deprecated("Use `FOO.salt().value()` instead of `FOO.get_salt()`")]]
  ::std::int64_t get_salt() const;

  /** Glean { "field": "salt" } */
  [[deprecated("Use `FOO.salt() = BAR` instead of `FOO.set_salt(BAR)`")]]
  ::std::int64_t& set_salt(::std::int64_t salt_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Checksum>;
  friend void swap(Checksum& a, Checksum& b);
};

template <class Protocol_>
unsigned long Checksum::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ZlibCompressionCodecConfig", "kind": "struct" } */
class ZlibCompressionCodecConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::levelPreset
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::ZlibCompressionLevelPreset>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ZlibCompressionCodecConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ZlibCompressionCodecConfig() :
      __fbthrift_field_levelPreset() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ZlibCompressionCodecConfig(apache::thrift::FragileConstructor, ::apache::thrift::ZlibCompressionLevelPreset levelPreset__arg);

  ZlibCompressionCodecConfig(ZlibCompressionCodecConfig&&) = default;

  ZlibCompressionCodecConfig(const ZlibCompressionCodecConfig&) = default;


  ZlibCompressionCodecConfig& operator=(ZlibCompressionCodecConfig&&) = default;

  ZlibCompressionCodecConfig& operator=(const ZlibCompressionCodecConfig&) = default;
 private:
  ::apache::thrift::ZlibCompressionLevelPreset __fbthrift_field_levelPreset;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ZlibCompressionCodecConfig&) const;
  bool operator<(const ZlibCompressionCodecConfig&) const;

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset_ref() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset_ref() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZlibCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  const ::apache::thrift::ZlibCompressionLevelPreset* get_levelPreset() const&;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  ::apache::thrift::ZlibCompressionLevelPreset* get_levelPreset() &;

  ::apache::thrift::ZlibCompressionLevelPreset* get_levelPreset() && = delete;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset() = BAR` instead of `FOO.set_levelPreset(BAR)`")]]
  ::apache::thrift::ZlibCompressionLevelPreset& set_levelPreset(::apache::thrift::ZlibCompressionLevelPreset levelPreset_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ZlibCompressionCodecConfig>;
  friend void swap(ZlibCompressionCodecConfig& a, ZlibCompressionCodecConfig& b);
};

template <class Protocol_>
unsigned long ZlibCompressionCodecConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ZstdCompressionCodecConfig", "kind": "struct" } */
class ZstdCompressionCodecConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::levelPreset
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::ZstdCompressionLevelPreset>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ZstdCompressionCodecConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ZstdCompressionCodecConfig() :
      __fbthrift_field_levelPreset() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ZstdCompressionCodecConfig(apache::thrift::FragileConstructor, ::apache::thrift::ZstdCompressionLevelPreset levelPreset__arg);

  ZstdCompressionCodecConfig(ZstdCompressionCodecConfig&&) = default;

  ZstdCompressionCodecConfig(const ZstdCompressionCodecConfig&) = default;


  ZstdCompressionCodecConfig& operator=(ZstdCompressionCodecConfig&&) = default;

  ZstdCompressionCodecConfig& operator=(const ZstdCompressionCodecConfig&) = default;
 private:
  ::apache::thrift::ZstdCompressionLevelPreset __fbthrift_field_levelPreset;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ZstdCompressionCodecConfig&) const;
  bool operator<(const ZstdCompressionCodecConfig&) const;

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset_ref() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset_ref() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ZstdCompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  const ::apache::thrift::ZstdCompressionLevelPreset* get_levelPreset() const&;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  ::apache::thrift::ZstdCompressionLevelPreset* get_levelPreset() &;

  ::apache::thrift::ZstdCompressionLevelPreset* get_levelPreset() && = delete;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset() = BAR` instead of `FOO.set_levelPreset(BAR)`")]]
  ::apache::thrift::ZstdCompressionLevelPreset& set_levelPreset(::apache::thrift::ZstdCompressionLevelPreset levelPreset_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ZstdCompressionCodecConfig>;
  friend void swap(ZstdCompressionCodecConfig& a, ZstdCompressionCodecConfig& b);
};

template <class Protocol_>
unsigned long ZstdCompressionCodecConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "Lz4CompressionCodecConfig", "kind": "struct" } */
class Lz4CompressionCodecConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::levelPreset
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::Lz4CompressionLevelPreset>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = Lz4CompressionCodecConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  Lz4CompressionCodecConfig() :
      __fbthrift_field_levelPreset() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  Lz4CompressionCodecConfig(apache::thrift::FragileConstructor, ::apache::thrift::Lz4CompressionLevelPreset levelPreset__arg);

  Lz4CompressionCodecConfig(Lz4CompressionCodecConfig&&) = default;

  Lz4CompressionCodecConfig(const Lz4CompressionCodecConfig&) = default;


  Lz4CompressionCodecConfig& operator=(Lz4CompressionCodecConfig&&) = default;

  Lz4CompressionCodecConfig& operator=(const Lz4CompressionCodecConfig&) = default;
 private:
  ::apache::thrift::Lz4CompressionLevelPreset __fbthrift_field_levelPreset;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const Lz4CompressionCodecConfig&) const;
  bool operator<(const Lz4CompressionCodecConfig&) const;

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset_ref() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset_ref() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> levelPreset() const& {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> levelPreset() & {
    return {this->__fbthrift_field_levelPreset, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Lz4CompressionLevelPreset>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> levelPreset() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_levelPreset), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  const ::apache::thrift::Lz4CompressionLevelPreset* get_levelPreset() const&;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset().value()` instead of `FOO.get_levelPreset()`")]]
  ::apache::thrift::Lz4CompressionLevelPreset* get_levelPreset() &;

  ::apache::thrift::Lz4CompressionLevelPreset* get_levelPreset() && = delete;

  /** Glean { "field": "levelPreset" } */
  [[deprecated("Use `FOO.levelPreset() = BAR` instead of `FOO.set_levelPreset(BAR)`")]]
  ::apache::thrift::Lz4CompressionLevelPreset& set_levelPreset(::apache::thrift::Lz4CompressionLevelPreset levelPreset_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<Lz4CompressionCodecConfig>;
  friend void swap(Lz4CompressionCodecConfig& a, Lz4CompressionCodecConfig& b);
};

template <class Protocol_>
unsigned long Lz4CompressionCodecConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CustomCompressionCodecConfig", "kind": "struct" } */
class CustomCompressionCodecConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::payload
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::binary_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CustomCompressionCodecConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  CustomCompressionCodecConfig();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  CustomCompressionCodecConfig(apache::thrift::FragileConstructor, ::std::string payload__arg);

  CustomCompressionCodecConfig(CustomCompressionCodecConfig&&) noexcept;

  CustomCompressionCodecConfig(const CustomCompressionCodecConfig& src);


  CustomCompressionCodecConfig& operator=(CustomCompressionCodecConfig&&) noexcept;
  CustomCompressionCodecConfig& operator=(const CustomCompressionCodecConfig& src);

  ~CustomCompressionCodecConfig();

 private:
  ::std::string __fbthrift_field_payload;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const CustomCompressionCodecConfig&) const;
  bool operator<(const CustomCompressionCodecConfig&) const;

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload_ref() const& {
    return {this->__fbthrift_field_payload, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload_ref() & {
    return {this->__fbthrift_field_payload, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload() const& {
    return {this->__fbthrift_field_payload, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload() & {
    return {this->__fbthrift_field_payload, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  const ::std::string* get_payload() const&;

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  ::std::string* get_payload() &;

  ::std::string* get_payload() && = delete;

  /** Glean { "field": "payload" } */
  template <typename T_CustomCompressionCodecConfig_payload_struct_setter = ::std::string>
  [[deprecated("Use `FOO.payload() = BAR` instead of `FOO.set_payload(BAR)`")]]
  ::std::string& set_payload(T_CustomCompressionCodecConfig_payload_struct_setter&& payload_) {
    payload_ref() = std::forward<T_CustomCompressionCodecConfig_payload_struct_setter>(payload_);
    return __fbthrift_field_payload;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CustomCompressionCodecConfig>;
  friend void swap(CustomCompressionCodecConfig& a, CustomCompressionCodecConfig& b);
};

template <class Protocol_>
unsigned long CustomCompressionCodecConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CodecConfig", "kind": "union" } */
class CodecConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 4;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,4};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::zlibConfig,
    ::apache::thrift::ident::zstdConfig,
    ::apache::thrift::ident::customConfig,
    ::apache::thrift::ident::lz4Config
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::ZlibCompressionCodecConfig>,
    ::apache::thrift::type::struct_t<::apache::thrift::ZstdCompressionCodecConfig>,
    ::apache::thrift::type::struct_t<::apache::thrift::CustomCompressionCodecConfig>,
    ::apache::thrift::type::struct_t<::apache::thrift::Lz4CompressionCodecConfig>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CodecConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    zlibConfig = 1,
    zstdConfig = 2,
    customConfig = 3,
    lz4Config = 4,
  } ;

  CodecConfig()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  CodecConfig(CodecConfig&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::zlibConfig:
      {
        set_zlibConfig(std::move(rhs.value_.zlibConfig));
        break;
      }
      case Type::zstdConfig:
      {
        set_zstdConfig(std::move(rhs.value_.zstdConfig));
        break;
      }
      case Type::customConfig:
      {
        set_customConfig(std::move(rhs.value_.customConfig));
        break;
      }
      case Type::lz4Config:
      {
        set_lz4Config(std::move(rhs.value_.lz4Config));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  CodecConfig(const CodecConfig& rhs);

  CodecConfig& operator=(CodecConfig&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::zlibConfig:
      {
        set_zlibConfig(std::move(rhs.value_.zlibConfig));
        break;
      }
      case Type::zstdConfig:
      {
        set_zstdConfig(std::move(rhs.value_.zstdConfig));
        break;
      }
      case Type::customConfig:
      {
        set_customConfig(std::move(rhs.value_.customConfig));
        break;
      }
      case Type::lz4Config:
      {
        set_lz4Config(std::move(rhs.value_.lz4Config));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  CodecConfig& operator=(const CodecConfig& rhs);

  ~CodecConfig();

  union storage_type {
    ::apache::thrift::ZlibCompressionCodecConfig zlibConfig;
    ::apache::thrift::ZstdCompressionCodecConfig zstdConfig;
    ::apache::thrift::CustomCompressionCodecConfig customConfig;
    ::apache::thrift::Lz4CompressionCodecConfig lz4Config;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const CodecConfig&) const;
  bool operator<(const CodecConfig&) const;

  /** Glean { "field": "zlibConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::ZlibCompressionCodecConfig& set_zlibConfig(::apache::thrift::ZlibCompressionCodecConfig const &t) {
    using T0 = ::apache::thrift::ZlibCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zlibConfig);
    ::new (std::addressof(value_.zlibConfig)) T(t);
    return value_.zlibConfig;
  }

  /** Glean { "field": "zlibConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::ZlibCompressionCodecConfig& set_zlibConfig(::apache::thrift::ZlibCompressionCodecConfig&& t) {
    using T0 = ::apache::thrift::ZlibCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zlibConfig);
    ::new (std::addressof(value_.zlibConfig)) T(std::move(t));
    return value_.zlibConfig;
  }

  /** Glean { "field": "zlibConfig" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::ZlibCompressionCodecConfig, T...>> ::apache::thrift::ZlibCompressionCodecConfig& set_zlibConfig(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zlibConfig);
    ::new (std::addressof(value_.zlibConfig)) ::apache::thrift::ZlibCompressionCodecConfig(std::forward<T>(t)...);
    return value_.zlibConfig;
  }

  /** Glean { "field": "zstdConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::ZstdCompressionCodecConfig& set_zstdConfig(::apache::thrift::ZstdCompressionCodecConfig const &t) {
    using T0 = ::apache::thrift::ZstdCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zstdConfig);
    ::new (std::addressof(value_.zstdConfig)) T(t);
    return value_.zstdConfig;
  }

  /** Glean { "field": "zstdConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::ZstdCompressionCodecConfig& set_zstdConfig(::apache::thrift::ZstdCompressionCodecConfig&& t) {
    using T0 = ::apache::thrift::ZstdCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zstdConfig);
    ::new (std::addressof(value_.zstdConfig)) T(std::move(t));
    return value_.zstdConfig;
  }

  /** Glean { "field": "zstdConfig" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::ZstdCompressionCodecConfig, T...>> ::apache::thrift::ZstdCompressionCodecConfig& set_zstdConfig(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::zstdConfig);
    ::new (std::addressof(value_.zstdConfig)) ::apache::thrift::ZstdCompressionCodecConfig(std::forward<T>(t)...);
    return value_.zstdConfig;
  }

  /** Glean { "field": "customConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionCodecConfig& set_customConfig(::apache::thrift::CustomCompressionCodecConfig const &t) {
    using T0 = ::apache::thrift::CustomCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::customConfig);
    ::new (std::addressof(value_.customConfig)) T(t);
    return value_.customConfig;
  }

  /** Glean { "field": "customConfig" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionCodecConfig& set_customConfig(::apache::thrift::CustomCompressionCodecConfig&& t) {
    using T0 = ::apache::thrift::CustomCompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::customConfig);
    ::new (std::addressof(value_.customConfig)) T(std::move(t));
    return value_.customConfig;
  }

  /** Glean { "field": "customConfig" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::CustomCompressionCodecConfig, T...>> ::apache::thrift::CustomCompressionCodecConfig& set_customConfig(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::customConfig);
    ::new (std::addressof(value_.customConfig)) ::apache::thrift::CustomCompressionCodecConfig(std::forward<T>(t)...);
    return value_.customConfig;
  }

  /** Glean { "field": "lz4Config" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::Lz4CompressionCodecConfig& set_lz4Config(::apache::thrift::Lz4CompressionCodecConfig const &t) {
    using T0 = ::apache::thrift::Lz4CompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::lz4Config);
    ::new (std::addressof(value_.lz4Config)) T(t);
    return value_.lz4Config;
  }

  /** Glean { "field": "lz4Config" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::Lz4CompressionCodecConfig& set_lz4Config(::apache::thrift::Lz4CompressionCodecConfig&& t) {
    using T0 = ::apache::thrift::Lz4CompressionCodecConfig;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::lz4Config);
    ::new (std::addressof(value_.lz4Config)) T(std::move(t));
    return value_.lz4Config;
  }

  /** Glean { "field": "lz4Config" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::Lz4CompressionCodecConfig, T...>> ::apache::thrift::Lz4CompressionCodecConfig& set_lz4Config(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::lz4Config);
    ::new (std::addressof(value_.lz4Config)) ::apache::thrift::Lz4CompressionCodecConfig(std::forward<T>(t)...);
    return value_.lz4Config;
  }

  /** Glean { "field": "zlibConfig" } */
  ::apache::thrift::ZlibCompressionCodecConfig const& get_zlibConfig() const {
    if (getType() != Type::zlibConfig) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.zlibConfig;
  }

  /** Glean { "field": "zstdConfig" } */
  ::apache::thrift::ZstdCompressionCodecConfig const& get_zstdConfig() const {
    if (getType() != Type::zstdConfig) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.zstdConfig;
  }

  /** Glean { "field": "customConfig" } */
  ::apache::thrift::CustomCompressionCodecConfig const& get_customConfig() const {
    if (getType() != Type::customConfig) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.customConfig;
  }

  /** Glean { "field": "lz4Config" } */
  ::apache::thrift::Lz4CompressionCodecConfig const& get_lz4Config() const {
    if (getType() != Type::lz4Config) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.lz4Config;
  }

  ::apache::thrift::ZlibCompressionCodecConfig& mutable_zlibConfig() {
    assert(getType() == Type::zlibConfig);
    return value_.zlibConfig;
  }

  ::apache::thrift::ZstdCompressionCodecConfig& mutable_zstdConfig() {
    assert(getType() == Type::zstdConfig);
    return value_.zstdConfig;
  }

  ::apache::thrift::CustomCompressionCodecConfig& mutable_customConfig() {
    assert(getType() == Type::customConfig);
    return value_.customConfig;
  }

  ::apache::thrift::Lz4CompressionCodecConfig& mutable_lz4Config() {
    assert(getType() == Type::lz4Config);
    return value_.lz4Config;
  }

  template <typename..., typename T = ::apache::thrift::ZlibCompressionCodecConfig>
  T move_zlibConfig() {
    assert(getType() == Type::zlibConfig);
    return std::move(value_.zlibConfig);
  }

  template <typename..., typename T = ::apache::thrift::ZstdCompressionCodecConfig>
  T move_zstdConfig() {
    assert(getType() == Type::zstdConfig);
    return std::move(value_.zstdConfig);
  }

  template <typename..., typename T = ::apache::thrift::CustomCompressionCodecConfig>
  T move_customConfig() {
    assert(getType() == Type::customConfig);
    return std::move(value_.customConfig);
  }

  template <typename..., typename T = ::apache::thrift::Lz4CompressionCodecConfig>
  T move_lz4Config() {
    assert(getType() == Type::lz4Config);
    return std::move(value_.lz4Config);
  }

  /** Glean { "field": "zlibConfig" } */
  template <typename..., typename T = ::apache::thrift::ZlibCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> zlibConfig_ref() const& {
    return {value_.zlibConfig, fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zlibConfig" } */
  template <typename..., typename T = ::apache::thrift::ZlibCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> zlibConfig_ref() & {
    return {value_.zlibConfig, fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zlibConfig" } */
  template <typename..., typename T = ::apache::thrift::ZlibCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> zlibConfig_ref() && {
    return {std::move(value_.zlibConfig), fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zlibConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::ZlibCompressionCodecConfig&> zlibConfig() const& {
    return {value_.zlibConfig, fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zlibConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::ZlibCompressionCodecConfig&> zlibConfig() & {
    return {value_.zlibConfig, fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zlibConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::ZlibCompressionCodecConfig&&> zlibConfig() && {
    return {std::move(value_.zlibConfig), fbthrift_type_, folly::to_underlying(Type::zlibConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "zstdConfig" } */
  template <typename..., typename T = ::apache::thrift::ZstdCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> zstdConfig_ref() const& {
    return {value_.zstdConfig, fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zstdConfig" } */
  template <typename..., typename T = ::apache::thrift::ZstdCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> zstdConfig_ref() & {
    return {value_.zstdConfig, fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zstdConfig" } */
  template <typename..., typename T = ::apache::thrift::ZstdCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> zstdConfig_ref() && {
    return {std::move(value_.zstdConfig), fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zstdConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::ZstdCompressionCodecConfig&> zstdConfig() const& {
    return {value_.zstdConfig, fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zstdConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::ZstdCompressionCodecConfig&> zstdConfig() & {
    return {value_.zstdConfig, fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "zstdConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::ZstdCompressionCodecConfig&&> zstdConfig() && {
    return {std::move(value_.zstdConfig), fbthrift_type_, folly::to_underlying(Type::zstdConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "customConfig" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> customConfig_ref() const& {
    return {value_.customConfig, fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "customConfig" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> customConfig_ref() & {
    return {value_.customConfig, fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "customConfig" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> customConfig_ref() && {
    return {std::move(value_.customConfig), fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "customConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::CustomCompressionCodecConfig&> customConfig() const& {
    return {value_.customConfig, fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "customConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionCodecConfig&> customConfig() & {
    return {value_.customConfig, fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "customConfig" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionCodecConfig&&> customConfig() && {
    return {std::move(value_.customConfig), fbthrift_type_, folly::to_underlying(Type::customConfig), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "lz4Config" } */
  template <typename..., typename T = ::apache::thrift::Lz4CompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> lz4Config_ref() const& {
    return {value_.lz4Config, fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "lz4Config" } */
  template <typename..., typename T = ::apache::thrift::Lz4CompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> lz4Config_ref() & {
    return {value_.lz4Config, fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "lz4Config" } */
  template <typename..., typename T = ::apache::thrift::Lz4CompressionCodecConfig>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> lz4Config_ref() && {
    return {std::move(value_.lz4Config), fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "lz4Config" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::Lz4CompressionCodecConfig&> lz4Config() const& {
    return {value_.lz4Config, fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "lz4Config" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::Lz4CompressionCodecConfig&> lz4Config() & {
    return {value_.lz4Config, fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "lz4Config" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::Lz4CompressionCodecConfig&&> lz4Config() && {
    return {std::move(value_.lz4Config), fbthrift_type_, folly::to_underlying(Type::lz4Config), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CodecConfig>;
  friend void swap(CodecConfig& a, CodecConfig& b);
};

template <class Protocol_>
unsigned long CodecConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CompressionConfig", "kind": "struct" } */
class CompressionConfig final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::codecConfig,
    ::apache::thrift::ident::compressionSizeLimit
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::union_t<::apache::thrift::CodecConfig>,
    ::apache::thrift::type::i64_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CompressionConfig;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  CompressionConfig() :
      __fbthrift_field_compressionSizeLimit() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  CompressionConfig(apache::thrift::FragileConstructor, ::apache::thrift::CodecConfig codecConfig__arg, ::std::int64_t compressionSizeLimit__arg);

  CompressionConfig(CompressionConfig&&) noexcept;

  CompressionConfig(const CompressionConfig& src);


  CompressionConfig& operator=(CompressionConfig&&) noexcept;
  CompressionConfig& operator=(const CompressionConfig& src);
 private:
  ::apache::thrift::CodecConfig __fbthrift_field_codecConfig;
 private:
  ::std::int64_t __fbthrift_field_compressionSizeLimit;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const CompressionConfig&) const;
  bool operator<(const CompressionConfig&) const;

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> codecConfig_ref() const& {
    return {this->__fbthrift_field_codecConfig, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> codecConfig_ref() & {
    return {this->__fbthrift_field_codecConfig, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> codecConfig_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_codecConfig), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> codecConfig() const& {
    return {this->__fbthrift_field_codecConfig, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> codecConfig() & {
    return {this->__fbthrift_field_codecConfig, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "codecConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CodecConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> codecConfig() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_codecConfig), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSizeLimit_ref() const& {
    return {this->__fbthrift_field_compressionSizeLimit, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSizeLimit_ref() & {
    return {this->__fbthrift_field_compressionSizeLimit, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSizeLimit_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSizeLimit), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSizeLimit() const& {
    return {this->__fbthrift_field_compressionSizeLimit, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSizeLimit() & {
    return {this->__fbthrift_field_compressionSizeLimit, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSizeLimit" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSizeLimit() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSizeLimit), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "codecConfig" } */
  [[deprecated("Use `FOO.codecConfig().value()` instead of `FOO.get_codecConfig()`")]]
  const ::apache::thrift::CodecConfig* get_codecConfig() const&;

  /** Glean { "field": "codecConfig" } */
  [[deprecated("Use `FOO.codecConfig().value()` instead of `FOO.get_codecConfig()`")]]
  ::apache::thrift::CodecConfig* get_codecConfig() &;

  ::apache::thrift::CodecConfig* get_codecConfig() && = delete;

  /** Glean { "field": "codecConfig" } */
  template <typename T_CompressionConfig_codecConfig_struct_setter = ::apache::thrift::CodecConfig>
  [[deprecated("Use `FOO.codecConfig() = BAR` instead of `FOO.set_codecConfig(BAR)`")]]
  ::apache::thrift::CodecConfig& set_codecConfig(T_CompressionConfig_codecConfig_struct_setter&& codecConfig_) {
    codecConfig_ref() = std::forward<T_CompressionConfig_codecConfig_struct_setter>(codecConfig_);
    return __fbthrift_field_codecConfig;
  }

  /** Glean { "field": "compressionSizeLimit" } */
  [[deprecated("Use `FOO.compressionSizeLimit().value()` instead of `FOO.get_compressionSizeLimit()`")]]
  const ::std::int64_t* get_compressionSizeLimit() const&;

  /** Glean { "field": "compressionSizeLimit" } */
  [[deprecated("Use `FOO.compressionSizeLimit().value()` instead of `FOO.get_compressionSizeLimit()`")]]
  ::std::int64_t* get_compressionSizeLimit() &;

  ::std::int64_t* get_compressionSizeLimit() && = delete;

  /** Glean { "field": "compressionSizeLimit" } */
  [[deprecated("Use `FOO.compressionSizeLimit() = BAR` instead of `FOO.set_compressionSizeLimit(BAR)`")]]
  ::std::int64_t& set_compressionSizeLimit(::std::int64_t compressionSizeLimit_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CompressionConfig>;
  friend void swap(CompressionConfig& a, CompressionConfig& b);
};

template <class Protocol_>
unsigned long CompressionConfig::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "NegotiationParameters", "kind": "struct" } */
class NegotiationParameters final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::compressionAlgos,
    ::apache::thrift::ident::useStopTLS,
    ::apache::thrift::ident::useStopTLSV2
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::cpp_type<std::uint64_t, ::apache::thrift::type::i64_t>,
    ::apache::thrift::type::bool_t,
    ::apache::thrift::type::bool_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = NegotiationParameters;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  NegotiationParameters() :
      __fbthrift_field_compressionAlgos(),
      __fbthrift_field_useStopTLS(),
      __fbthrift_field_useStopTLSV2() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  NegotiationParameters(apache::thrift::FragileConstructor, std::uint64_t compressionAlgos__arg, bool useStopTLS__arg, bool useStopTLSV2__arg);

  NegotiationParameters(NegotiationParameters&&) = default;

  NegotiationParameters(const NegotiationParameters&) = default;


  NegotiationParameters& operator=(NegotiationParameters&&) = default;

  NegotiationParameters& operator=(const NegotiationParameters&) = default;
 private:
  std::uint64_t __fbthrift_field_compressionAlgos;
 private:
  bool __fbthrift_field_useStopTLS;
 private:
  bool __fbthrift_field_useStopTLSV2;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const NegotiationParameters&) const;
  bool operator<(const NegotiationParameters&) const;

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionAlgos_ref() const& {
    return {this->__fbthrift_field_compressionAlgos, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionAlgos_ref() & {
    return {this->__fbthrift_field_compressionAlgos, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionAlgos_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionAlgos), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionAlgos() const& {
    return {this->__fbthrift_field_compressionAlgos, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionAlgos() & {
    return {this->__fbthrift_field_compressionAlgos, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressionAlgos" } */
  template <typename..., typename fbthrift_T = std::uint64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionAlgos() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionAlgos), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> useStopTLS_ref() const& {
    return {this->__fbthrift_field_useStopTLS, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> useStopTLS_ref() & {
    return {this->__fbthrift_field_useStopTLS, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> useStopTLS_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_useStopTLS), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> useStopTLS() const& {
    return {this->__fbthrift_field_useStopTLS, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> useStopTLS() & {
    return {this->__fbthrift_field_useStopTLS, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLS" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> useStopTLS() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_useStopTLS), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> useStopTLSV2_ref() const& {
    return {this->__fbthrift_field_useStopTLSV2, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> useStopTLSV2_ref() & {
    return {this->__fbthrift_field_useStopTLSV2, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> useStopTLSV2_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_useStopTLSV2), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> useStopTLSV2() const& {
    return {this->__fbthrift_field_useStopTLSV2, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> useStopTLSV2() & {
    return {this->__fbthrift_field_useStopTLSV2, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "useStopTLSV2" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> useStopTLSV2() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_useStopTLSV2), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionAlgos" } */
  [[deprecated("Use `FOO.compressionAlgos().value()` instead of `FOO.get_compressionAlgos()`")]]
  const std::uint64_t* get_compressionAlgos() const&;

  /** Glean { "field": "compressionAlgos" } */
  [[deprecated("Use `FOO.compressionAlgos().value()` instead of `FOO.get_compressionAlgos()`")]]
  std::uint64_t* get_compressionAlgos() &;

  std::uint64_t* get_compressionAlgos() && = delete;

  /** Glean { "field": "compressionAlgos" } */
  [[deprecated("Use `FOO.compressionAlgos() = BAR` instead of `FOO.set_compressionAlgos(BAR)`")]]
  std::uint64_t& set_compressionAlgos(std::uint64_t compressionAlgos_);

  /** Glean { "field": "useStopTLS" } */
  [[deprecated("Use `FOO.useStopTLS().value()` instead of `FOO.get_useStopTLS()`")]]
  const bool* get_useStopTLS() const&;

  /** Glean { "field": "useStopTLS" } */
  [[deprecated("Use `FOO.useStopTLS().value()` instead of `FOO.get_useStopTLS()`")]]
  bool* get_useStopTLS() &;

  bool* get_useStopTLS() && = delete;

  /** Glean { "field": "useStopTLS" } */
  [[deprecated("Use `FOO.useStopTLS() = BAR` instead of `FOO.set_useStopTLS(BAR)`")]]
  bool& set_useStopTLS(bool useStopTLS_);

  /** Glean { "field": "useStopTLSV2" } */
  [[deprecated("Use `FOO.useStopTLSV2().value()` instead of `FOO.get_useStopTLSV2()`")]]
  const bool* get_useStopTLSV2() const&;

  /** Glean { "field": "useStopTLSV2" } */
  [[deprecated("Use `FOO.useStopTLSV2().value()` instead of `FOO.get_useStopTLSV2()`")]]
  bool* get_useStopTLSV2() &;

  bool* get_useStopTLSV2() && = delete;

  /** Glean { "field": "useStopTLSV2" } */
  [[deprecated("Use `FOO.useStopTLSV2() = BAR` instead of `FOO.set_useStopTLSV2(BAR)`")]]
  bool& set_useStopTLSV2(bool useStopTLSV2_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<NegotiationParameters>;
  friend void swap(NegotiationParameters& a, NegotiationParameters& b);
};

template <class Protocol_>
unsigned long NegotiationParameters::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "InteractionCreate", "kind": "struct" } */
class InteractionCreate final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::interactionId,
    ::apache::thrift::ident::interactionName
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::cpp_type<::apache::thrift::ManagedStringViewWithConversions, ::apache::thrift::type::string_t>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = InteractionCreate;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  InteractionCreate();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  InteractionCreate(apache::thrift::FragileConstructor, ::std::int64_t interactionId__arg, ::apache::thrift::ManagedStringViewField interactionName__arg);

  InteractionCreate(InteractionCreate&&) noexcept;

  InteractionCreate(const InteractionCreate& src);


  InteractionCreate& operator=(InteractionCreate&&) noexcept;
  InteractionCreate& operator=(const InteractionCreate& src);

  ~InteractionCreate();

 private:
  ::std::int64_t __fbthrift_field_interactionId;
 private:
  ::apache::thrift::ManagedStringViewField __fbthrift_field_interactionName;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const InteractionCreate&) const;
  bool operator<(const InteractionCreate&) const;

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionId_ref() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionId_ref() & {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionId() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionId() & {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionName_ref() const& {
    return {this->__fbthrift_field_interactionName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionName_ref() & {
    return {this->__fbthrift_field_interactionName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionName_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionName), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionName() const& {
    return {this->__fbthrift_field_interactionName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionName() & {
    return {this->__fbthrift_field_interactionName, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionName" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionName() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionName), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId().value()` instead of `FOO.get_interactionId()`")]]
  ::std::int64_t get_interactionId() const;

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId() = BAR` instead of `FOO.set_interactionId(BAR)`")]]
  ::std::int64_t& set_interactionId(::std::int64_t interactionId_);

  /** Glean { "field": "interactionName" } */
  [[deprecated("Use `FOO.interactionName().value()` instead of `FOO.get_interactionName()`")]]
  const ::apache::thrift::ManagedStringViewField& get_interactionName() const& {
    return __fbthrift_field_interactionName;
  }

  /** Glean { "field": "interactionName" } */
  [[deprecated("Use `FOO.interactionName().value()` instead of `FOO.get_interactionName()`")]]
  ::apache::thrift::ManagedStringViewField get_interactionName() && {
    return static_cast<::apache::thrift::ManagedStringViewField&&>(__fbthrift_field_interactionName);
  }

  /** Glean { "field": "interactionName" } */
  template <typename T_InteractionCreate_interactionName_struct_setter = ::apache::thrift::ManagedStringViewField>
  [[deprecated("Use `FOO.interactionName() = BAR` instead of `FOO.set_interactionName(BAR)`")]]
  ::apache::thrift::ManagedStringViewField& set_interactionName(T_InteractionCreate_interactionName_struct_setter&& interactionName_) {
    interactionName_ref() = std::forward<T_InteractionCreate_interactionName_struct_setter>(interactionName_);
    return __fbthrift_field_interactionName;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<InteractionCreate>;
  friend void swap(InteractionCreate& a, InteractionCreate& b);
};

template <class Protocol_>
unsigned long InteractionCreate::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "InteractionTerminate", "kind": "struct" } */
class InteractionTerminate final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::interactionId
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i64_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = InteractionTerminate;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  InteractionTerminate() :
      __fbthrift_field_interactionId() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  InteractionTerminate(apache::thrift::FragileConstructor, ::std::int64_t interactionId__arg);

  InteractionTerminate(InteractionTerminate&&) = default;

  InteractionTerminate(const InteractionTerminate&) = default;


  InteractionTerminate& operator=(InteractionTerminate&&) = default;

  InteractionTerminate& operator=(const InteractionTerminate&) = default;
 private:
  ::std::int64_t __fbthrift_field_interactionId;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const InteractionTerminate&) const;
  bool operator<(const InteractionTerminate&) const;

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionId_ref() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionId_ref() & {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> interactionId() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> interactionId() & {
    return {this->__fbthrift_field_interactionId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> interactionId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId().value()` instead of `FOO.get_interactionId()`")]]
  ::std::int64_t get_interactionId() const;

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId() = BAR` instead of `FOO.set_interactionId(BAR)`")]]
  ::std::int64_t& set_interactionId(::std::int64_t interactionId_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<InteractionTerminate>;
  friend void swap(InteractionTerminate& a, InteractionTerminate& b);
};

template <class Protocol_>
unsigned long InteractionTerminate::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "FdMetadata", "kind": "struct" } */
class FdMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::fdSeqNum,
    ::apache::thrift::ident::numFds
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::i32_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = FdMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  FdMetadata() :
      __fbthrift_field_fdSeqNum(),
      __fbthrift_field_numFds() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  FdMetadata(apache::thrift::FragileConstructor, ::std::int64_t fdSeqNum__arg, ::std::int32_t numFds__arg);

  FdMetadata(FdMetadata&&) = default;

  FdMetadata(const FdMetadata&) = default;


  FdMetadata& operator=(FdMetadata&&) = default;

  FdMetadata& operator=(const FdMetadata&) = default;
 private:
  ::std::int64_t __fbthrift_field_fdSeqNum;
 private:
  ::std::int32_t __fbthrift_field_numFds;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const FdMetadata&) const;
  bool operator<(const FdMetadata&) const;

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> fdSeqNum_ref() const& {
    return {this->__fbthrift_field_fdSeqNum, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> fdSeqNum_ref() & {
    return {this->__fbthrift_field_fdSeqNum, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> fdSeqNum_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_fdSeqNum), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> fdSeqNum() const& {
    return {this->__fbthrift_field_fdSeqNum, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> fdSeqNum() & {
    return {this->__fbthrift_field_fdSeqNum, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "fdSeqNum" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> fdSeqNum() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_fdSeqNum), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> numFds_ref() const& {
    return {this->__fbthrift_field_numFds, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> numFds_ref() & {
    return {this->__fbthrift_field_numFds, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> numFds_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_numFds), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> numFds() const& {
    return {this->__fbthrift_field_numFds, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> numFds() & {
    return {this->__fbthrift_field_numFds, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "numFds" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> numFds() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_numFds), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "fdSeqNum" } */
  [[deprecated("Use `FOO.fdSeqNum().value()` instead of `FOO.get_fdSeqNum()`")]]
  const ::std::int64_t* get_fdSeqNum() const&;

  /** Glean { "field": "fdSeqNum" } */
  [[deprecated("Use `FOO.fdSeqNum().value()` instead of `FOO.get_fdSeqNum()`")]]
  ::std::int64_t* get_fdSeqNum() &;

  ::std::int64_t* get_fdSeqNum() && = delete;

  /** Glean { "field": "fdSeqNum" } */
  [[deprecated("Use `FOO.fdSeqNum() = BAR` instead of `FOO.set_fdSeqNum(BAR)`")]]
  ::std::int64_t& set_fdSeqNum(::std::int64_t fdSeqNum_);

  /** Glean { "field": "numFds" } */
  [[deprecated("Use `FOO.numFds().value()` instead of `FOO.get_numFds()`")]]
  const ::std::int32_t* get_numFds() const&;

  /** Glean { "field": "numFds" } */
  [[deprecated("Use `FOO.numFds().value()` instead of `FOO.get_numFds()`")]]
  ::std::int32_t* get_numFds() &;

  ::std::int32_t* get_numFds() && = delete;

  /** Glean { "field": "numFds" } */
  [[deprecated("Use `FOO.numFds() = BAR` instead of `FOO.set_numFds(BAR)`")]]
  ::std::int32_t& set_numFds(::std::int32_t numFds_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<FdMetadata>;
  friend void swap(FdMetadata& a, FdMetadata& b);
};

template <class Protocol_>
unsigned long FdMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "LoggingContext", "kind": "struct" } */
class LoggingContext final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 5;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,4,5};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::logSampleRatio,
    ::apache::thrift::ident::logErrorSampleRatio,
    ::apache::thrift::ident::requestId,
    ::apache::thrift::ident::routingTarget,
    ::apache::thrift::ident::requestAttemptId
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::i32_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = LoggingContext;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  LoggingContext();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  LoggingContext(apache::thrift::FragileConstructor, ::std::int64_t logSampleRatio__arg, ::std::int64_t logErrorSampleRatio__arg, ::std::string requestId__arg, ::std::string routingTarget__arg, ::std::int32_t requestAttemptId__arg);

  LoggingContext(LoggingContext&&) noexcept;

  LoggingContext(const LoggingContext& src);


  LoggingContext& operator=(LoggingContext&&) noexcept;
  LoggingContext& operator=(const LoggingContext& src);

  ~LoggingContext();

 private:
  ::std::int64_t __fbthrift_field_logSampleRatio;
 private:
  ::std::int64_t __fbthrift_field_logErrorSampleRatio;
 private:
  ::std::string __fbthrift_field_requestId;
 private:
  ::std::string __fbthrift_field_routingTarget;
 private:
  ::std::int32_t __fbthrift_field_requestAttemptId;
 private:
  apache::thrift::detail::isset_bitset<5, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const LoggingContext&) const;
  bool operator<(const LoggingContext&) const;

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> logSampleRatio_ref() const& {
    return {this->__fbthrift_field_logSampleRatio, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> logSampleRatio_ref() & {
    return {this->__fbthrift_field_logSampleRatio, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> logSampleRatio_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_logSampleRatio), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> logSampleRatio() const& {
    return {this->__fbthrift_field_logSampleRatio, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> logSampleRatio() & {
    return {this->__fbthrift_field_logSampleRatio, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> logSampleRatio() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_logSampleRatio), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> logErrorSampleRatio_ref() const& {
    return {this->__fbthrift_field_logErrorSampleRatio, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> logErrorSampleRatio_ref() & {
    return {this->__fbthrift_field_logErrorSampleRatio, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> logErrorSampleRatio_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_logErrorSampleRatio), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> logErrorSampleRatio() const& {
    return {this->__fbthrift_field_logErrorSampleRatio, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> logErrorSampleRatio() & {
    return {this->__fbthrift_field_logErrorSampleRatio, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "logErrorSampleRatio" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> logErrorSampleRatio() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_logErrorSampleRatio), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> requestId_ref() const& {
    return {this->__fbthrift_field_requestId, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> requestId_ref() & {
    return {this->__fbthrift_field_requestId, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> requestId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_requestId), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> requestId() const& {
    return {this->__fbthrift_field_requestId, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> requestId() & {
    return {this->__fbthrift_field_requestId, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "requestId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> requestId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_requestId), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> routingTarget_ref() const& {
    return {this->__fbthrift_field_routingTarget, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> routingTarget_ref() & {
    return {this->__fbthrift_field_routingTarget, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> routingTarget_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_routingTarget), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> routingTarget() const& {
    return {this->__fbthrift_field_routingTarget, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> routingTarget() & {
    return {this->__fbthrift_field_routingTarget, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "routingTarget" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> routingTarget() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_routingTarget), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> requestAttemptId_ref() const& {
    return {this->__fbthrift_field_requestAttemptId, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> requestAttemptId_ref() & {
    return {this->__fbthrift_field_requestAttemptId, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> requestAttemptId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_requestAttemptId), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> requestAttemptId() const& {
    return {this->__fbthrift_field_requestAttemptId, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> requestAttemptId() & {
    return {this->__fbthrift_field_requestAttemptId, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "requestAttemptId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> requestAttemptId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_requestAttemptId), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "logSampleRatio" } */
  [[deprecated("Use `FOO.logSampleRatio().value()` instead of `FOO.get_logSampleRatio()`")]]
  ::std::int64_t get_logSampleRatio() const;

  /** Glean { "field": "logSampleRatio" } */
  [[deprecated("Use `FOO.logSampleRatio() = BAR` instead of `FOO.set_logSampleRatio(BAR)`")]]
  ::std::int64_t& set_logSampleRatio(::std::int64_t logSampleRatio_);

  /** Glean { "field": "logErrorSampleRatio" } */
  [[deprecated("Use `FOO.logErrorSampleRatio().value()` instead of `FOO.get_logErrorSampleRatio()`")]]
  ::std::int64_t get_logErrorSampleRatio() const;

  /** Glean { "field": "logErrorSampleRatio" } */
  [[deprecated("Use `FOO.logErrorSampleRatio() = BAR` instead of `FOO.set_logErrorSampleRatio(BAR)`")]]
  ::std::int64_t& set_logErrorSampleRatio(::std::int64_t logErrorSampleRatio_);

  /** Glean { "field": "requestId" } */
  [[deprecated("Use `FOO.requestId().value()` instead of `FOO.get_requestId()`")]]
  const ::std::string* get_requestId() const&;

  /** Glean { "field": "requestId" } */
  [[deprecated("Use `FOO.requestId().value()` instead of `FOO.get_requestId()`")]]
  ::std::string* get_requestId() &;

  ::std::string* get_requestId() && = delete;

  /** Glean { "field": "requestId" } */
  template <typename T_LoggingContext_requestId_struct_setter = ::std::string>
  [[deprecated("Use `FOO.requestId() = BAR` instead of `FOO.set_requestId(BAR)`")]]
  ::std::string& set_requestId(T_LoggingContext_requestId_struct_setter&& requestId_) {
    requestId_ref() = std::forward<T_LoggingContext_requestId_struct_setter>(requestId_);
    return __fbthrift_field_requestId;
  }

  /** Glean { "field": "routingTarget" } */
  [[deprecated("Use `FOO.routingTarget().value()` instead of `FOO.get_routingTarget()`")]]
  const ::std::string* get_routingTarget() const&;

  /** Glean { "field": "routingTarget" } */
  [[deprecated("Use `FOO.routingTarget().value()` instead of `FOO.get_routingTarget()`")]]
  ::std::string* get_routingTarget() &;

  ::std::string* get_routingTarget() && = delete;

  /** Glean { "field": "routingTarget" } */
  template <typename T_LoggingContext_routingTarget_struct_setter = ::std::string>
  [[deprecated("Use `FOO.routingTarget() = BAR` instead of `FOO.set_routingTarget(BAR)`")]]
  ::std::string& set_routingTarget(T_LoggingContext_routingTarget_struct_setter&& routingTarget_) {
    routingTarget_ref() = std::forward<T_LoggingContext_routingTarget_struct_setter>(routingTarget_);
    return __fbthrift_field_routingTarget;
  }

  /** Glean { "field": "requestAttemptId" } */
  [[deprecated("Use `FOO.requestAttemptId().value()` instead of `FOO.get_requestAttemptId()`")]]
  ::std::int32_t get_requestAttemptId() const;

  /** Glean { "field": "requestAttemptId" } */
  [[deprecated("Use `FOO.requestAttemptId() = BAR` instead of `FOO.set_requestAttemptId(BAR)`")]]
  ::std::int32_t& set_requestAttemptId(::std::int32_t requestAttemptId_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<LoggingContext>;
  friend void swap(LoggingContext& a, LoggingContext& b);
};

template <class Protocol_>
unsigned long LoggingContext::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "RequestRpcMetadata", "kind": "struct" } */
class RequestRpcMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 22;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,5,6,7,8,11,13,14,15,16,17,18,19,20,22,23,24,25,26,27};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::protocol,
    ::apache::thrift::ident::name,
    ::apache::thrift::ident::kind,
    ::apache::thrift::ident::clientTimeoutMs,
    ::apache::thrift::ident::queueTimeoutMs,
    ::apache::thrift::ident::priority,
    ::apache::thrift::ident::otherMetadata,
    ::apache::thrift::ident::crc32c,
    ::apache::thrift::ident::loadMetric,
    ::apache::thrift::ident::compression,
    ::apache::thrift::ident::compressionConfig,
    ::apache::thrift::ident::interactionId,
    ::apache::thrift::ident::interactionCreate,
    ::apache::thrift::ident::clientId,
    ::apache::thrift::ident::serviceTraceMeta,
    ::apache::thrift::ident::frameworkMetadata,
    ::apache::thrift::ident::fdMetadata,
    ::apache::thrift::ident::loggingContext,
    ::apache::thrift::ident::tenantId,
    ::apache::thrift::ident::checksum,
    ::apache::thrift::ident::checksumResponse,
    ::apache::thrift::ident::secondaryLoadMetric
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::ProtocolId>,
    ::apache::thrift::type::cpp_type<::apache::thrift::ManagedStringViewWithConversions, ::apache::thrift::type::string_t>,
    ::apache::thrift::type::enum_t<::apache::thrift::RpcKind>,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::enum_t<::apache::thrift::RpcPriority>,
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::std::string>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>,
    ::apache::thrift::type::cpp_type<std::uint32_t, ::apache::thrift::type::i32_t>,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::enum_t<::apache::thrift::CompressionAlgorithm>,
    ::apache::thrift::type::struct_t<::apache::thrift::CompressionConfig>,
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::struct_t<::apache::thrift::InteractionCreate>,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::cpp_type<std::unique_ptr<folly::IOBuf>, ::apache::thrift::type::binary_t>,
    ::apache::thrift::type::struct_t<::apache::thrift::FdMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::LoggingContext>,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::struct_t<::apache::thrift::Checksum>,
    ::apache::thrift::type::bool_t,
    ::apache::thrift::type::string_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = RequestRpcMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  RequestRpcMetadata();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  RequestRpcMetadata(apache::thrift::FragileConstructor, ::apache::thrift::ProtocolId protocol__arg, ::apache::thrift::ManagedStringViewField name__arg, ::apache::thrift::RpcKind kind__arg, ::std::int32_t clientTimeoutMs__arg, ::std::int32_t queueTimeoutMs__arg, ::apache::thrift::RpcPriority priority__arg, folly::F14NodeMap<::std::string, ::std::string> otherMetadata__arg, std::uint32_t crc32c__arg, ::std::string loadMetric__arg, ::apache::thrift::CompressionAlgorithm compression__arg, ::apache::thrift::CompressionConfig compressionConfig__arg, ::std::int64_t interactionId__arg, ::apache::thrift::InteractionCreate interactionCreate__arg, ::std::string clientId__arg, ::std::string serviceTraceMeta__arg, ::apache::thrift::IOBufPtr frameworkMetadata__arg, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> fdMetadata__arg, ::apache::thrift::LoggingContext loggingContext__arg, ::std::string tenantId__arg, ::apache::thrift::Checksum checksum__arg, bool checksumResponse__arg, ::std::string secondaryLoadMetric__arg);

  RequestRpcMetadata(RequestRpcMetadata&&) noexcept;
  RequestRpcMetadata(const RequestRpcMetadata& src);


  RequestRpcMetadata& operator=(RequestRpcMetadata&&) noexcept;
  RequestRpcMetadata& operator=(const RequestRpcMetadata& src);

  ~RequestRpcMetadata();

 private:
  ::apache::thrift::ProtocolId __fbthrift_field_protocol;
 private:
  ::apache::thrift::ManagedStringViewField __fbthrift_field_name;
 private:
  ::apache::thrift::RpcKind __fbthrift_field_kind;
 private:
  ::std::int32_t __fbthrift_field_clientTimeoutMs;
 private:
  ::std::int32_t __fbthrift_field_queueTimeoutMs;
 private:
  ::apache::thrift::RpcPriority __fbthrift_field_priority;
 private:
  folly::F14NodeMap<::std::string, ::std::string> __fbthrift_field_otherMetadata;
 private:
  std::uint32_t __fbthrift_field_crc32c;
 private:
  ::std::string __fbthrift_field_loadMetric;
 private:
  ::apache::thrift::CompressionAlgorithm __fbthrift_field_compression;
 private:
  ::apache::thrift::CompressionConfig __fbthrift_field_compressionConfig;
 private:
  ::std::int64_t __fbthrift_field_interactionId;
 private:
  ::apache::thrift::InteractionCreate __fbthrift_field_interactionCreate;
 private:
  ::std::string __fbthrift_field_clientId;
 private:
  ::std::string __fbthrift_field_serviceTraceMeta;
 private:
  ::apache::thrift::IOBufPtr __fbthrift_field_frameworkMetadata;
 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> __fbthrift_field_fdMetadata;
 private:
  ::apache::thrift::LoggingContext __fbthrift_field_loggingContext;
 private:
  ::std::string __fbthrift_field_tenantId;
 private:
  ::apache::thrift::Checksum __fbthrift_field_checksum;
 private:
  bool __fbthrift_field_checksumResponse;
 private:
  ::std::string __fbthrift_field_secondaryLoadMetric;
 private:
  apache::thrift::detail::isset_bitset<21, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const RequestRpcMetadata&) const;
  bool operator<(const RequestRpcMetadata&) const;

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> protocol_ref() const& {
    return {this->__fbthrift_field_protocol, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> protocol_ref() & {
    return {this->__fbthrift_field_protocol, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> protocol_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_protocol), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> protocol() const& {
    return {this->__fbthrift_field_protocol, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> protocol() & {
    return {this->__fbthrift_field_protocol, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "protocol" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProtocolId>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> protocol() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_protocol), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_ref() const& {
    return {this->__fbthrift_field_name, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_ref() & {
    return {this->__fbthrift_field_name, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name() const& {
    return {this->__fbthrift_field_name, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name() & {
    return {this->__fbthrift_field_name, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "name" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ManagedStringViewField>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> kind_ref() const& {
    return {this->__fbthrift_field_kind, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> kind_ref() & {
    return {this->__fbthrift_field_kind, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> kind_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_kind), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> kind() const& {
    return {this->__fbthrift_field_kind, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> kind() & {
    return {this->__fbthrift_field_kind, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> kind() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_kind), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientTimeoutMs_ref() const& {
    return {this->__fbthrift_field_clientTimeoutMs, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientTimeoutMs_ref() & {
    return {this->__fbthrift_field_clientTimeoutMs, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientTimeoutMs_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientTimeoutMs), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientTimeoutMs() const& {
    return {this->__fbthrift_field_clientTimeoutMs, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientTimeoutMs() & {
    return {this->__fbthrift_field_clientTimeoutMs, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "clientTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientTimeoutMs() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientTimeoutMs), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueTimeoutMs_ref() const& {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueTimeoutMs_ref() & {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueTimeoutMs_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueTimeoutMs), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueTimeoutMs() const& {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueTimeoutMs() & {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueTimeoutMs() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueTimeoutMs), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> priority_ref() const& {
    return {this->__fbthrift_field_priority, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> priority_ref() & {
    return {this->__fbthrift_field_priority, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> priority_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_priority), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> priority() const& {
    return {this->__fbthrift_field_priority, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> priority() & {
    return {this->__fbthrift_field_priority, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "priority" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::RpcPriority>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> priority() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_priority), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata_ref() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata_ref() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> crc32c_ref() const& {
    return {this->__fbthrift_field_crc32c, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> crc32c_ref() & {
    return {this->__fbthrift_field_crc32c, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> crc32c_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_crc32c), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> crc32c() const& {
    return {this->__fbthrift_field_crc32c, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> crc32c() & {
    return {this->__fbthrift_field_crc32c, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> crc32c() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_crc32c), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> loadMetric_ref() const& {
    return {this->__fbthrift_field_loadMetric, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> loadMetric_ref() & {
    return {this->__fbthrift_field_loadMetric, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> loadMetric_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_loadMetric), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> loadMetric() const& {
    return {this->__fbthrift_field_loadMetric, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> loadMetric() & {
    return {this->__fbthrift_field_loadMetric, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "loadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> loadMetric() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_loadMetric), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression_ref() const& {
    return {this->__fbthrift_field_compression, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression_ref() & {
    return {this->__fbthrift_field_compression, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression() const& {
    return {this->__fbthrift_field_compression, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression() & {
    return {this->__fbthrift_field_compression, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionConfig_ref() const& {
    return {this->__fbthrift_field_compressionConfig, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionConfig_ref() & {
    return {this->__fbthrift_field_compressionConfig, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionConfig_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionConfig), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionConfig() const& {
    return {this->__fbthrift_field_compressionConfig, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionConfig() & {
    return {this->__fbthrift_field_compressionConfig, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionConfig" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionConfig>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionConfig() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionConfig), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interactionId_ref() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interactionId_ref() & {
    return {this->__fbthrift_field_interactionId, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interactionId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interactionId() const& {
    return {this->__fbthrift_field_interactionId, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interactionId() & {
    return {this->__fbthrift_field_interactionId, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionId" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interactionId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionId), __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interactionCreate_ref() const& {
    return {this->__fbthrift_field_interactionCreate, __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interactionCreate_ref() & {
    return {this->__fbthrift_field_interactionCreate, __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interactionCreate_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionCreate), __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interactionCreate() const& {
    return {this->__fbthrift_field_interactionCreate, __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interactionCreate() & {
    return {this->__fbthrift_field_interactionCreate, __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "interactionCreate" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InteractionCreate>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interactionCreate() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interactionCreate), __isset.at(12), __isset.bit(12)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientId_ref() const& {
    return {this->__fbthrift_field_clientId, __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientId_ref() & {
    return {this->__fbthrift_field_clientId, __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientId), __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientId() const& {
    return {this->__fbthrift_field_clientId, __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientId() & {
    return {this->__fbthrift_field_clientId, __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "clientId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientId), __isset.at(13), __isset.bit(13)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> serviceTraceMeta_ref() const& {
    return {this->__fbthrift_field_serviceTraceMeta, __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> serviceTraceMeta_ref() & {
    return {this->__fbthrift_field_serviceTraceMeta, __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> serviceTraceMeta_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_serviceTraceMeta), __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> serviceTraceMeta() const& {
    return {this->__fbthrift_field_serviceTraceMeta, __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> serviceTraceMeta() & {
    return {this->__fbthrift_field_serviceTraceMeta, __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> serviceTraceMeta() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_serviceTraceMeta), __isset.at(14), __isset.bit(14)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> frameworkMetadata_ref() const& {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> frameworkMetadata_ref() & {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> frameworkMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_frameworkMetadata), __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> frameworkMetadata() const& {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> frameworkMetadata() & {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> frameworkMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_frameworkMetadata), __isset.at(15), __isset.bit(15)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> loggingContext_ref() const& {
    return {this->__fbthrift_field_loggingContext, __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> loggingContext_ref() & {
    return {this->__fbthrift_field_loggingContext, __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> loggingContext_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_loggingContext), __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> loggingContext() const& {
    return {this->__fbthrift_field_loggingContext, __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> loggingContext() & {
    return {this->__fbthrift_field_loggingContext, __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "loggingContext" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::LoggingContext>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> loggingContext() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_loggingContext), __isset.at(16), __isset.bit(16)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> tenantId_ref() const& {
    return {this->__fbthrift_field_tenantId, __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> tenantId_ref() & {
    return {this->__fbthrift_field_tenantId, __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> tenantId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_tenantId), __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> tenantId() const& {
    return {this->__fbthrift_field_tenantId, __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> tenantId() & {
    return {this->__fbthrift_field_tenantId, __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "tenantId" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> tenantId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_tenantId), __isset.at(17), __isset.bit(17)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum_ref() const& {
    return {this->__fbthrift_field_checksum, __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum_ref() & {
    return {this->__fbthrift_field_checksum, __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum() const& {
    return {this->__fbthrift_field_checksum, __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum() & {
    return {this->__fbthrift_field_checksum, __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(18), __isset.bit(18)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksumResponse_ref() const& {
    return {this->__fbthrift_field_checksumResponse, __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksumResponse_ref() & {
    return {this->__fbthrift_field_checksumResponse, __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksumResponse_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksumResponse), __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksumResponse() const& {
    return {this->__fbthrift_field_checksumResponse, __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksumResponse() & {
    return {this->__fbthrift_field_checksumResponse, __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "checksumResponse" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksumResponse() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksumResponse), __isset.at(19), __isset.bit(19)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> secondaryLoadMetric_ref() const& {
    return {this->__fbthrift_field_secondaryLoadMetric, __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> secondaryLoadMetric_ref() & {
    return {this->__fbthrift_field_secondaryLoadMetric, __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> secondaryLoadMetric_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_secondaryLoadMetric), __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> secondaryLoadMetric() const& {
    return {this->__fbthrift_field_secondaryLoadMetric, __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> secondaryLoadMetric() & {
    return {this->__fbthrift_field_secondaryLoadMetric, __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> secondaryLoadMetric() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_secondaryLoadMetric), __isset.at(20), __isset.bit(20)};
  }

  /** Glean { "field": "protocol" } */
  [[deprecated("Use `FOO.protocol().value()` instead of `FOO.get_protocol()`")]]
  const ::apache::thrift::ProtocolId* get_protocol() const&;

  /** Glean { "field": "protocol" } */
  [[deprecated("Use `FOO.protocol().value()` instead of `FOO.get_protocol()`")]]
  ::apache::thrift::ProtocolId* get_protocol() &;

  ::apache::thrift::ProtocolId* get_protocol() && = delete;

  /** Glean { "field": "protocol" } */
  [[deprecated("Use `FOO.protocol() = BAR` instead of `FOO.set_protocol(BAR)`")]]
  ::apache::thrift::ProtocolId& set_protocol(::apache::thrift::ProtocolId protocol_);

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  const ::apache::thrift::ManagedStringViewField* get_name() const&;

  /** Glean { "field": "name" } */
  [[deprecated("Use `FOO.name().value()` instead of `FOO.get_name()`")]]
  ::apache::thrift::ManagedStringViewField* get_name() &;

  ::apache::thrift::ManagedStringViewField* get_name() && = delete;

  /** Glean { "field": "name" } */
  template <typename T_RequestRpcMetadata_name_struct_setter = ::apache::thrift::ManagedStringViewField>
  [[deprecated("Use `FOO.name() = BAR` instead of `FOO.set_name(BAR)`")]]
  ::apache::thrift::ManagedStringViewField& set_name(T_RequestRpcMetadata_name_struct_setter&& name_) {
    name_ref() = std::forward<T_RequestRpcMetadata_name_struct_setter>(name_);
    return __fbthrift_field_name;
  }

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind().value()` instead of `FOO.get_kind()`")]]
  const ::apache::thrift::RpcKind* get_kind() const&;

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind().value()` instead of `FOO.get_kind()`")]]
  ::apache::thrift::RpcKind* get_kind() &;

  ::apache::thrift::RpcKind* get_kind() && = delete;

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind() = BAR` instead of `FOO.set_kind(BAR)`")]]
  ::apache::thrift::RpcKind& set_kind(::apache::thrift::RpcKind kind_);

  /** Glean { "field": "clientTimeoutMs" } */
  [[deprecated("Use `FOO.clientTimeoutMs().value()` instead of `FOO.get_clientTimeoutMs()`")]]
  const ::std::int32_t* get_clientTimeoutMs() const&;

  /** Glean { "field": "clientTimeoutMs" } */
  [[deprecated("Use `FOO.clientTimeoutMs().value()` instead of `FOO.get_clientTimeoutMs()`")]]
  ::std::int32_t* get_clientTimeoutMs() &;

  ::std::int32_t* get_clientTimeoutMs() && = delete;

  /** Glean { "field": "clientTimeoutMs" } */
  [[deprecated("Use `FOO.clientTimeoutMs() = BAR` instead of `FOO.set_clientTimeoutMs(BAR)`")]]
  ::std::int32_t& set_clientTimeoutMs(::std::int32_t clientTimeoutMs_);

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs().value()` instead of `FOO.get_queueTimeoutMs()`")]]
  const ::std::int32_t* get_queueTimeoutMs() const&;

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs().value()` instead of `FOO.get_queueTimeoutMs()`")]]
  ::std::int32_t* get_queueTimeoutMs() &;

  ::std::int32_t* get_queueTimeoutMs() && = delete;

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs() = BAR` instead of `FOO.set_queueTimeoutMs(BAR)`")]]
  ::std::int32_t& set_queueTimeoutMs(::std::int32_t queueTimeoutMs_);

  /** Glean { "field": "priority" } */
  [[deprecated("Use `FOO.priority().value()` instead of `FOO.get_priority()`")]]
  const ::apache::thrift::RpcPriority* get_priority() const&;

  /** Glean { "field": "priority" } */
  [[deprecated("Use `FOO.priority().value()` instead of `FOO.get_priority()`")]]
  ::apache::thrift::RpcPriority* get_priority() &;

  ::apache::thrift::RpcPriority* get_priority() && = delete;

  /** Glean { "field": "priority" } */
  [[deprecated("Use `FOO.priority() = BAR` instead of `FOO.set_priority(BAR)`")]]
  ::apache::thrift::RpcPriority& set_priority(::apache::thrift::RpcPriority priority_);

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() const&;

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() &;

  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() && = delete;

  /** Glean { "field": "otherMetadata" } */
  template <typename T_RequestRpcMetadata_otherMetadata_struct_setter = folly::F14NodeMap<::std::string, ::std::string>>
  [[deprecated("Use `FOO.otherMetadata() = BAR` instead of `FOO.set_otherMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::std::string>& set_otherMetadata(T_RequestRpcMetadata_otherMetadata_struct_setter&& otherMetadata_) {
    otherMetadata_ref() = std::forward<T_RequestRpcMetadata_otherMetadata_struct_setter>(otherMetadata_);
    return __fbthrift_field_otherMetadata;
  }

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c().value()` instead of `FOO.get_crc32c()`")]]
  const std::uint32_t* get_crc32c() const&;

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c().value()` instead of `FOO.get_crc32c()`")]]
  std::uint32_t* get_crc32c() &;

  std::uint32_t* get_crc32c() && = delete;

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c() = BAR` instead of `FOO.set_crc32c(BAR)`")]]
  std::uint32_t& set_crc32c(std::uint32_t crc32c_);

  /** Glean { "field": "loadMetric" } */
  [[deprecated("Use `FOO.loadMetric().value()` instead of `FOO.get_loadMetric()`")]]
  const ::std::string* get_loadMetric() const&;

  /** Glean { "field": "loadMetric" } */
  [[deprecated("Use `FOO.loadMetric().value()` instead of `FOO.get_loadMetric()`")]]
  ::std::string* get_loadMetric() &;

  ::std::string* get_loadMetric() && = delete;

  /** Glean { "field": "loadMetric" } */
  template <typename T_RequestRpcMetadata_loadMetric_struct_setter = ::std::string>
  [[deprecated("Use `FOO.loadMetric() = BAR` instead of `FOO.set_loadMetric(BAR)`")]]
  ::std::string& set_loadMetric(T_RequestRpcMetadata_loadMetric_struct_setter&& loadMetric_) {
    loadMetric_ref() = std::forward<T_RequestRpcMetadata_loadMetric_struct_setter>(loadMetric_);
    return __fbthrift_field_loadMetric;
  }

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  const ::apache::thrift::CompressionAlgorithm* get_compression() const&;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  ::apache::thrift::CompressionAlgorithm* get_compression() &;

  ::apache::thrift::CompressionAlgorithm* get_compression() && = delete;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression() = BAR` instead of `FOO.set_compression(BAR)`")]]
  ::apache::thrift::CompressionAlgorithm& set_compression(::apache::thrift::CompressionAlgorithm compression_);

  /** Glean { "field": "compressionConfig" } */
  [[deprecated("Use `FOO.compressionConfig().value()` instead of `FOO.get_compressionConfig()`")]]
  const ::apache::thrift::CompressionConfig* get_compressionConfig() const&;

  /** Glean { "field": "compressionConfig" } */
  [[deprecated("Use `FOO.compressionConfig().value()` instead of `FOO.get_compressionConfig()`")]]
  ::apache::thrift::CompressionConfig* get_compressionConfig() &;

  ::apache::thrift::CompressionConfig* get_compressionConfig() && = delete;

  /** Glean { "field": "compressionConfig" } */
  template <typename T_RequestRpcMetadata_compressionConfig_struct_setter = ::apache::thrift::CompressionConfig>
  [[deprecated("Use `FOO.compressionConfig() = BAR` instead of `FOO.set_compressionConfig(BAR)`")]]
  ::apache::thrift::CompressionConfig& set_compressionConfig(T_RequestRpcMetadata_compressionConfig_struct_setter&& compressionConfig_) {
    compressionConfig_ref() = std::forward<T_RequestRpcMetadata_compressionConfig_struct_setter>(compressionConfig_);
    return __fbthrift_field_compressionConfig;
  }

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId().value()` instead of `FOO.get_interactionId()`")]]
  const ::std::int64_t* get_interactionId() const&;

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId().value()` instead of `FOO.get_interactionId()`")]]
  ::std::int64_t* get_interactionId() &;

  ::std::int64_t* get_interactionId() && = delete;

  /** Glean { "field": "interactionId" } */
  [[deprecated("Use `FOO.interactionId() = BAR` instead of `FOO.set_interactionId(BAR)`")]]
  ::std::int64_t& set_interactionId(::std::int64_t interactionId_);

  /** Glean { "field": "interactionCreate" } */
  [[deprecated("Use `FOO.interactionCreate().value()` instead of `FOO.get_interactionCreate()`")]]
  const ::apache::thrift::InteractionCreate* get_interactionCreate() const&;

  /** Glean { "field": "interactionCreate" } */
  [[deprecated("Use `FOO.interactionCreate().value()` instead of `FOO.get_interactionCreate()`")]]
  ::apache::thrift::InteractionCreate* get_interactionCreate() &;

  ::apache::thrift::InteractionCreate* get_interactionCreate() && = delete;

  /** Glean { "field": "interactionCreate" } */
  template <typename T_RequestRpcMetadata_interactionCreate_struct_setter = ::apache::thrift::InteractionCreate>
  [[deprecated("Use `FOO.interactionCreate() = BAR` instead of `FOO.set_interactionCreate(BAR)`")]]
  ::apache::thrift::InteractionCreate& set_interactionCreate(T_RequestRpcMetadata_interactionCreate_struct_setter&& interactionCreate_) {
    interactionCreate_ref() = std::forward<T_RequestRpcMetadata_interactionCreate_struct_setter>(interactionCreate_);
    return __fbthrift_field_interactionCreate;
  }

  /** Glean { "field": "clientId" } */
  [[deprecated("Use `FOO.clientId().value()` instead of `FOO.get_clientId()`")]]
  const ::std::string* get_clientId() const&;

  /** Glean { "field": "clientId" } */
  [[deprecated("Use `FOO.clientId().value()` instead of `FOO.get_clientId()`")]]
  ::std::string* get_clientId() &;

  ::std::string* get_clientId() && = delete;

  /** Glean { "field": "clientId" } */
  template <typename T_RequestRpcMetadata_clientId_struct_setter = ::std::string>
  [[deprecated("Use `FOO.clientId() = BAR` instead of `FOO.set_clientId(BAR)`")]]
  ::std::string& set_clientId(T_RequestRpcMetadata_clientId_struct_setter&& clientId_) {
    clientId_ref() = std::forward<T_RequestRpcMetadata_clientId_struct_setter>(clientId_);
    return __fbthrift_field_clientId;
  }

  /** Glean { "field": "serviceTraceMeta" } */
  [[deprecated("Use `FOO.serviceTraceMeta().value()` instead of `FOO.get_serviceTraceMeta()`")]]
  const ::std::string* get_serviceTraceMeta() const&;

  /** Glean { "field": "serviceTraceMeta" } */
  [[deprecated("Use `FOO.serviceTraceMeta().value()` instead of `FOO.get_serviceTraceMeta()`")]]
  ::std::string* get_serviceTraceMeta() &;

  ::std::string* get_serviceTraceMeta() && = delete;

  /** Glean { "field": "serviceTraceMeta" } */
  template <typename T_RequestRpcMetadata_serviceTraceMeta_struct_setter = ::std::string>
  [[deprecated("Use `FOO.serviceTraceMeta() = BAR` instead of `FOO.set_serviceTraceMeta(BAR)`")]]
  ::std::string& set_serviceTraceMeta(T_RequestRpcMetadata_serviceTraceMeta_struct_setter&& serviceTraceMeta_) {
    serviceTraceMeta_ref() = std::forward<T_RequestRpcMetadata_serviceTraceMeta_struct_setter>(serviceTraceMeta_);
    return __fbthrift_field_serviceTraceMeta;
  }

  /** Glean { "field": "frameworkMetadata" } */
  [[deprecated("Use `FOO.frameworkMetadata().value()` instead of `FOO.get_frameworkMetadata()`")]]
  const ::apache::thrift::IOBufPtr* get_frameworkMetadata() const&;

  /** Glean { "field": "frameworkMetadata" } */
  [[deprecated("Use `FOO.frameworkMetadata().value()` instead of `FOO.get_frameworkMetadata()`")]]
  ::apache::thrift::IOBufPtr* get_frameworkMetadata() &;

  ::apache::thrift::IOBufPtr* get_frameworkMetadata() && = delete;

  /** Glean { "field": "frameworkMetadata" } */
  template <typename T_RequestRpcMetadata_frameworkMetadata_struct_setter = ::apache::thrift::IOBufPtr>
  [[deprecated("Use `FOO.frameworkMetadata() = BAR` instead of `FOO.set_frameworkMetadata(BAR)`")]]
  ::apache::thrift::IOBufPtr& set_frameworkMetadata(T_RequestRpcMetadata_frameworkMetadata_struct_setter&& frameworkMetadata_) {
    frameworkMetadata_ref() = std::forward<T_RequestRpcMetadata_frameworkMetadata_struct_setter>(frameworkMetadata_);
    return __fbthrift_field_frameworkMetadata;
  }

  /** Glean { "field": "loggingContext" } */
  [[deprecated("Use `FOO.loggingContext().value()` instead of `FOO.get_loggingContext()`")]]
  const ::apache::thrift::LoggingContext* get_loggingContext() const&;

  /** Glean { "field": "loggingContext" } */
  [[deprecated("Use `FOO.loggingContext().value()` instead of `FOO.get_loggingContext()`")]]
  ::apache::thrift::LoggingContext* get_loggingContext() &;

  ::apache::thrift::LoggingContext* get_loggingContext() && = delete;

  /** Glean { "field": "loggingContext" } */
  template <typename T_RequestRpcMetadata_loggingContext_struct_setter = ::apache::thrift::LoggingContext>
  [[deprecated("Use `FOO.loggingContext() = BAR` instead of `FOO.set_loggingContext(BAR)`")]]
  ::apache::thrift::LoggingContext& set_loggingContext(T_RequestRpcMetadata_loggingContext_struct_setter&& loggingContext_) {
    loggingContext_ref() = std::forward<T_RequestRpcMetadata_loggingContext_struct_setter>(loggingContext_);
    return __fbthrift_field_loggingContext;
  }

  /** Glean { "field": "tenantId" } */
  [[deprecated("Use `FOO.tenantId().value()` instead of `FOO.get_tenantId()`")]]
  const ::std::string* get_tenantId() const&;

  /** Glean { "field": "tenantId" } */
  [[deprecated("Use `FOO.tenantId().value()` instead of `FOO.get_tenantId()`")]]
  ::std::string* get_tenantId() &;

  ::std::string* get_tenantId() && = delete;

  /** Glean { "field": "tenantId" } */
  template <typename T_RequestRpcMetadata_tenantId_struct_setter = ::std::string>
  [[deprecated("Use `FOO.tenantId() = BAR` instead of `FOO.set_tenantId(BAR)`")]]
  ::std::string& set_tenantId(T_RequestRpcMetadata_tenantId_struct_setter&& tenantId_) {
    tenantId_ref() = std::forward<T_RequestRpcMetadata_tenantId_struct_setter>(tenantId_);
    return __fbthrift_field_tenantId;
  }

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  const ::apache::thrift::Checksum* get_checksum() const&;

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  ::apache::thrift::Checksum* get_checksum() &;

  ::apache::thrift::Checksum* get_checksum() && = delete;

  /** Glean { "field": "checksum" } */
  template <typename T_RequestRpcMetadata_checksum_struct_setter = ::apache::thrift::Checksum>
  [[deprecated("Use `FOO.checksum() = BAR` instead of `FOO.set_checksum(BAR)`")]]
  ::apache::thrift::Checksum& set_checksum(T_RequestRpcMetadata_checksum_struct_setter&& checksum_) {
    checksum_ref() = std::forward<T_RequestRpcMetadata_checksum_struct_setter>(checksum_);
    return __fbthrift_field_checksum;
  }

  /** Glean { "field": "checksumResponse" } */
  [[deprecated("Use `FOO.checksumResponse().value()` instead of `FOO.get_checksumResponse()`")]]
  const bool* get_checksumResponse() const&;

  /** Glean { "field": "checksumResponse" } */
  [[deprecated("Use `FOO.checksumResponse().value()` instead of `FOO.get_checksumResponse()`")]]
  bool* get_checksumResponse() &;

  bool* get_checksumResponse() && = delete;

  /** Glean { "field": "checksumResponse" } */
  [[deprecated("Use `FOO.checksumResponse() = BAR` instead of `FOO.set_checksumResponse(BAR)`")]]
  bool& set_checksumResponse(bool checksumResponse_);

  /** Glean { "field": "secondaryLoadMetric" } */
  [[deprecated("Use `FOO.secondaryLoadMetric().value()` instead of `FOO.get_secondaryLoadMetric()`")]]
  const ::std::string* get_secondaryLoadMetric() const&;

  /** Glean { "field": "secondaryLoadMetric" } */
  [[deprecated("Use `FOO.secondaryLoadMetric().value()` instead of `FOO.get_secondaryLoadMetric()`")]]
  ::std::string* get_secondaryLoadMetric() &;

  ::std::string* get_secondaryLoadMetric() && = delete;

  /** Glean { "field": "secondaryLoadMetric" } */
  template <typename T_RequestRpcMetadata_secondaryLoadMetric_struct_setter = ::std::string>
  [[deprecated("Use `FOO.secondaryLoadMetric() = BAR` instead of `FOO.set_secondaryLoadMetric(BAR)`")]]
  ::std::string& set_secondaryLoadMetric(T_RequestRpcMetadata_secondaryLoadMetric_struct_setter&& secondaryLoadMetric_) {
    secondaryLoadMetric_ref() = std::forward<T_RequestRpcMetadata_secondaryLoadMetric_struct_setter>(secondaryLoadMetric_);
    return __fbthrift_field_secondaryLoadMetric;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<RequestRpcMetadata>;
  friend void swap(RequestRpcMetadata& a, RequestRpcMetadata& b);
};

template <class Protocol_>
unsigned long RequestRpcMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ErrorClassification", "kind": "struct" } */
class ErrorClassification final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::kind,
    ::apache::thrift::ident::blame,
    ::apache::thrift::ident::safety
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::ErrorKind>,
    ::apache::thrift::type::enum_t<::apache::thrift::ErrorBlame>,
    ::apache::thrift::type::enum_t<::apache::thrift::ErrorSafety>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ErrorClassification;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ErrorClassification() :
      __fbthrift_field_kind(),
      __fbthrift_field_blame(),
      __fbthrift_field_safety() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ErrorClassification(apache::thrift::FragileConstructor, ::apache::thrift::ErrorKind kind__arg, ::apache::thrift::ErrorBlame blame__arg, ::apache::thrift::ErrorSafety safety__arg);

  ErrorClassification(ErrorClassification&&) = default;

  ErrorClassification(const ErrorClassification&) = default;


  ErrorClassification& operator=(ErrorClassification&&) = default;

  ErrorClassification& operator=(const ErrorClassification&) = default;
 private:
  ::apache::thrift::ErrorKind __fbthrift_field_kind;
 private:
  ::apache::thrift::ErrorBlame __fbthrift_field_blame;
 private:
  ::apache::thrift::ErrorSafety __fbthrift_field_safety;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ErrorClassification&) const;
  bool operator<(const ErrorClassification&) const;

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> kind_ref() const& {
    return {this->__fbthrift_field_kind, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> kind_ref() & {
    return {this->__fbthrift_field_kind, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> kind_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_kind), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> kind() const& {
    return {this->__fbthrift_field_kind, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> kind() & {
    return {this->__fbthrift_field_kind, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "kind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> kind() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_kind), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> blame_ref() const& {
    return {this->__fbthrift_field_blame, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> blame_ref() & {
    return {this->__fbthrift_field_blame, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> blame_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_blame), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> blame() const& {
    return {this->__fbthrift_field_blame, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> blame() & {
    return {this->__fbthrift_field_blame, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "blame" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorBlame>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> blame() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_blame), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> safety_ref() const& {
    return {this->__fbthrift_field_safety, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> safety_ref() & {
    return {this->__fbthrift_field_safety, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> safety_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_safety), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> safety() const& {
    return {this->__fbthrift_field_safety, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> safety() & {
    return {this->__fbthrift_field_safety, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "safety" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorSafety>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> safety() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_safety), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind().value()` instead of `FOO.get_kind()`")]]
  const ::apache::thrift::ErrorKind* get_kind() const&;

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind().value()` instead of `FOO.get_kind()`")]]
  ::apache::thrift::ErrorKind* get_kind() &;

  ::apache::thrift::ErrorKind* get_kind() && = delete;

  /** Glean { "field": "kind" } */
  [[deprecated("Use `FOO.kind() = BAR` instead of `FOO.set_kind(BAR)`")]]
  ::apache::thrift::ErrorKind& set_kind(::apache::thrift::ErrorKind kind_);

  /** Glean { "field": "blame" } */
  [[deprecated("Use `FOO.blame().value()` instead of `FOO.get_blame()`")]]
  const ::apache::thrift::ErrorBlame* get_blame() const&;

  /** Glean { "field": "blame" } */
  [[deprecated("Use `FOO.blame().value()` instead of `FOO.get_blame()`")]]
  ::apache::thrift::ErrorBlame* get_blame() &;

  ::apache::thrift::ErrorBlame* get_blame() && = delete;

  /** Glean { "field": "blame" } */
  [[deprecated("Use `FOO.blame() = BAR` instead of `FOO.set_blame(BAR)`")]]
  ::apache::thrift::ErrorBlame& set_blame(::apache::thrift::ErrorBlame blame_);

  /** Glean { "field": "safety" } */
  [[deprecated("Use `FOO.safety().value()` instead of `FOO.get_safety()`")]]
  const ::apache::thrift::ErrorSafety* get_safety() const&;

  /** Glean { "field": "safety" } */
  [[deprecated("Use `FOO.safety().value()` instead of `FOO.get_safety()`")]]
  ::apache::thrift::ErrorSafety* get_safety() &;

  ::apache::thrift::ErrorSafety* get_safety() && = delete;

  /** Glean { "field": "safety" } */
  [[deprecated("Use `FOO.safety() = BAR` instead of `FOO.set_safety(BAR)`")]]
  ::apache::thrift::ErrorSafety& set_safety(::apache::thrift::ErrorSafety safety_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ErrorClassification>;
  friend void swap(ErrorClassification& a, ErrorClassification& b);
};

template <class Protocol_>
unsigned long ErrorClassification::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadResponseMetadata", "kind": "struct" } */
class PayloadResponseMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadResponseMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadResponseMetadata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadResponseMetadata(apache::thrift::FragileConstructor);

  PayloadResponseMetadata(PayloadResponseMetadata&&) = default;

  PayloadResponseMetadata(const PayloadResponseMetadata&) = default;


  PayloadResponseMetadata& operator=(PayloadResponseMetadata&&) = default;

  PayloadResponseMetadata& operator=(const PayloadResponseMetadata&) = default;

 public:

  bool operator==(const PayloadResponseMetadata&) const;
  bool operator<(const PayloadResponseMetadata&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadResponseMetadata>;
  friend void swap(PayloadResponseMetadata& a, PayloadResponseMetadata& b);
};

template <class Protocol_>
unsigned long PayloadResponseMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadDeclaredExceptionMetadata", "kind": "struct" } */
class PayloadDeclaredExceptionMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::errorClassification
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::ErrorClassification>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadDeclaredExceptionMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadDeclaredExceptionMetadata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadDeclaredExceptionMetadata(apache::thrift::FragileConstructor, ::apache::thrift::ErrorClassification errorClassification__arg);

  PayloadDeclaredExceptionMetadata(PayloadDeclaredExceptionMetadata&&) = default;

  PayloadDeclaredExceptionMetadata(const PayloadDeclaredExceptionMetadata&) = default;


  PayloadDeclaredExceptionMetadata& operator=(PayloadDeclaredExceptionMetadata&&) = default;

  PayloadDeclaredExceptionMetadata& operator=(const PayloadDeclaredExceptionMetadata&) = default;
 private:
  ::apache::thrift::ErrorClassification __fbthrift_field_errorClassification;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const PayloadDeclaredExceptionMetadata&) const;
  bool operator<(const PayloadDeclaredExceptionMetadata&) const;

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> errorClassification_ref() const& {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> errorClassification_ref() & {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> errorClassification_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_errorClassification), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> errorClassification() const& {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> errorClassification() & {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> errorClassification() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_errorClassification), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  [[deprecated("Use `FOO.errorClassification().value()` instead of `FOO.get_errorClassification()`")]]
  const ::apache::thrift::ErrorClassification* get_errorClassification() const&;

  /** Glean { "field": "errorClassification" } */
  [[deprecated("Use `FOO.errorClassification().value()` instead of `FOO.get_errorClassification()`")]]
  ::apache::thrift::ErrorClassification* get_errorClassification() &;

  ::apache::thrift::ErrorClassification* get_errorClassification() && = delete;

  /** Glean { "field": "errorClassification" } */
  template <typename T_PayloadDeclaredExceptionMetadata_errorClassification_struct_setter = ::apache::thrift::ErrorClassification>
  [[deprecated("Use `FOO.errorClassification() = BAR` instead of `FOO.set_errorClassification(BAR)`")]]
  ::apache::thrift::ErrorClassification& set_errorClassification(T_PayloadDeclaredExceptionMetadata_errorClassification_struct_setter&& errorClassification_) {
    errorClassification_ref() = std::forward<T_PayloadDeclaredExceptionMetadata_errorClassification_struct_setter>(errorClassification_);
    return __fbthrift_field_errorClassification;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadDeclaredExceptionMetadata>;
  friend void swap(PayloadDeclaredExceptionMetadata& a, PayloadDeclaredExceptionMetadata& b);
};

template <class Protocol_>
unsigned long PayloadDeclaredExceptionMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadProxyExceptionMetadata", "kind": "struct" } */
class PayloadProxyExceptionMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadProxyExceptionMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadProxyExceptionMetadata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadProxyExceptionMetadata(apache::thrift::FragileConstructor);

  PayloadProxyExceptionMetadata(PayloadProxyExceptionMetadata&&) = default;

  PayloadProxyExceptionMetadata(const PayloadProxyExceptionMetadata&) = default;


  PayloadProxyExceptionMetadata& operator=(PayloadProxyExceptionMetadata&&) = default;

  PayloadProxyExceptionMetadata& operator=(const PayloadProxyExceptionMetadata&) = default;

 public:

  bool operator==(const PayloadProxyExceptionMetadata&) const;
  bool operator<(const PayloadProxyExceptionMetadata&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadProxyExceptionMetadata>;
  friend void swap(PayloadProxyExceptionMetadata& a, PayloadProxyExceptionMetadata& b);
};

template <class Protocol_>
unsigned long PayloadProxyExceptionMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadAppUnknownExceptionMetdata", "kind": "struct" } */
class PayloadAppUnknownExceptionMetdata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::errorClassification
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::ErrorClassification>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadAppUnknownExceptionMetdata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadAppUnknownExceptionMetdata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadAppUnknownExceptionMetdata(apache::thrift::FragileConstructor, ::apache::thrift::ErrorClassification errorClassification__arg);

  PayloadAppUnknownExceptionMetdata(PayloadAppUnknownExceptionMetdata&&) = default;

  PayloadAppUnknownExceptionMetdata(const PayloadAppUnknownExceptionMetdata&) = default;


  PayloadAppUnknownExceptionMetdata& operator=(PayloadAppUnknownExceptionMetdata&&) = default;

  PayloadAppUnknownExceptionMetdata& operator=(const PayloadAppUnknownExceptionMetdata&) = default;
 private:
  ::apache::thrift::ErrorClassification __fbthrift_field_errorClassification;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const PayloadAppUnknownExceptionMetdata&) const;
  bool operator<(const PayloadAppUnknownExceptionMetdata&) const;

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> errorClassification_ref() const& {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> errorClassification_ref() & {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> errorClassification_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_errorClassification), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> errorClassification() const& {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> errorClassification() & {
    return {this->__fbthrift_field_errorClassification, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ErrorClassification>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> errorClassification() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_errorClassification), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "errorClassification" } */
  [[deprecated("Use `FOO.errorClassification().value()` instead of `FOO.get_errorClassification()`")]]
  const ::apache::thrift::ErrorClassification* get_errorClassification() const&;

  /** Glean { "field": "errorClassification" } */
  [[deprecated("Use `FOO.errorClassification().value()` instead of `FOO.get_errorClassification()`")]]
  ::apache::thrift::ErrorClassification* get_errorClassification() &;

  ::apache::thrift::ErrorClassification* get_errorClassification() && = delete;

  /** Glean { "field": "errorClassification" } */
  template <typename T_PayloadAppUnknownExceptionMetdata_errorClassification_struct_setter = ::apache::thrift::ErrorClassification>
  [[deprecated("Use `FOO.errorClassification() = BAR` instead of `FOO.set_errorClassification(BAR)`")]]
  ::apache::thrift::ErrorClassification& set_errorClassification(T_PayloadAppUnknownExceptionMetdata_errorClassification_struct_setter&& errorClassification_) {
    errorClassification_ref() = std::forward<T_PayloadAppUnknownExceptionMetdata_errorClassification_struct_setter>(errorClassification_);
    return __fbthrift_field_errorClassification;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadAppUnknownExceptionMetdata>;
  friend void swap(PayloadAppUnknownExceptionMetdata& a, PayloadAppUnknownExceptionMetdata& b);
};

template <class Protocol_>
unsigned long PayloadAppUnknownExceptionMetdata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadAnyExceptionMetadata", "kind": "struct" } */
class PayloadAnyExceptionMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadAnyExceptionMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadAnyExceptionMetadata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadAnyExceptionMetadata(apache::thrift::FragileConstructor);

  PayloadAnyExceptionMetadata(PayloadAnyExceptionMetadata&&) = default;

  PayloadAnyExceptionMetadata(const PayloadAnyExceptionMetadata&) = default;


  PayloadAnyExceptionMetadata& operator=(PayloadAnyExceptionMetadata&&) = default;

  PayloadAnyExceptionMetadata& operator=(const PayloadAnyExceptionMetadata&) = default;

 public:

  bool operator==(const PayloadAnyExceptionMetadata&) const;
  bool operator<(const PayloadAnyExceptionMetadata&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadAnyExceptionMetadata>;
  friend void swap(PayloadAnyExceptionMetadata& a, PayloadAnyExceptionMetadata& b);
};

template <class Protocol_>
unsigned long PayloadAnyExceptionMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadExceptionMetadata", "kind": "union" } */
class PayloadExceptionMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 4;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,6,7};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::declaredException,
    ::apache::thrift::ident::DEPRECATED_proxyException,
    ::apache::thrift::ident::appUnknownException,
    ::apache::thrift::ident::anyException
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadDeclaredExceptionMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadProxyExceptionMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadAppUnknownExceptionMetdata>,
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadAnyExceptionMetadata>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadExceptionMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    declaredException = 1,
    DEPRECATED_proxyException = 2,
    appUnknownException = 6,
    anyException = 7,
  } ;

  PayloadExceptionMetadata()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  PayloadExceptionMetadata(PayloadExceptionMetadata&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::declaredException:
      {
        set_declaredException(std::move(rhs.value_.declaredException));
        break;
      }
      case Type::DEPRECATED_proxyException:
      {
        set_DEPRECATED_proxyException(std::move(rhs.value_.DEPRECATED_proxyException));
        break;
      }
      case Type::appUnknownException:
      {
        set_appUnknownException(std::move(rhs.value_.appUnknownException));
        break;
      }
      case Type::anyException:
      {
        set_anyException(std::move(rhs.value_.anyException));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  PayloadExceptionMetadata(const PayloadExceptionMetadata& rhs);

  PayloadExceptionMetadata& operator=(PayloadExceptionMetadata&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::declaredException:
      {
        set_declaredException(std::move(rhs.value_.declaredException));
        break;
      }
      case Type::DEPRECATED_proxyException:
      {
        set_DEPRECATED_proxyException(std::move(rhs.value_.DEPRECATED_proxyException));
        break;
      }
      case Type::appUnknownException:
      {
        set_appUnknownException(std::move(rhs.value_.appUnknownException));
        break;
      }
      case Type::anyException:
      {
        set_anyException(std::move(rhs.value_.anyException));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  PayloadExceptionMetadata& operator=(const PayloadExceptionMetadata& rhs);

  ~PayloadExceptionMetadata();

  union storage_type {
    ::apache::thrift::PayloadDeclaredExceptionMetadata declaredException;
    ::apache::thrift::PayloadProxyExceptionMetadata DEPRECATED_proxyException;
    ::apache::thrift::PayloadAppUnknownExceptionMetdata appUnknownException;
    ::apache::thrift::PayloadAnyExceptionMetadata anyException;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const PayloadExceptionMetadata&) const;
  bool operator<(const PayloadExceptionMetadata&) const;

  /** Glean { "field": "declaredException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadDeclaredExceptionMetadata& set_declaredException(::apache::thrift::PayloadDeclaredExceptionMetadata const &t) {
    using T0 = ::apache::thrift::PayloadDeclaredExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::declaredException);
    ::new (std::addressof(value_.declaredException)) T(t);
    return value_.declaredException;
  }

  /** Glean { "field": "declaredException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadDeclaredExceptionMetadata& set_declaredException(::apache::thrift::PayloadDeclaredExceptionMetadata&& t) {
    using T0 = ::apache::thrift::PayloadDeclaredExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::declaredException);
    ::new (std::addressof(value_.declaredException)) T(std::move(t));
    return value_.declaredException;
  }

  /** Glean { "field": "declaredException" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadDeclaredExceptionMetadata, T...>> ::apache::thrift::PayloadDeclaredExceptionMetadata& set_declaredException(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::declaredException);
    ::new (std::addressof(value_.declaredException)) ::apache::thrift::PayloadDeclaredExceptionMetadata(std::forward<T>(t)...);
    return value_.declaredException;
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadProxyExceptionMetadata& set_DEPRECATED_proxyException(::apache::thrift::PayloadProxyExceptionMetadata const &t) {
    using T0 = ::apache::thrift::PayloadProxyExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::DEPRECATED_proxyException);
    ::new (std::addressof(value_.DEPRECATED_proxyException)) T(t);
    return value_.DEPRECATED_proxyException;
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadProxyExceptionMetadata& set_DEPRECATED_proxyException(::apache::thrift::PayloadProxyExceptionMetadata&& t) {
    using T0 = ::apache::thrift::PayloadProxyExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::DEPRECATED_proxyException);
    ::new (std::addressof(value_.DEPRECATED_proxyException)) T(std::move(t));
    return value_.DEPRECATED_proxyException;
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadProxyExceptionMetadata, T...>> ::apache::thrift::PayloadProxyExceptionMetadata& set_DEPRECATED_proxyException(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::DEPRECATED_proxyException);
    ::new (std::addressof(value_.DEPRECATED_proxyException)) ::apache::thrift::PayloadProxyExceptionMetadata(std::forward<T>(t)...);
    return value_.DEPRECATED_proxyException;
  }

  /** Glean { "field": "appUnknownException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadAppUnknownExceptionMetdata& set_appUnknownException(::apache::thrift::PayloadAppUnknownExceptionMetdata const &t) {
    using T0 = ::apache::thrift::PayloadAppUnknownExceptionMetdata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::appUnknownException);
    ::new (std::addressof(value_.appUnknownException)) T(t);
    return value_.appUnknownException;
  }

  /** Glean { "field": "appUnknownException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadAppUnknownExceptionMetdata& set_appUnknownException(::apache::thrift::PayloadAppUnknownExceptionMetdata&& t) {
    using T0 = ::apache::thrift::PayloadAppUnknownExceptionMetdata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::appUnknownException);
    ::new (std::addressof(value_.appUnknownException)) T(std::move(t));
    return value_.appUnknownException;
  }

  /** Glean { "field": "appUnknownException" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadAppUnknownExceptionMetdata, T...>> ::apache::thrift::PayloadAppUnknownExceptionMetdata& set_appUnknownException(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::appUnknownException);
    ::new (std::addressof(value_.appUnknownException)) ::apache::thrift::PayloadAppUnknownExceptionMetdata(std::forward<T>(t)...);
    return value_.appUnknownException;
  }

  /** Glean { "field": "anyException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadAnyExceptionMetadata& set_anyException(::apache::thrift::PayloadAnyExceptionMetadata const &t) {
    using T0 = ::apache::thrift::PayloadAnyExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyException);
    ::new (std::addressof(value_.anyException)) T(t);
    return value_.anyException;
  }

  /** Glean { "field": "anyException" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadAnyExceptionMetadata& set_anyException(::apache::thrift::PayloadAnyExceptionMetadata&& t) {
    using T0 = ::apache::thrift::PayloadAnyExceptionMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyException);
    ::new (std::addressof(value_.anyException)) T(std::move(t));
    return value_.anyException;
  }

  /** Glean { "field": "anyException" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadAnyExceptionMetadata, T...>> ::apache::thrift::PayloadAnyExceptionMetadata& set_anyException(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::anyException);
    ::new (std::addressof(value_.anyException)) ::apache::thrift::PayloadAnyExceptionMetadata(std::forward<T>(t)...);
    return value_.anyException;
  }

  /** Glean { "field": "declaredException" } */
  ::apache::thrift::PayloadDeclaredExceptionMetadata const& get_declaredException() const {
    if (getType() != Type::declaredException) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.declaredException;
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  ::apache::thrift::PayloadProxyExceptionMetadata const& get_DEPRECATED_proxyException() const {
    if (getType() != Type::DEPRECATED_proxyException) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.DEPRECATED_proxyException;
  }

  /** Glean { "field": "appUnknownException" } */
  ::apache::thrift::PayloadAppUnknownExceptionMetdata const& get_appUnknownException() const {
    if (getType() != Type::appUnknownException) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.appUnknownException;
  }

  /** Glean { "field": "anyException" } */
  ::apache::thrift::PayloadAnyExceptionMetadata const& get_anyException() const {
    if (getType() != Type::anyException) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.anyException;
  }

  ::apache::thrift::PayloadDeclaredExceptionMetadata& mutable_declaredException() {
    assert(getType() == Type::declaredException);
    return value_.declaredException;
  }

  ::apache::thrift::PayloadProxyExceptionMetadata& mutable_DEPRECATED_proxyException() {
    assert(getType() == Type::DEPRECATED_proxyException);
    return value_.DEPRECATED_proxyException;
  }

  ::apache::thrift::PayloadAppUnknownExceptionMetdata& mutable_appUnknownException() {
    assert(getType() == Type::appUnknownException);
    return value_.appUnknownException;
  }

  ::apache::thrift::PayloadAnyExceptionMetadata& mutable_anyException() {
    assert(getType() == Type::anyException);
    return value_.anyException;
  }

  template <typename..., typename T = ::apache::thrift::PayloadDeclaredExceptionMetadata>
  T move_declaredException() {
    assert(getType() == Type::declaredException);
    return std::move(value_.declaredException);
  }

  template <typename..., typename T = ::apache::thrift::PayloadProxyExceptionMetadata>
  T move_DEPRECATED_proxyException() {
    assert(getType() == Type::DEPRECATED_proxyException);
    return std::move(value_.DEPRECATED_proxyException);
  }

  template <typename..., typename T = ::apache::thrift::PayloadAppUnknownExceptionMetdata>
  T move_appUnknownException() {
    assert(getType() == Type::appUnknownException);
    return std::move(value_.appUnknownException);
  }

  template <typename..., typename T = ::apache::thrift::PayloadAnyExceptionMetadata>
  T move_anyException() {
    assert(getType() == Type::anyException);
    return std::move(value_.anyException);
  }

  /** Glean { "field": "declaredException" } */
  template <typename..., typename T = ::apache::thrift::PayloadDeclaredExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> declaredException_ref() const& {
    return {value_.declaredException, fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "declaredException" } */
  template <typename..., typename T = ::apache::thrift::PayloadDeclaredExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> declaredException_ref() & {
    return {value_.declaredException, fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "declaredException" } */
  template <typename..., typename T = ::apache::thrift::PayloadDeclaredExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> declaredException_ref() && {
    return {std::move(value_.declaredException), fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "declaredException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadDeclaredExceptionMetadata&> declaredException() const& {
    return {value_.declaredException, fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "declaredException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadDeclaredExceptionMetadata&> declaredException() & {
    return {value_.declaredException, fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "declaredException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadDeclaredExceptionMetadata&&> declaredException() && {
    return {std::move(value_.declaredException), fbthrift_type_, folly::to_underlying(Type::declaredException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "DEPRECATED_proxyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadProxyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> DEPRECATED_proxyException_ref() const& {
    return {value_.DEPRECATED_proxyException, fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadProxyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> DEPRECATED_proxyException_ref() & {
    return {value_.DEPRECATED_proxyException, fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadProxyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> DEPRECATED_proxyException_ref() && {
    return {std::move(value_.DEPRECATED_proxyException), fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadProxyExceptionMetadata&> DEPRECATED_proxyException() const& {
    return {value_.DEPRECATED_proxyException, fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadProxyExceptionMetadata&> DEPRECATED_proxyException() & {
    return {value_.DEPRECATED_proxyException, fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "DEPRECATED_proxyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadProxyExceptionMetadata&&> DEPRECATED_proxyException() && {
    return {std::move(value_.DEPRECATED_proxyException), fbthrift_type_, folly::to_underlying(Type::DEPRECATED_proxyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "appUnknownException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAppUnknownExceptionMetdata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> appUnknownException_ref() const& {
    return {value_.appUnknownException, fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "appUnknownException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAppUnknownExceptionMetdata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> appUnknownException_ref() & {
    return {value_.appUnknownException, fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "appUnknownException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAppUnknownExceptionMetdata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> appUnknownException_ref() && {
    return {std::move(value_.appUnknownException), fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "appUnknownException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadAppUnknownExceptionMetdata&> appUnknownException() const& {
    return {value_.appUnknownException, fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "appUnknownException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadAppUnknownExceptionMetdata&> appUnknownException() & {
    return {value_.appUnknownException, fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "appUnknownException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadAppUnknownExceptionMetdata&&> appUnknownException() && {
    return {std::move(value_.appUnknownException), fbthrift_type_, folly::to_underlying(Type::appUnknownException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "anyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAnyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> anyException_ref() const& {
    return {value_.anyException, fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAnyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> anyException_ref() & {
    return {value_.anyException, fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyException" } */
  template <typename..., typename T = ::apache::thrift::PayloadAnyExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> anyException_ref() && {
    return {std::move(value_.anyException), fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadAnyExceptionMetadata&> anyException() const& {
    return {value_.anyException, fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadAnyExceptionMetadata&> anyException() & {
    return {value_.anyException, fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "anyException" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadAnyExceptionMetadata&&> anyException() && {
    return {std::move(value_.anyException), fbthrift_type_, folly::to_underlying(Type::anyException), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadExceptionMetadata>;
  friend void swap(PayloadExceptionMetadata& a, PayloadExceptionMetadata& b);
};

template <class Protocol_>
unsigned long PayloadExceptionMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadExceptionMetadataBase", "kind": "struct" } */
class PayloadExceptionMetadataBase final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name_utf8,
    ::apache::thrift::ident::what_utf8,
    ::apache::thrift::ident::metadata
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::union_t<::apache::thrift::PayloadExceptionMetadata>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadExceptionMetadataBase;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  PayloadExceptionMetadataBase();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  PayloadExceptionMetadataBase(apache::thrift::FragileConstructor, ::std::string name_utf8__arg, ::std::string what_utf8__arg, ::apache::thrift::PayloadExceptionMetadata metadata__arg);

  PayloadExceptionMetadataBase(PayloadExceptionMetadataBase&&) noexcept;

  PayloadExceptionMetadataBase(const PayloadExceptionMetadataBase& src);


  PayloadExceptionMetadataBase& operator=(PayloadExceptionMetadataBase&&) noexcept;
  PayloadExceptionMetadataBase& operator=(const PayloadExceptionMetadataBase& src);

  ~PayloadExceptionMetadataBase();

 private:
  ::std::string __fbthrift_field_name_utf8;
 private:
  ::std::string __fbthrift_field_what_utf8;
 private:
  ::apache::thrift::PayloadExceptionMetadata __fbthrift_field_metadata;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const PayloadExceptionMetadataBase&) const;
  bool operator<(const PayloadExceptionMetadataBase&) const;

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8_ref() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8_ref() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8_ref() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8_ref() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> metadata_ref() const& {
    return {this->__fbthrift_field_metadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> metadata_ref() & {
    return {this->__fbthrift_field_metadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> metadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_metadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> metadata() const& {
    return {this->__fbthrift_field_metadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> metadata() & {
    return {this->__fbthrift_field_metadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "metadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadExceptionMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> metadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_metadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  const ::std::string* get_name_utf8() const&;

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  ::std::string* get_name_utf8() &;

  ::std::string* get_name_utf8() && = delete;

  /** Glean { "field": "name_utf8" } */
  template <typename T_PayloadExceptionMetadataBase_name_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name_utf8() = BAR` instead of `FOO.set_name_utf8(BAR)`")]]
  ::std::string& set_name_utf8(T_PayloadExceptionMetadataBase_name_utf8_struct_setter&& name_utf8_) {
    name_utf8_ref() = std::forward<T_PayloadExceptionMetadataBase_name_utf8_struct_setter>(name_utf8_);
    return __fbthrift_field_name_utf8;
  }

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  const ::std::string* get_what_utf8() const&;

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  ::std::string* get_what_utf8() &;

  ::std::string* get_what_utf8() && = delete;

  /** Glean { "field": "what_utf8" } */
  template <typename T_PayloadExceptionMetadataBase_what_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.what_utf8() = BAR` instead of `FOO.set_what_utf8(BAR)`")]]
  ::std::string& set_what_utf8(T_PayloadExceptionMetadataBase_what_utf8_struct_setter&& what_utf8_) {
    what_utf8_ref() = std::forward<T_PayloadExceptionMetadataBase_what_utf8_struct_setter>(what_utf8_);
    return __fbthrift_field_what_utf8;
  }

  /** Glean { "field": "metadata" } */
  [[deprecated("Use `FOO.metadata().value()` instead of `FOO.get_metadata()`")]]
  const ::apache::thrift::PayloadExceptionMetadata* get_metadata() const&;

  /** Glean { "field": "metadata" } */
  [[deprecated("Use `FOO.metadata().value()` instead of `FOO.get_metadata()`")]]
  ::apache::thrift::PayloadExceptionMetadata* get_metadata() &;

  ::apache::thrift::PayloadExceptionMetadata* get_metadata() && = delete;

  /** Glean { "field": "metadata" } */
  template <typename T_PayloadExceptionMetadataBase_metadata_struct_setter = ::apache::thrift::PayloadExceptionMetadata>
  [[deprecated("Use `FOO.metadata() = BAR` instead of `FOO.set_metadata(BAR)`")]]
  ::apache::thrift::PayloadExceptionMetadata& set_metadata(T_PayloadExceptionMetadataBase_metadata_struct_setter&& metadata_) {
    metadata_ref() = std::forward<T_PayloadExceptionMetadataBase_metadata_struct_setter>(metadata_);
    return __fbthrift_field_metadata;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadExceptionMetadataBase>;
  friend void swap(PayloadExceptionMetadataBase& a, PayloadExceptionMetadataBase& b);
};

template <class Protocol_>
unsigned long PayloadExceptionMetadataBase::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "PayloadMetadata", "kind": "union" } */
class PayloadMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::responseMetadata,
    ::apache::thrift::ident::exceptionMetadata
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadResponseMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::PayloadExceptionMetadataBase>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = PayloadMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    responseMetadata = 1,
    exceptionMetadata = 2,
  } ;

  PayloadMetadata()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  PayloadMetadata(PayloadMetadata&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::responseMetadata:
      {
        set_responseMetadata(std::move(rhs.value_.responseMetadata));
        break;
      }
      case Type::exceptionMetadata:
      {
        set_exceptionMetadata(std::move(rhs.value_.exceptionMetadata));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  PayloadMetadata(const PayloadMetadata& rhs);

  PayloadMetadata& operator=(PayloadMetadata&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::responseMetadata:
      {
        set_responseMetadata(std::move(rhs.value_.responseMetadata));
        break;
      }
      case Type::exceptionMetadata:
      {
        set_exceptionMetadata(std::move(rhs.value_.exceptionMetadata));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  PayloadMetadata& operator=(const PayloadMetadata& rhs);

  ~PayloadMetadata();

  union storage_type {
    ::apache::thrift::PayloadResponseMetadata responseMetadata;
    ::apache::thrift::PayloadExceptionMetadataBase exceptionMetadata;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const PayloadMetadata&) const;
  bool operator<(const PayloadMetadata&) const;

  /** Glean { "field": "responseMetadata" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadResponseMetadata& set_responseMetadata(::apache::thrift::PayloadResponseMetadata const &t) {
    using T0 = ::apache::thrift::PayloadResponseMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::responseMetadata);
    ::new (std::addressof(value_.responseMetadata)) T(t);
    return value_.responseMetadata;
  }

  /** Glean { "field": "responseMetadata" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadResponseMetadata& set_responseMetadata(::apache::thrift::PayloadResponseMetadata&& t) {
    using T0 = ::apache::thrift::PayloadResponseMetadata;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::responseMetadata);
    ::new (std::addressof(value_.responseMetadata)) T(std::move(t));
    return value_.responseMetadata;
  }

  /** Glean { "field": "responseMetadata" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadResponseMetadata, T...>> ::apache::thrift::PayloadResponseMetadata& set_responseMetadata(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::responseMetadata);
    ::new (std::addressof(value_.responseMetadata)) ::apache::thrift::PayloadResponseMetadata(std::forward<T>(t)...);
    return value_.responseMetadata;
  }

  /** Glean { "field": "exceptionMetadata" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadExceptionMetadataBase& set_exceptionMetadata(::apache::thrift::PayloadExceptionMetadataBase const &t) {
    using T0 = ::apache::thrift::PayloadExceptionMetadataBase;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::exceptionMetadata);
    ::new (std::addressof(value_.exceptionMetadata)) T(t);
    return value_.exceptionMetadata;
  }

  /** Glean { "field": "exceptionMetadata" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::PayloadExceptionMetadataBase& set_exceptionMetadata(::apache::thrift::PayloadExceptionMetadataBase&& t) {
    using T0 = ::apache::thrift::PayloadExceptionMetadataBase;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::exceptionMetadata);
    ::new (std::addressof(value_.exceptionMetadata)) T(std::move(t));
    return value_.exceptionMetadata;
  }

  /** Glean { "field": "exceptionMetadata" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::PayloadExceptionMetadataBase, T...>> ::apache::thrift::PayloadExceptionMetadataBase& set_exceptionMetadata(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::exceptionMetadata);
    ::new (std::addressof(value_.exceptionMetadata)) ::apache::thrift::PayloadExceptionMetadataBase(std::forward<T>(t)...);
    return value_.exceptionMetadata;
  }

  /** Glean { "field": "responseMetadata" } */
  ::apache::thrift::PayloadResponseMetadata const& get_responseMetadata() const {
    if (getType() != Type::responseMetadata) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.responseMetadata;
  }

  /** Glean { "field": "exceptionMetadata" } */
  ::apache::thrift::PayloadExceptionMetadataBase const& get_exceptionMetadata() const {
    if (getType() != Type::exceptionMetadata) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.exceptionMetadata;
  }

  ::apache::thrift::PayloadResponseMetadata& mutable_responseMetadata() {
    assert(getType() == Type::responseMetadata);
    return value_.responseMetadata;
  }

  ::apache::thrift::PayloadExceptionMetadataBase& mutable_exceptionMetadata() {
    assert(getType() == Type::exceptionMetadata);
    return value_.exceptionMetadata;
  }

  template <typename..., typename T = ::apache::thrift::PayloadResponseMetadata>
  T move_responseMetadata() {
    assert(getType() == Type::responseMetadata);
    return std::move(value_.responseMetadata);
  }

  template <typename..., typename T = ::apache::thrift::PayloadExceptionMetadataBase>
  T move_exceptionMetadata() {
    assert(getType() == Type::exceptionMetadata);
    return std::move(value_.exceptionMetadata);
  }

  /** Glean { "field": "responseMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadResponseMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> responseMetadata_ref() const& {
    return {value_.responseMetadata, fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "responseMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadResponseMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> responseMetadata_ref() & {
    return {value_.responseMetadata, fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "responseMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadResponseMetadata>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> responseMetadata_ref() && {
    return {std::move(value_.responseMetadata), fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "responseMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadResponseMetadata&> responseMetadata() const& {
    return {value_.responseMetadata, fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "responseMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadResponseMetadata&> responseMetadata() & {
    return {value_.responseMetadata, fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "responseMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadResponseMetadata&&> responseMetadata() && {
    return {std::move(value_.responseMetadata), fbthrift_type_, folly::to_underlying(Type::responseMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "exceptionMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadExceptionMetadataBase>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> exceptionMetadata_ref() const& {
    return {value_.exceptionMetadata, fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "exceptionMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadExceptionMetadataBase>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> exceptionMetadata_ref() & {
    return {value_.exceptionMetadata, fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "exceptionMetadata" } */
  template <typename..., typename T = ::apache::thrift::PayloadExceptionMetadataBase>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> exceptionMetadata_ref() && {
    return {std::move(value_.exceptionMetadata), fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "exceptionMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::PayloadExceptionMetadataBase&> exceptionMetadata() const& {
    return {value_.exceptionMetadata, fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "exceptionMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadExceptionMetadataBase&> exceptionMetadata() & {
    return {value_.exceptionMetadata, fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "exceptionMetadata" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::PayloadExceptionMetadataBase&&> exceptionMetadata() && {
    return {std::move(value_.exceptionMetadata), fbthrift_type_, folly::to_underlying(Type::exceptionMetadata), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<PayloadMetadata>;
  friend void swap(PayloadMetadata& a, PayloadMetadata& b);
};

template <class Protocol_>
unsigned long PayloadMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ProxiedPayloadMetadata", "kind": "struct" } */
class ProxiedPayloadMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 0;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0};

  using __fbthrift_reflection_idents = folly::tag_t<
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ProxiedPayloadMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ProxiedPayloadMetadata() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ProxiedPayloadMetadata(apache::thrift::FragileConstructor);

  ProxiedPayloadMetadata(ProxiedPayloadMetadata&&) = default;

  ProxiedPayloadMetadata(const ProxiedPayloadMetadata&) = default;


  ProxiedPayloadMetadata& operator=(ProxiedPayloadMetadata&&) = default;

  ProxiedPayloadMetadata& operator=(const ProxiedPayloadMetadata&) = default;

 public:

  bool operator==(const ProxiedPayloadMetadata&) const;
  bool operator<(const ProxiedPayloadMetadata&) const;

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ProxiedPayloadMetadata>;
  friend void swap(ProxiedPayloadMetadata& a, ProxiedPayloadMetadata& b);
};

template <class Protocol_>
unsigned long ProxiedPayloadMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "QueueMetadata", "kind": "struct" } */
class QueueMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::queueingTimeMs,
    ::apache::thrift::ident::queueTimeoutMs
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = QueueMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  QueueMetadata() :
      __fbthrift_field_queueingTimeMs(),
      __fbthrift_field_queueTimeoutMs() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  QueueMetadata(apache::thrift::FragileConstructor, ::std::int32_t queueingTimeMs__arg, ::std::int32_t queueTimeoutMs__arg);

  QueueMetadata(QueueMetadata&&) = default;

  QueueMetadata(const QueueMetadata&) = default;


  QueueMetadata& operator=(QueueMetadata&&) = default;

  QueueMetadata& operator=(const QueueMetadata&) = default;
 private:
  ::std::int32_t __fbthrift_field_queueingTimeMs;
 private:
  ::std::int32_t __fbthrift_field_queueTimeoutMs;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const QueueMetadata&) const;
  bool operator<(const QueueMetadata&) const;

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> queueingTimeMs_ref() const& {
    return {this->__fbthrift_field_queueingTimeMs, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> queueingTimeMs_ref() & {
    return {this->__fbthrift_field_queueingTimeMs, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> queueingTimeMs_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueingTimeMs), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> queueingTimeMs() const& {
    return {this->__fbthrift_field_queueingTimeMs, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> queueingTimeMs() & {
    return {this->__fbthrift_field_queueingTimeMs, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> queueingTimeMs() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueingTimeMs), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueTimeoutMs_ref() const& {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueTimeoutMs_ref() & {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueTimeoutMs_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueTimeoutMs), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueTimeoutMs() const& {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueTimeoutMs() & {
    return {this->__fbthrift_field_queueTimeoutMs, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueTimeoutMs() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueTimeoutMs), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "queueingTimeMs" } */
  [[deprecated("Use `FOO.queueingTimeMs().value()` instead of `FOO.get_queueingTimeMs()`")]]
  ::std::int32_t get_queueingTimeMs() const;

  /** Glean { "field": "queueingTimeMs" } */
  [[deprecated("Use `FOO.queueingTimeMs() = BAR` instead of `FOO.set_queueingTimeMs(BAR)`")]]
  ::std::int32_t& set_queueingTimeMs(::std::int32_t queueingTimeMs_);

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs().value()` instead of `FOO.get_queueTimeoutMs()`")]]
  const ::std::int32_t* get_queueTimeoutMs() const&;

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs().value()` instead of `FOO.get_queueTimeoutMs()`")]]
  ::std::int32_t* get_queueTimeoutMs() &;

  ::std::int32_t* get_queueTimeoutMs() && = delete;

  /** Glean { "field": "queueTimeoutMs" } */
  [[deprecated("Use `FOO.queueTimeoutMs() = BAR` instead of `FOO.set_queueTimeoutMs(BAR)`")]]
  ::std::int32_t& set_queueTimeoutMs(::std::int32_t queueTimeoutMs_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<QueueMetadata>;
  friend void swap(QueueMetadata& a, QueueMetadata& b);
};

template <class Protocol_>
unsigned long QueueMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ResponseRpcMetadata", "kind": "struct" } */
class ResponseRpcMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 12;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,3,4,5,6,7,8,9,10,12,13,14,15};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::otherMetadata,
    ::apache::thrift::ident::load,
    ::apache::thrift::ident::crc32c,
    ::apache::thrift::ident::compression,
    ::apache::thrift::ident::payloadMetadata,
    ::apache::thrift::ident::proxiedPayloadMetadata,
    ::apache::thrift::ident::streamId,
    ::apache::thrift::ident::queueMetadata,
    ::apache::thrift::ident::fdMetadata,
    ::apache::thrift::ident::frameworkMetadata,
    ::apache::thrift::ident::checksum,
    ::apache::thrift::ident::secondaryLoad
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::std::string>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>,
    ::apache::thrift::type::i64_t,
    ::apache::thrift::type::cpp_type<std::uint32_t, ::apache::thrift::type::i32_t>,
    ::apache::thrift::type::enum_t<::apache::thrift::CompressionAlgorithm>,
    ::apache::thrift::type::union_t<::apache::thrift::PayloadMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::ProxiedPayloadMetadata>,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::struct_t<::apache::thrift::QueueMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::FdMetadata>,
    ::apache::thrift::type::cpp_type<std::unique_ptr<folly::IOBuf>, ::apache::thrift::type::binary_t>,
    ::apache::thrift::type::struct_t<::apache::thrift::Checksum>,
    ::apache::thrift::type::i64_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ResponseRpcMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ResponseRpcMetadata();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ResponseRpcMetadata(apache::thrift::FragileConstructor, folly::F14NodeMap<::std::string, ::std::string> otherMetadata__arg, ::std::int64_t load__arg, std::uint32_t crc32c__arg, ::apache::thrift::CompressionAlgorithm compression__arg, ::apache::thrift::PayloadMetadata payloadMetadata__arg, ::apache::thrift::ProxiedPayloadMetadata proxiedPayloadMetadata__arg, ::std::int32_t streamId__arg, ::apache::thrift::QueueMetadata queueMetadata__arg, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> fdMetadata__arg, ::apache::thrift::IOBufPtr frameworkMetadata__arg, ::apache::thrift::Checksum checksum__arg, ::std::int64_t secondaryLoad__arg);

  ResponseRpcMetadata(ResponseRpcMetadata&&) noexcept;
  ResponseRpcMetadata(const ResponseRpcMetadata& src);


  ResponseRpcMetadata& operator=(ResponseRpcMetadata&&) noexcept;
  ResponseRpcMetadata& operator=(const ResponseRpcMetadata& src);

  ~ResponseRpcMetadata();

 private:
  folly::F14NodeMap<::std::string, ::std::string> __fbthrift_field_otherMetadata;
 private:
  ::std::int64_t __fbthrift_field_load;
 private:
  std::uint32_t __fbthrift_field_crc32c;
 private:
  ::apache::thrift::CompressionAlgorithm __fbthrift_field_compression;
 private:
  ::apache::thrift::PayloadMetadata __fbthrift_field_payloadMetadata;
 private:
  ::apache::thrift::ProxiedPayloadMetadata __fbthrift_field_proxiedPayloadMetadata;
 private:
  ::std::int32_t __fbthrift_field_streamId;
 private:
  ::apache::thrift::QueueMetadata __fbthrift_field_queueMetadata;
 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> __fbthrift_field_fdMetadata;
 private:
  ::apache::thrift::IOBufPtr __fbthrift_field_frameworkMetadata;
 private:
  ::apache::thrift::Checksum __fbthrift_field_checksum;
 private:
  ::std::int64_t __fbthrift_field_secondaryLoad;
 private:
  apache::thrift::detail::isset_bitset<11, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ResponseRpcMetadata&) const;
  bool operator<(const ResponseRpcMetadata&) const;

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata_ref() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata_ref() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> load_ref() const& {
    return {this->__fbthrift_field_load, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> load_ref() & {
    return {this->__fbthrift_field_load, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> load_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_load), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> load() const& {
    return {this->__fbthrift_field_load, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> load() & {
    return {this->__fbthrift_field_load, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> load() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_load), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> crc32c_ref() const& {
    return {this->__fbthrift_field_crc32c, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> crc32c_ref() & {
    return {this->__fbthrift_field_crc32c, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> crc32c_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_crc32c), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> crc32c() const& {
    return {this->__fbthrift_field_crc32c, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> crc32c() & {
    return {this->__fbthrift_field_crc32c, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "crc32c" } */
  template <typename..., typename fbthrift_T = std::uint32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> crc32c() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_crc32c), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression_ref() const& {
    return {this->__fbthrift_field_compression, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression_ref() & {
    return {this->__fbthrift_field_compression, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression() const& {
    return {this->__fbthrift_field_compression, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression() & {
    return {this->__fbthrift_field_compression, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payloadMetadata_ref() const& {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payloadMetadata_ref() & {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payloadMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payloadMetadata), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payloadMetadata() const& {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payloadMetadata() & {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payloadMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payloadMetadata), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> proxiedPayloadMetadata_ref() const& {
    return {this->__fbthrift_field_proxiedPayloadMetadata, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> proxiedPayloadMetadata_ref() & {
    return {this->__fbthrift_field_proxiedPayloadMetadata, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> proxiedPayloadMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_proxiedPayloadMetadata), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> proxiedPayloadMetadata() const& {
    return {this->__fbthrift_field_proxiedPayloadMetadata, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> proxiedPayloadMetadata() & {
    return {this->__fbthrift_field_proxiedPayloadMetadata, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ProxiedPayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> proxiedPayloadMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_proxiedPayloadMetadata), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> streamId_ref() const& {
    return {this->__fbthrift_field_streamId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> streamId_ref() & {
    return {this->__fbthrift_field_streamId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> streamId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_streamId), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> streamId() const& {
    return {this->__fbthrift_field_streamId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> streamId() & {
    return {this->__fbthrift_field_streamId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> streamId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_streamId), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueMetadata_ref() const& {
    return {this->__fbthrift_field_queueMetadata, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueMetadata_ref() & {
    return {this->__fbthrift_field_queueMetadata, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueMetadata), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> queueMetadata() const& {
    return {this->__fbthrift_field_queueMetadata, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> queueMetadata() & {
    return {this->__fbthrift_field_queueMetadata, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "queueMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::QueueMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> queueMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_queueMetadata), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> frameworkMetadata_ref() const& {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> frameworkMetadata_ref() & {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> frameworkMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_frameworkMetadata), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> frameworkMetadata() const& {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> frameworkMetadata() & {
    return {this->__fbthrift_field_frameworkMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "frameworkMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::IOBufPtr>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> frameworkMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_frameworkMetadata), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum_ref() const& {
    return {this->__fbthrift_field_checksum, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum_ref() & {
    return {this->__fbthrift_field_checksum, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum() const& {
    return {this->__fbthrift_field_checksum, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum() & {
    return {this->__fbthrift_field_checksum, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> secondaryLoad_ref() const& {
    return {this->__fbthrift_field_secondaryLoad, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> secondaryLoad_ref() & {
    return {this->__fbthrift_field_secondaryLoad, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> secondaryLoad_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_secondaryLoad), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> secondaryLoad() const& {
    return {this->__fbthrift_field_secondaryLoad, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> secondaryLoad() & {
    return {this->__fbthrift_field_secondaryLoad, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "secondaryLoad" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> secondaryLoad() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_secondaryLoad), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() const&;

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() &;

  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() && = delete;

  /** Glean { "field": "otherMetadata" } */
  template <typename T_ResponseRpcMetadata_otherMetadata_struct_setter = folly::F14NodeMap<::std::string, ::std::string>>
  [[deprecated("Use `FOO.otherMetadata() = BAR` instead of `FOO.set_otherMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::std::string>& set_otherMetadata(T_ResponseRpcMetadata_otherMetadata_struct_setter&& otherMetadata_) {
    otherMetadata_ref() = std::forward<T_ResponseRpcMetadata_otherMetadata_struct_setter>(otherMetadata_);
    return __fbthrift_field_otherMetadata;
  }

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load().value()` instead of `FOO.get_load()`")]]
  const ::std::int64_t* get_load() const&;

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load().value()` instead of `FOO.get_load()`")]]
  ::std::int64_t* get_load() &;

  ::std::int64_t* get_load() && = delete;

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load() = BAR` instead of `FOO.set_load(BAR)`")]]
  ::std::int64_t& set_load(::std::int64_t load_);

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c().value()` instead of `FOO.get_crc32c()`")]]
  const std::uint32_t* get_crc32c() const&;

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c().value()` instead of `FOO.get_crc32c()`")]]
  std::uint32_t* get_crc32c() &;

  std::uint32_t* get_crc32c() && = delete;

  /** Glean { "field": "crc32c" } */
  [[deprecated("Use `FOO.crc32c() = BAR` instead of `FOO.set_crc32c(BAR)`")]]
  std::uint32_t& set_crc32c(std::uint32_t crc32c_);

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  const ::apache::thrift::CompressionAlgorithm* get_compression() const&;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  ::apache::thrift::CompressionAlgorithm* get_compression() &;

  ::apache::thrift::CompressionAlgorithm* get_compression() && = delete;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression() = BAR` instead of `FOO.set_compression(BAR)`")]]
  ::apache::thrift::CompressionAlgorithm& set_compression(::apache::thrift::CompressionAlgorithm compression_);

  /** Glean { "field": "payloadMetadata" } */
  [[deprecated("Use `FOO.payloadMetadata().value()` instead of `FOO.get_payloadMetadata()`")]]
  const ::apache::thrift::PayloadMetadata* get_payloadMetadata() const&;

  /** Glean { "field": "payloadMetadata" } */
  [[deprecated("Use `FOO.payloadMetadata().value()` instead of `FOO.get_payloadMetadata()`")]]
  ::apache::thrift::PayloadMetadata* get_payloadMetadata() &;

  ::apache::thrift::PayloadMetadata* get_payloadMetadata() && = delete;

  /** Glean { "field": "payloadMetadata" } */
  template <typename T_ResponseRpcMetadata_payloadMetadata_struct_setter = ::apache::thrift::PayloadMetadata>
  [[deprecated("Use `FOO.payloadMetadata() = BAR` instead of `FOO.set_payloadMetadata(BAR)`")]]
  ::apache::thrift::PayloadMetadata& set_payloadMetadata(T_ResponseRpcMetadata_payloadMetadata_struct_setter&& payloadMetadata_) {
    payloadMetadata_ref() = std::forward<T_ResponseRpcMetadata_payloadMetadata_struct_setter>(payloadMetadata_);
    return __fbthrift_field_payloadMetadata;
  }

  /** Glean { "field": "proxiedPayloadMetadata" } */
  [[deprecated("Use `FOO.proxiedPayloadMetadata().value()` instead of `FOO.get_proxiedPayloadMetadata()`")]]
  const ::apache::thrift::ProxiedPayloadMetadata* get_proxiedPayloadMetadata() const&;

  /** Glean { "field": "proxiedPayloadMetadata" } */
  [[deprecated("Use `FOO.proxiedPayloadMetadata().value()` instead of `FOO.get_proxiedPayloadMetadata()`")]]
  ::apache::thrift::ProxiedPayloadMetadata* get_proxiedPayloadMetadata() &;

  ::apache::thrift::ProxiedPayloadMetadata* get_proxiedPayloadMetadata() && = delete;

  /** Glean { "field": "proxiedPayloadMetadata" } */
  template <typename T_ResponseRpcMetadata_proxiedPayloadMetadata_struct_setter = ::apache::thrift::ProxiedPayloadMetadata>
  [[deprecated("Use `FOO.proxiedPayloadMetadata() = BAR` instead of `FOO.set_proxiedPayloadMetadata(BAR)`")]]
  ::apache::thrift::ProxiedPayloadMetadata& set_proxiedPayloadMetadata(T_ResponseRpcMetadata_proxiedPayloadMetadata_struct_setter&& proxiedPayloadMetadata_) {
    proxiedPayloadMetadata_ref() = std::forward<T_ResponseRpcMetadata_proxiedPayloadMetadata_struct_setter>(proxiedPayloadMetadata_);
    return __fbthrift_field_proxiedPayloadMetadata;
  }

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId().value()` instead of `FOO.get_streamId()`")]]
  const ::std::int32_t* get_streamId() const&;

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId().value()` instead of `FOO.get_streamId()`")]]
  ::std::int32_t* get_streamId() &;

  ::std::int32_t* get_streamId() && = delete;

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId() = BAR` instead of `FOO.set_streamId(BAR)`")]]
  ::std::int32_t& set_streamId(::std::int32_t streamId_);

  /** Glean { "field": "queueMetadata" } */
  [[deprecated("Use `FOO.queueMetadata().value()` instead of `FOO.get_queueMetadata()`")]]
  const ::apache::thrift::QueueMetadata* get_queueMetadata() const&;

  /** Glean { "field": "queueMetadata" } */
  [[deprecated("Use `FOO.queueMetadata().value()` instead of `FOO.get_queueMetadata()`")]]
  ::apache::thrift::QueueMetadata* get_queueMetadata() &;

  ::apache::thrift::QueueMetadata* get_queueMetadata() && = delete;

  /** Glean { "field": "queueMetadata" } */
  template <typename T_ResponseRpcMetadata_queueMetadata_struct_setter = ::apache::thrift::QueueMetadata>
  [[deprecated("Use `FOO.queueMetadata() = BAR` instead of `FOO.set_queueMetadata(BAR)`")]]
  ::apache::thrift::QueueMetadata& set_queueMetadata(T_ResponseRpcMetadata_queueMetadata_struct_setter&& queueMetadata_) {
    queueMetadata_ref() = std::forward<T_ResponseRpcMetadata_queueMetadata_struct_setter>(queueMetadata_);
    return __fbthrift_field_queueMetadata;
  }

  /** Glean { "field": "frameworkMetadata" } */
  [[deprecated("Use `FOO.frameworkMetadata().value()` instead of `FOO.get_frameworkMetadata()`")]]
  const ::apache::thrift::IOBufPtr* get_frameworkMetadata() const&;

  /** Glean { "field": "frameworkMetadata" } */
  [[deprecated("Use `FOO.frameworkMetadata().value()` instead of `FOO.get_frameworkMetadata()`")]]
  ::apache::thrift::IOBufPtr* get_frameworkMetadata() &;

  ::apache::thrift::IOBufPtr* get_frameworkMetadata() && = delete;

  /** Glean { "field": "frameworkMetadata" } */
  template <typename T_ResponseRpcMetadata_frameworkMetadata_struct_setter = ::apache::thrift::IOBufPtr>
  [[deprecated("Use `FOO.frameworkMetadata() = BAR` instead of `FOO.set_frameworkMetadata(BAR)`")]]
  ::apache::thrift::IOBufPtr& set_frameworkMetadata(T_ResponseRpcMetadata_frameworkMetadata_struct_setter&& frameworkMetadata_) {
    frameworkMetadata_ref() = std::forward<T_ResponseRpcMetadata_frameworkMetadata_struct_setter>(frameworkMetadata_);
    return __fbthrift_field_frameworkMetadata;
  }

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  const ::apache::thrift::Checksum* get_checksum() const&;

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  ::apache::thrift::Checksum* get_checksum() &;

  ::apache::thrift::Checksum* get_checksum() && = delete;

  /** Glean { "field": "checksum" } */
  template <typename T_ResponseRpcMetadata_checksum_struct_setter = ::apache::thrift::Checksum>
  [[deprecated("Use `FOO.checksum() = BAR` instead of `FOO.set_checksum(BAR)`")]]
  ::apache::thrift::Checksum& set_checksum(T_ResponseRpcMetadata_checksum_struct_setter&& checksum_) {
    checksum_ref() = std::forward<T_ResponseRpcMetadata_checksum_struct_setter>(checksum_);
    return __fbthrift_field_checksum;
  }

  /** Glean { "field": "secondaryLoad" } */
  [[deprecated("Use `FOO.secondaryLoad().value()` instead of `FOO.get_secondaryLoad()`")]]
  const ::std::int64_t* get_secondaryLoad() const&;

  /** Glean { "field": "secondaryLoad" } */
  [[deprecated("Use `FOO.secondaryLoad().value()` instead of `FOO.get_secondaryLoad()`")]]
  ::std::int64_t* get_secondaryLoad() &;

  ::std::int64_t* get_secondaryLoad() && = delete;

  /** Glean { "field": "secondaryLoad" } */
  [[deprecated("Use `FOO.secondaryLoad() = BAR` instead of `FOO.set_secondaryLoad(BAR)`")]]
  ::std::int64_t& set_secondaryLoad(::std::int64_t secondaryLoad_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ResponseRpcMetadata>;
  friend void swap(ResponseRpcMetadata& a, ResponseRpcMetadata& b);
};

template <class Protocol_>
unsigned long ResponseRpcMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ResponseRpcError", "kind": "struct" } */
class ResponseRpcError final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 5;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,4,5};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name_utf8,
    ::apache::thrift::ident::what_utf8,
    ::apache::thrift::ident::category,
    ::apache::thrift::ident::code,
    ::apache::thrift::ident::load
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::enum_t<::apache::thrift::ResponseRpcErrorCategory>,
    ::apache::thrift::type::enum_t<::apache::thrift::ResponseRpcErrorCode>,
    ::apache::thrift::type::i64_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ResponseRpcError;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ResponseRpcError();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ResponseRpcError(apache::thrift::FragileConstructor, ::std::string name_utf8__arg, ::std::string what_utf8__arg, ::apache::thrift::ResponseRpcErrorCategory category__arg, ::apache::thrift::ResponseRpcErrorCode code__arg, ::std::int64_t load__arg);

  ResponseRpcError(ResponseRpcError&&) noexcept;

  ResponseRpcError(const ResponseRpcError& src);


  ResponseRpcError& operator=(ResponseRpcError&&) noexcept;
  ResponseRpcError& operator=(const ResponseRpcError& src);

  ~ResponseRpcError();

 private:
  ::std::string __fbthrift_field_name_utf8;
 private:
  ::std::string __fbthrift_field_what_utf8;
 private:
  ::apache::thrift::ResponseRpcErrorCategory __fbthrift_field_category;
 private:
  ::apache::thrift::ResponseRpcErrorCode __fbthrift_field_code;
 private:
  ::std::int64_t __fbthrift_field_load;
 private:
  apache::thrift::detail::isset_bitset<5, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ResponseRpcError&) const;
  bool operator<(const ResponseRpcError&) const;

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8_ref() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8_ref() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8_ref() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8_ref() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> category_ref() const& {
    return {this->__fbthrift_field_category, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> category_ref() & {
    return {this->__fbthrift_field_category, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> category_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_category), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> category() const& {
    return {this->__fbthrift_field_category, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> category() & {
    return {this->__fbthrift_field_category, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "category" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCategory>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> category() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_category), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> code_ref() const& {
    return {this->__fbthrift_field_code, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> code_ref() & {
    return {this->__fbthrift_field_code, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> code_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_code), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> code() const& {
    return {this->__fbthrift_field_code, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> code() & {
    return {this->__fbthrift_field_code, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ResponseRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> code() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_code), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> load_ref() const& {
    return {this->__fbthrift_field_load, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> load_ref() & {
    return {this->__fbthrift_field_load, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> load_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_load), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> load() const& {
    return {this->__fbthrift_field_load, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> load() & {
    return {this->__fbthrift_field_load, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "load" } */
  template <typename..., typename fbthrift_T = ::std::int64_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> load() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_load), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  const ::std::string* get_name_utf8() const&;

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  ::std::string* get_name_utf8() &;

  ::std::string* get_name_utf8() && = delete;

  /** Glean { "field": "name_utf8" } */
  template <typename T_ResponseRpcError_name_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name_utf8() = BAR` instead of `FOO.set_name_utf8(BAR)`")]]
  ::std::string& set_name_utf8(T_ResponseRpcError_name_utf8_struct_setter&& name_utf8_) {
    name_utf8_ref() = std::forward<T_ResponseRpcError_name_utf8_struct_setter>(name_utf8_);
    return __fbthrift_field_name_utf8;
  }

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  const ::std::string* get_what_utf8() const&;

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  ::std::string* get_what_utf8() &;

  ::std::string* get_what_utf8() && = delete;

  /** Glean { "field": "what_utf8" } */
  template <typename T_ResponseRpcError_what_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.what_utf8() = BAR` instead of `FOO.set_what_utf8(BAR)`")]]
  ::std::string& set_what_utf8(T_ResponseRpcError_what_utf8_struct_setter&& what_utf8_) {
    what_utf8_ref() = std::forward<T_ResponseRpcError_what_utf8_struct_setter>(what_utf8_);
    return __fbthrift_field_what_utf8;
  }

  /** Glean { "field": "category" } */
  [[deprecated("Use `FOO.category().value()` instead of `FOO.get_category()`")]]
  const ::apache::thrift::ResponseRpcErrorCategory* get_category() const&;

  /** Glean { "field": "category" } */
  [[deprecated("Use `FOO.category().value()` instead of `FOO.get_category()`")]]
  ::apache::thrift::ResponseRpcErrorCategory* get_category() &;

  ::apache::thrift::ResponseRpcErrorCategory* get_category() && = delete;

  /** Glean { "field": "category" } */
  [[deprecated("Use `FOO.category() = BAR` instead of `FOO.set_category(BAR)`")]]
  ::apache::thrift::ResponseRpcErrorCategory& set_category(::apache::thrift::ResponseRpcErrorCategory category_);

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code().value()` instead of `FOO.get_code()`")]]
  const ::apache::thrift::ResponseRpcErrorCode* get_code() const&;

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code().value()` instead of `FOO.get_code()`")]]
  ::apache::thrift::ResponseRpcErrorCode* get_code() &;

  ::apache::thrift::ResponseRpcErrorCode* get_code() && = delete;

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code() = BAR` instead of `FOO.set_code(BAR)`")]]
  ::apache::thrift::ResponseRpcErrorCode& set_code(::apache::thrift::ResponseRpcErrorCode code_);

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load().value()` instead of `FOO.get_load()`")]]
  const ::std::int64_t* get_load() const&;

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load().value()` instead of `FOO.get_load()`")]]
  ::std::int64_t* get_load() &;

  ::std::int64_t* get_load() && = delete;

  /** Glean { "field": "load" } */
  [[deprecated("Use `FOO.load() = BAR` instead of `FOO.set_load(BAR)`")]]
  ::std::int64_t& set_load(::std::int64_t load_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ResponseRpcError>;
  friend void swap(ResponseRpcError& a, ResponseRpcError& b);
};

template <class Protocol_>
unsigned long ResponseRpcError::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "StreamRpcError", "kind": "struct" } */
class StreamRpcError final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,4};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::name_utf8,
    ::apache::thrift::ident::what_utf8,
    ::apache::thrift::ident::code
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::enum_t<::apache::thrift::StreamRpcErrorCode>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = StreamRpcError;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  StreamRpcError();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  StreamRpcError(apache::thrift::FragileConstructor, ::std::string name_utf8__arg, ::std::string what_utf8__arg, ::apache::thrift::StreamRpcErrorCode code__arg);

  StreamRpcError(StreamRpcError&&) noexcept;

  StreamRpcError(const StreamRpcError& src);


  StreamRpcError& operator=(StreamRpcError&&) noexcept;
  StreamRpcError& operator=(const StreamRpcError& src);

  ~StreamRpcError();

 private:
  ::std::string __fbthrift_field_name_utf8;
 private:
  ::std::string __fbthrift_field_what_utf8;
 private:
  ::apache::thrift::StreamRpcErrorCode __fbthrift_field_code;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const StreamRpcError&) const;
  bool operator<(const StreamRpcError&) const;

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8_ref() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8_ref() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> name_utf8() const& {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> name_utf8() & {
    return {this->__fbthrift_field_name_utf8, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "name_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> name_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_name_utf8), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8_ref() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8_ref() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> what_utf8() const& {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> what_utf8() & {
    return {this->__fbthrift_field_what_utf8, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "what_utf8" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> what_utf8() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_what_utf8), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> code_ref() const& {
    return {this->__fbthrift_field_code, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> code_ref() & {
    return {this->__fbthrift_field_code, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> code_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_code), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> code() const& {
    return {this->__fbthrift_field_code, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> code() & {
    return {this->__fbthrift_field_code, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "code" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::StreamRpcErrorCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> code() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_code), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  const ::std::string* get_name_utf8() const&;

  /** Glean { "field": "name_utf8" } */
  [[deprecated("Use `FOO.name_utf8().value()` instead of `FOO.get_name_utf8()`")]]
  ::std::string* get_name_utf8() &;

  ::std::string* get_name_utf8() && = delete;

  /** Glean { "field": "name_utf8" } */
  template <typename T_StreamRpcError_name_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.name_utf8() = BAR` instead of `FOO.set_name_utf8(BAR)`")]]
  ::std::string& set_name_utf8(T_StreamRpcError_name_utf8_struct_setter&& name_utf8_) {
    name_utf8_ref() = std::forward<T_StreamRpcError_name_utf8_struct_setter>(name_utf8_);
    return __fbthrift_field_name_utf8;
  }

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  const ::std::string* get_what_utf8() const&;

  /** Glean { "field": "what_utf8" } */
  [[deprecated("Use `FOO.what_utf8().value()` instead of `FOO.get_what_utf8()`")]]
  ::std::string* get_what_utf8() &;

  ::std::string* get_what_utf8() && = delete;

  /** Glean { "field": "what_utf8" } */
  template <typename T_StreamRpcError_what_utf8_struct_setter = ::std::string>
  [[deprecated("Use `FOO.what_utf8() = BAR` instead of `FOO.set_what_utf8(BAR)`")]]
  ::std::string& set_what_utf8(T_StreamRpcError_what_utf8_struct_setter&& what_utf8_) {
    what_utf8_ref() = std::forward<T_StreamRpcError_what_utf8_struct_setter>(what_utf8_);
    return __fbthrift_field_what_utf8;
  }

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code().value()` instead of `FOO.get_code()`")]]
  const ::apache::thrift::StreamRpcErrorCode* get_code() const&;

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code().value()` instead of `FOO.get_code()`")]]
  ::apache::thrift::StreamRpcErrorCode* get_code() &;

  ::apache::thrift::StreamRpcErrorCode* get_code() && = delete;

  /** Glean { "field": "code" } */
  [[deprecated("Use `FOO.code() = BAR` instead of `FOO.set_code(BAR)`")]]
  ::apache::thrift::StreamRpcErrorCode& set_code(::apache::thrift::StreamRpcErrorCode code_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<StreamRpcError>;
  friend void swap(StreamRpcError& a, StreamRpcError& b);
};

template <class Protocol_>
unsigned long StreamRpcError::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "StreamPayloadMetadata", "kind": "struct" } */
class StreamPayloadMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 5;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,5,6};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::compression,
    ::apache::thrift::ident::otherMetadata,
    ::apache::thrift::ident::payloadMetadata,
    ::apache::thrift::ident::fdMetadata,
    ::apache::thrift::ident::checksum
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::CompressionAlgorithm>,
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>,
    ::apache::thrift::type::union_t<::apache::thrift::PayloadMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::FdMetadata>,
    ::apache::thrift::type::struct_t<::apache::thrift::Checksum>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = StreamPayloadMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  StreamPayloadMetadata();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  StreamPayloadMetadata(apache::thrift::FragileConstructor, ::apache::thrift::CompressionAlgorithm compression__arg, folly::F14NodeMap<::std::string, ::apache::thrift::string_4852> otherMetadata__arg, ::apache::thrift::PayloadMetadata payloadMetadata__arg, ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> fdMetadata__arg, ::apache::thrift::Checksum checksum__arg);

  StreamPayloadMetadata(StreamPayloadMetadata&&) noexcept;

  StreamPayloadMetadata(const StreamPayloadMetadata& src);


  StreamPayloadMetadata& operator=(StreamPayloadMetadata&&) noexcept;
  StreamPayloadMetadata& operator=(const StreamPayloadMetadata& src);

  ~StreamPayloadMetadata();

 private:
  ::apache::thrift::CompressionAlgorithm __fbthrift_field_compression;
 private:
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852> __fbthrift_field_otherMetadata;
 private:
  ::apache::thrift::PayloadMetadata __fbthrift_field_payloadMetadata;
 private:
  ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata> __fbthrift_field_fdMetadata;
 private:
  ::apache::thrift::Checksum __fbthrift_field_checksum;
 private:
  apache::thrift::detail::isset_bitset<4, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const StreamPayloadMetadata&) const;
  bool operator<(const StreamPayloadMetadata&) const;

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression_ref() const& {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression_ref() & {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression() const& {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression() & {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata_ref() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata_ref() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payloadMetadata_ref() const& {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payloadMetadata_ref() & {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payloadMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payloadMetadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payloadMetadata() const& {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payloadMetadata() & {
    return {this->__fbthrift_field_payloadMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "payloadMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::PayloadMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payloadMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payloadMetadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata_ref() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata_ref() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata_ref() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&> fdMetadata() const& {
    return ::apache::thrift::optional_boxed_field_ref<const fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&> fdMetadata() & {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&>{this->__fbthrift_field_fdMetadata};
  }

  /** Glean { "field": "fdMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::detail::boxed_value_ptr<::apache::thrift::FdMetadata>>
  FOLLY_ERASE ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&> fdMetadata() && {
    return ::apache::thrift::optional_boxed_field_ref<fbthrift_T&&>{static_cast<fbthrift_T&&>(this->__fbthrift_field_fdMetadata)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum_ref() const& {
    return {this->__fbthrift_field_checksum, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum_ref() & {
    return {this->__fbthrift_field_checksum, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> checksum() const& {
    return {this->__fbthrift_field_checksum, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> checksum() & {
    return {this->__fbthrift_field_checksum, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "checksum" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::Checksum>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> checksum() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_checksum), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  const ::apache::thrift::CompressionAlgorithm* get_compression() const&;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  ::apache::thrift::CompressionAlgorithm* get_compression() &;

  ::apache::thrift::CompressionAlgorithm* get_compression() && = delete;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression() = BAR` instead of `FOO.set_compression(BAR)`")]]
  ::apache::thrift::CompressionAlgorithm& set_compression(::apache::thrift::CompressionAlgorithm compression_);

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() const&;

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() &;

  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() && = delete;

  /** Glean { "field": "otherMetadata" } */
  template <typename T_StreamPayloadMetadata_otherMetadata_struct_setter = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  [[deprecated("Use `FOO.otherMetadata() = BAR` instead of `FOO.set_otherMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>& set_otherMetadata(T_StreamPayloadMetadata_otherMetadata_struct_setter&& otherMetadata_) {
    otherMetadata_ref() = std::forward<T_StreamPayloadMetadata_otherMetadata_struct_setter>(otherMetadata_);
    return __fbthrift_field_otherMetadata;
  }

  /** Glean { "field": "payloadMetadata" } */
  [[deprecated("Use `FOO.payloadMetadata().value()` instead of `FOO.get_payloadMetadata()`")]]
  const ::apache::thrift::PayloadMetadata* get_payloadMetadata() const&;

  /** Glean { "field": "payloadMetadata" } */
  [[deprecated("Use `FOO.payloadMetadata().value()` instead of `FOO.get_payloadMetadata()`")]]
  ::apache::thrift::PayloadMetadata* get_payloadMetadata() &;

  ::apache::thrift::PayloadMetadata* get_payloadMetadata() && = delete;

  /** Glean { "field": "payloadMetadata" } */
  template <typename T_StreamPayloadMetadata_payloadMetadata_struct_setter = ::apache::thrift::PayloadMetadata>
  [[deprecated("Use `FOO.payloadMetadata() = BAR` instead of `FOO.set_payloadMetadata(BAR)`")]]
  ::apache::thrift::PayloadMetadata& set_payloadMetadata(T_StreamPayloadMetadata_payloadMetadata_struct_setter&& payloadMetadata_) {
    payloadMetadata_ref() = std::forward<T_StreamPayloadMetadata_payloadMetadata_struct_setter>(payloadMetadata_);
    return __fbthrift_field_payloadMetadata;
  }

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  const ::apache::thrift::Checksum* get_checksum() const&;

  /** Glean { "field": "checksum" } */
  [[deprecated("Use `FOO.checksum().value()` instead of `FOO.get_checksum()`")]]
  ::apache::thrift::Checksum* get_checksum() &;

  ::apache::thrift::Checksum* get_checksum() && = delete;

  /** Glean { "field": "checksum" } */
  template <typename T_StreamPayloadMetadata_checksum_struct_setter = ::apache::thrift::Checksum>
  [[deprecated("Use `FOO.checksum() = BAR` instead of `FOO.set_checksum(BAR)`")]]
  ::apache::thrift::Checksum& set_checksum(T_StreamPayloadMetadata_checksum_struct_setter&& checksum_) {
    checksum_ref() = std::forward<T_StreamPayloadMetadata_checksum_struct_setter>(checksum_);
    return __fbthrift_field_checksum;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<StreamPayloadMetadata>;
  friend void swap(StreamPayloadMetadata& a, StreamPayloadMetadata& b);
};

template <class Protocol_>
unsigned long StreamPayloadMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ClientMetadata", "kind": "struct" } */
class ClientMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::agent,
    ::apache::thrift::ident::hostname,
    ::apache::thrift::ident::otherMetadata
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::std::string>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ClientMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  ClientMetadata();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  ClientMetadata(apache::thrift::FragileConstructor, ::std::string agent__arg, ::std::string hostname__arg, folly::F14NodeMap<::std::string, ::std::string> otherMetadata__arg);

  ClientMetadata(ClientMetadata&&) noexcept;

  ClientMetadata(const ClientMetadata& src);


  ClientMetadata& operator=(ClientMetadata&&) noexcept;
  ClientMetadata& operator=(const ClientMetadata& src);

  ~ClientMetadata();

 private:
  ::std::string __fbthrift_field_agent;
 private:
  ::std::string __fbthrift_field_hostname;
 private:
  folly::F14NodeMap<::std::string, ::std::string> __fbthrift_field_otherMetadata;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const ClientMetadata&) const;
  bool operator<(const ClientMetadata&) const;

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> agent_ref() const& {
    return {this->__fbthrift_field_agent, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> agent_ref() & {
    return {this->__fbthrift_field_agent, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> agent_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_agent), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> agent() const& {
    return {this->__fbthrift_field_agent, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> agent() & {
    return {this->__fbthrift_field_agent, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "agent" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> agent() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_agent), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> hostname_ref() const& {
    return {this->__fbthrift_field_hostname, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> hostname_ref() & {
    return {this->__fbthrift_field_hostname, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> hostname_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_hostname), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> hostname() const& {
    return {this->__fbthrift_field_hostname, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> hostname() & {
    return {this->__fbthrift_field_hostname, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "hostname" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> hostname() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_hostname), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata_ref() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata_ref() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "agent" } */
  [[deprecated("Use `FOO.agent().value()` instead of `FOO.get_agent()`")]]
  const ::std::string* get_agent() const&;

  /** Glean { "field": "agent" } */
  [[deprecated("Use `FOO.agent().value()` instead of `FOO.get_agent()`")]]
  ::std::string* get_agent() &;

  ::std::string* get_agent() && = delete;

  /** Glean { "field": "agent" } */
  template <typename T_ClientMetadata_agent_struct_setter = ::std::string>
  [[deprecated("Use `FOO.agent() = BAR` instead of `FOO.set_agent(BAR)`")]]
  ::std::string& set_agent(T_ClientMetadata_agent_struct_setter&& agent_) {
    agent_ref() = std::forward<T_ClientMetadata_agent_struct_setter>(agent_);
    return __fbthrift_field_agent;
  }

  /** Glean { "field": "hostname" } */
  [[deprecated("Use `FOO.hostname().value()` instead of `FOO.get_hostname()`")]]
  const ::std::string* get_hostname() const&;

  /** Glean { "field": "hostname" } */
  [[deprecated("Use `FOO.hostname().value()` instead of `FOO.get_hostname()`")]]
  ::std::string* get_hostname() &;

  ::std::string* get_hostname() && = delete;

  /** Glean { "field": "hostname" } */
  template <typename T_ClientMetadata_hostname_struct_setter = ::std::string>
  [[deprecated("Use `FOO.hostname() = BAR` instead of `FOO.set_hostname(BAR)`")]]
  ::std::string& set_hostname(T_ClientMetadata_hostname_struct_setter&& hostname_) {
    hostname_ref() = std::forward<T_ClientMetadata_hostname_struct_setter>(hostname_);
    return __fbthrift_field_hostname;
  }

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() const&;

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() &;

  folly::F14NodeMap<::std::string, ::std::string>* get_otherMetadata() && = delete;

  /** Glean { "field": "otherMetadata" } */
  template <typename T_ClientMetadata_otherMetadata_struct_setter = folly::F14NodeMap<::std::string, ::std::string>>
  [[deprecated("Use `FOO.otherMetadata() = BAR` instead of `FOO.set_otherMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::std::string>& set_otherMetadata(T_ClientMetadata_otherMetadata_struct_setter&& otherMetadata_) {
    otherMetadata_ref() = std::forward<T_ClientMetadata_otherMetadata_struct_setter>(otherMetadata_);
    return __fbthrift_field_otherMetadata;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ClientMetadata>;
  friend void swap(ClientMetadata& a, ClientMetadata& b);
};

template <class Protocol_>
unsigned long ClientMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CustomCompressionSetupRequest", "kind": "struct" } */
class CustomCompressionSetupRequest final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::compressorName,
    ::apache::thrift::ident::payload
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::binary_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CustomCompressionSetupRequest;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  CustomCompressionSetupRequest();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  CustomCompressionSetupRequest(apache::thrift::FragileConstructor, ::std::string compressorName__arg, ::std::string payload__arg);

  CustomCompressionSetupRequest(CustomCompressionSetupRequest&&) noexcept;

  CustomCompressionSetupRequest(const CustomCompressionSetupRequest& src);


  CustomCompressionSetupRequest& operator=(CustomCompressionSetupRequest&&) noexcept;
  CustomCompressionSetupRequest& operator=(const CustomCompressionSetupRequest& src);

  ~CustomCompressionSetupRequest();

 private:
  ::std::string __fbthrift_field_compressorName;
 private:
  ::std::string __fbthrift_field_payload;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const CustomCompressionSetupRequest&) const;
  bool operator<(const CustomCompressionSetupRequest&) const;

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> compressorName_ref() const& {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> compressorName_ref() & {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> compressorName_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressorName), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> compressorName() const& {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> compressorName() & {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> compressorName() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressorName), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload_ref() const& {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload_ref() & {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload() const& {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload() & {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressorName" } */
  [[deprecated("Use `FOO.compressorName().value()` instead of `FOO.get_compressorName()`")]]
  const ::std::string& get_compressorName() const& {
    return __fbthrift_field_compressorName;
  }

  /** Glean { "field": "compressorName" } */
  [[deprecated("Use `FOO.compressorName().value()` instead of `FOO.get_compressorName()`")]]
  ::std::string get_compressorName() && {
    return static_cast<::std::string&&>(__fbthrift_field_compressorName);
  }

  /** Glean { "field": "compressorName" } */
  template <typename T_CustomCompressionSetupRequest_compressorName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.compressorName() = BAR` instead of `FOO.set_compressorName(BAR)`")]]
  ::std::string& set_compressorName(T_CustomCompressionSetupRequest_compressorName_struct_setter&& compressorName_) {
    compressorName_ref() = std::forward<T_CustomCompressionSetupRequest_compressorName_struct_setter>(compressorName_);
    return __fbthrift_field_compressorName;
  }

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  const ::std::string* get_payload() const&;

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  ::std::string* get_payload() &;

  ::std::string* get_payload() && = delete;

  /** Glean { "field": "payload" } */
  template <typename T_CustomCompressionSetupRequest_payload_struct_setter = ::std::string>
  [[deprecated("Use `FOO.payload() = BAR` instead of `FOO.set_payload(BAR)`")]]
  ::std::string& set_payload(T_CustomCompressionSetupRequest_payload_struct_setter&& payload_) {
    payload_ref() = std::forward<T_CustomCompressionSetupRequest_payload_struct_setter>(payload_);
    return __fbthrift_field_payload;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CustomCompressionSetupRequest>;
  friend void swap(CustomCompressionSetupRequest& a, CustomCompressionSetupRequest& b);
};

template <class Protocol_>
unsigned long CustomCompressionSetupRequest::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CompressionSetupRequest", "kind": "union" } */
class CompressionSetupRequest final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::custom
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::CustomCompressionSetupRequest>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CompressionSetupRequest;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    custom = 1,
  } ;

  CompressionSetupRequest()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  CompressionSetupRequest(CompressionSetupRequest&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::custom:
      {
        set_custom(std::move(rhs.value_.custom));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  CompressionSetupRequest(const CompressionSetupRequest& rhs);

  CompressionSetupRequest& operator=(CompressionSetupRequest&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::custom:
      {
        set_custom(std::move(rhs.value_.custom));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  CompressionSetupRequest& operator=(const CompressionSetupRequest& rhs);

  ~CompressionSetupRequest();

  union storage_type {
    ::apache::thrift::CustomCompressionSetupRequest custom;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const CompressionSetupRequest&) const;
  bool operator<(const CompressionSetupRequest&) const;

  /** Glean { "field": "custom" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionSetupRequest& set_custom(::apache::thrift::CustomCompressionSetupRequest const &t) {
    using T0 = ::apache::thrift::CustomCompressionSetupRequest;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) T(t);
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionSetupRequest& set_custom(::apache::thrift::CustomCompressionSetupRequest&& t) {
    using T0 = ::apache::thrift::CustomCompressionSetupRequest;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) T(std::move(t));
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::CustomCompressionSetupRequest, T...>> ::apache::thrift::CustomCompressionSetupRequest& set_custom(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) ::apache::thrift::CustomCompressionSetupRequest(std::forward<T>(t)...);
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  ::apache::thrift::CustomCompressionSetupRequest const& get_custom() const {
    if (getType() != Type::custom) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.custom;
  }

  ::apache::thrift::CustomCompressionSetupRequest& mutable_custom() {
    assert(getType() == Type::custom);
    return value_.custom;
  }

  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupRequest>
  T move_custom() {
    assert(getType() == Type::custom);
    return std::move(value_.custom);
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> custom_ref() const& {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> custom_ref() & {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> custom_ref() && {
    return {std::move(value_.custom), fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::CustomCompressionSetupRequest&> custom() const& {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionSetupRequest&> custom() & {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionSetupRequest&&> custom() && {
    return {std::move(value_.custom), fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CompressionSetupRequest>;
  friend void swap(CompressionSetupRequest& a, CompressionSetupRequest& b);
};

template <class Protocol_>
unsigned long CompressionSetupRequest::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CustomCompressionSetupResponse", "kind": "struct" } */
class CustomCompressionSetupResponse final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::compressorName,
    ::apache::thrift::ident::payload
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::string_t,
    ::apache::thrift::type::binary_t
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CustomCompressionSetupResponse;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  CustomCompressionSetupResponse();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  CustomCompressionSetupResponse(apache::thrift::FragileConstructor, ::std::string compressorName__arg, ::std::string payload__arg);

  CustomCompressionSetupResponse(CustomCompressionSetupResponse&&) noexcept;

  CustomCompressionSetupResponse(const CustomCompressionSetupResponse& src);


  CustomCompressionSetupResponse& operator=(CustomCompressionSetupResponse&&) noexcept;
  CustomCompressionSetupResponse& operator=(const CustomCompressionSetupResponse& src);

  ~CustomCompressionSetupResponse();

 private:
  ::std::string __fbthrift_field_compressorName;
 private:
  ::std::string __fbthrift_field_payload;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const CustomCompressionSetupResponse&) const;
  bool operator<(const CustomCompressionSetupResponse&) const;

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> compressorName_ref() const& {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> compressorName_ref() & {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> compressorName_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressorName), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<const fbthrift_T&> compressorName() const& {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&> compressorName() & {
    return {this->__fbthrift_field_compressorName, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compressorName" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::field_ref<fbthrift_T&&> compressorName() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressorName), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload_ref() const& {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload_ref() & {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> payload() const& {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> payload() & {
    return {this->__fbthrift_field_payload, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "payload" } */
  template <typename..., typename fbthrift_T = ::std::string>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> payload() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_payload), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressorName" } */
  [[deprecated("Use `FOO.compressorName().value()` instead of `FOO.get_compressorName()`")]]
  const ::std::string& get_compressorName() const& {
    return __fbthrift_field_compressorName;
  }

  /** Glean { "field": "compressorName" } */
  [[deprecated("Use `FOO.compressorName().value()` instead of `FOO.get_compressorName()`")]]
  ::std::string get_compressorName() && {
    return static_cast<::std::string&&>(__fbthrift_field_compressorName);
  }

  /** Glean { "field": "compressorName" } */
  template <typename T_CustomCompressionSetupResponse_compressorName_struct_setter = ::std::string>
  [[deprecated("Use `FOO.compressorName() = BAR` instead of `FOO.set_compressorName(BAR)`")]]
  ::std::string& set_compressorName(T_CustomCompressionSetupResponse_compressorName_struct_setter&& compressorName_) {
    compressorName_ref() = std::forward<T_CustomCompressionSetupResponse_compressorName_struct_setter>(compressorName_);
    return __fbthrift_field_compressorName;
  }

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  const ::std::string* get_payload() const&;

  /** Glean { "field": "payload" } */
  [[deprecated("Use `FOO.payload().value()` instead of `FOO.get_payload()`")]]
  ::std::string* get_payload() &;

  ::std::string* get_payload() && = delete;

  /** Glean { "field": "payload" } */
  template <typename T_CustomCompressionSetupResponse_payload_struct_setter = ::std::string>
  [[deprecated("Use `FOO.payload() = BAR` instead of `FOO.set_payload(BAR)`")]]
  ::std::string& set_payload(T_CustomCompressionSetupResponse_payload_struct_setter&& payload_) {
    payload_ref() = std::forward<T_CustomCompressionSetupResponse_payload_struct_setter>(payload_);
    return __fbthrift_field_payload;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CustomCompressionSetupResponse>;
  friend void swap(CustomCompressionSetupResponse& a, CustomCompressionSetupResponse& b);
};

template <class Protocol_>
unsigned long CustomCompressionSetupResponse::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "CompressionSetupResponse", "kind": "union" } */
class CompressionSetupResponse final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::custom
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::CustomCompressionSetupResponse>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = CompressionSetupResponse;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    custom = 1,
  } ;

  CompressionSetupResponse()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  CompressionSetupResponse(CompressionSetupResponse&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::custom:
      {
        set_custom(std::move(rhs.value_.custom));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  CompressionSetupResponse(const CompressionSetupResponse& rhs);

  CompressionSetupResponse& operator=(CompressionSetupResponse&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::custom:
      {
        set_custom(std::move(rhs.value_.custom));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  CompressionSetupResponse& operator=(const CompressionSetupResponse& rhs);

  ~CompressionSetupResponse();

  union storage_type {
    ::apache::thrift::CustomCompressionSetupResponse custom;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const CompressionSetupResponse&) const;
  bool operator<(const CompressionSetupResponse&) const;

  /** Glean { "field": "custom" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionSetupResponse& set_custom(::apache::thrift::CustomCompressionSetupResponse const &t) {
    using T0 = ::apache::thrift::CustomCompressionSetupResponse;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) T(t);
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::CustomCompressionSetupResponse& set_custom(::apache::thrift::CustomCompressionSetupResponse&& t) {
    using T0 = ::apache::thrift::CustomCompressionSetupResponse;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) T(std::move(t));
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::CustomCompressionSetupResponse, T...>> ::apache::thrift::CustomCompressionSetupResponse& set_custom(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::custom);
    ::new (std::addressof(value_.custom)) ::apache::thrift::CustomCompressionSetupResponse(std::forward<T>(t)...);
    return value_.custom;
  }

  /** Glean { "field": "custom" } */
  ::apache::thrift::CustomCompressionSetupResponse const& get_custom() const {
    if (getType() != Type::custom) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.custom;
  }

  ::apache::thrift::CustomCompressionSetupResponse& mutable_custom() {
    assert(getType() == Type::custom);
    return value_.custom;
  }

  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupResponse>
  T move_custom() {
    assert(getType() == Type::custom);
    return std::move(value_.custom);
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> custom_ref() const& {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> custom_ref() & {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  template <typename..., typename T = ::apache::thrift::CustomCompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> custom_ref() && {
    return {std::move(value_.custom), fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::CustomCompressionSetupResponse&> custom() const& {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionSetupResponse&> custom() & {
    return {value_.custom, fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "custom" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::CustomCompressionSetupResponse&&> custom() && {
    return {std::move(value_.custom), fbthrift_type_, folly::to_underlying(Type::custom), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<CompressionSetupResponse>;
  friend void swap(CompressionSetupResponse& a, CompressionSetupResponse& b);
};

template <class Protocol_>
unsigned long CompressionSetupResponse::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "RequestSetupMetadata", "kind": "struct" } */
class RequestSetupMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 12;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3,4,5,6,10,11,9,12,13,14};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::opaque,
    ::apache::thrift::ident::interfaceKind,
    ::apache::thrift::ident::minVersion,
    ::apache::thrift::ident::maxVersion,
    ::apache::thrift::ident::dscpToReflect,
    ::apache::thrift::ident::markToReflect,
    ::apache::thrift::ident::qosUseCaseId,
    ::apache::thrift::ident::qosPolicyId,
    ::apache::thrift::ident::clientMetadata,
    ::apache::thrift::ident::keepAliveTimeoutMs,
    ::apache::thrift::ident::encodeMetadataUsingBinary,
    ::apache::thrift::ident::compressionSetupRequest
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::cpp_type<apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::binary_t>>,
    ::apache::thrift::type::enum_t<::apache::thrift::InterfaceKind>,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::struct_t<::apache::thrift::ClientMetadata>,
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::bool_t,
    ::apache::thrift::type::union_t<::apache::thrift::CompressionSetupRequest>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = RequestSetupMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  RequestSetupMetadata();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  RequestSetupMetadata(apache::thrift::FragileConstructor, apache::thrift::MetadataOpaqueMap<::std::string, ::std::string> opaque__arg, ::apache::thrift::InterfaceKind interfaceKind__arg, ::std::int32_t minVersion__arg, ::std::int32_t maxVersion__arg, ::std::int32_t dscpToReflect__arg, ::std::int32_t markToReflect__arg, ::std::int32_t qosUseCaseId__arg, ::std::int32_t qosPolicyId__arg, ::apache::thrift::ClientMetadata clientMetadata__arg, ::std::int32_t keepAliveTimeoutMs__arg, bool encodeMetadataUsingBinary__arg, ::apache::thrift::CompressionSetupRequest compressionSetupRequest__arg);

  RequestSetupMetadata(RequestSetupMetadata&&) noexcept;

  RequestSetupMetadata(const RequestSetupMetadata& src);


  RequestSetupMetadata& operator=(RequestSetupMetadata&&) noexcept;
  RequestSetupMetadata& operator=(const RequestSetupMetadata& src);

  ~RequestSetupMetadata();

 private:
  apache::thrift::MetadataOpaqueMap<::std::string, ::std::string> __fbthrift_field_opaque;
 private:
  ::apache::thrift::InterfaceKind __fbthrift_field_interfaceKind;
 private:
  ::std::int32_t __fbthrift_field_minVersion;
 private:
  ::std::int32_t __fbthrift_field_maxVersion;
 private:
  ::std::int32_t __fbthrift_field_dscpToReflect;
 private:
  ::std::int32_t __fbthrift_field_markToReflect;
 private:
  ::std::int32_t __fbthrift_field_qosUseCaseId;
 private:
  ::std::int32_t __fbthrift_field_qosPolicyId;
 private:
  ::apache::thrift::ClientMetadata __fbthrift_field_clientMetadata;
 private:
  ::std::int32_t __fbthrift_field_keepAliveTimeoutMs;
 private:
  bool __fbthrift_field_encodeMetadataUsingBinary;
 private:
  ::apache::thrift::CompressionSetupRequest __fbthrift_field_compressionSetupRequest;
 private:
  apache::thrift::detail::isset_bitset<12, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const RequestSetupMetadata&) const;
  bool operator<(const RequestSetupMetadata&) const;

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> opaque_ref() const& {
    return {this->__fbthrift_field_opaque, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> opaque_ref() & {
    return {this->__fbthrift_field_opaque, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> opaque_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_opaque), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> opaque() const& {
    return {this->__fbthrift_field_opaque, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> opaque() & {
    return {this->__fbthrift_field_opaque, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "opaque" } */
  template <typename..., typename fbthrift_T = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> opaque() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_opaque), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interfaceKind_ref() const& {
    return {this->__fbthrift_field_interfaceKind, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interfaceKind_ref() & {
    return {this->__fbthrift_field_interfaceKind, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interfaceKind_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interfaceKind), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> interfaceKind() const& {
    return {this->__fbthrift_field_interfaceKind, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> interfaceKind() & {
    return {this->__fbthrift_field_interfaceKind, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "interfaceKind" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::InterfaceKind>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> interfaceKind() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_interfaceKind), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> minVersion_ref() const& {
    return {this->__fbthrift_field_minVersion, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> minVersion_ref() & {
    return {this->__fbthrift_field_minVersion, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> minVersion_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_minVersion), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> minVersion() const& {
    return {this->__fbthrift_field_minVersion, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> minVersion() & {
    return {this->__fbthrift_field_minVersion, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "minVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> minVersion() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_minVersion), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> maxVersion_ref() const& {
    return {this->__fbthrift_field_maxVersion, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> maxVersion_ref() & {
    return {this->__fbthrift_field_maxVersion, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> maxVersion_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_maxVersion), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> maxVersion() const& {
    return {this->__fbthrift_field_maxVersion, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> maxVersion() & {
    return {this->__fbthrift_field_maxVersion, __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "maxVersion" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> maxVersion() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_maxVersion), __isset.at(3), __isset.bit(3)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> dscpToReflect_ref() const& {
    return {this->__fbthrift_field_dscpToReflect, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> dscpToReflect_ref() & {
    return {this->__fbthrift_field_dscpToReflect, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> dscpToReflect_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_dscpToReflect), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> dscpToReflect() const& {
    return {this->__fbthrift_field_dscpToReflect, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> dscpToReflect() & {
    return {this->__fbthrift_field_dscpToReflect, __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "dscpToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> dscpToReflect() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_dscpToReflect), __isset.at(4), __isset.bit(4)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> markToReflect_ref() const& {
    return {this->__fbthrift_field_markToReflect, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> markToReflect_ref() & {
    return {this->__fbthrift_field_markToReflect, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> markToReflect_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_markToReflect), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> markToReflect() const& {
    return {this->__fbthrift_field_markToReflect, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> markToReflect() & {
    return {this->__fbthrift_field_markToReflect, __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "markToReflect" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> markToReflect() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_markToReflect), __isset.at(5), __isset.bit(5)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> qosUseCaseId_ref() const& {
    return {this->__fbthrift_field_qosUseCaseId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> qosUseCaseId_ref() & {
    return {this->__fbthrift_field_qosUseCaseId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> qosUseCaseId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_qosUseCaseId), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> qosUseCaseId() const& {
    return {this->__fbthrift_field_qosUseCaseId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> qosUseCaseId() & {
    return {this->__fbthrift_field_qosUseCaseId, __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosUseCaseId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> qosUseCaseId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_qosUseCaseId), __isset.at(6), __isset.bit(6)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> qosPolicyId_ref() const& {
    return {this->__fbthrift_field_qosPolicyId, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> qosPolicyId_ref() & {
    return {this->__fbthrift_field_qosPolicyId, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> qosPolicyId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_qosPolicyId), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> qosPolicyId() const& {
    return {this->__fbthrift_field_qosPolicyId, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> qosPolicyId() & {
    return {this->__fbthrift_field_qosPolicyId, __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "qosPolicyId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> qosPolicyId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_qosPolicyId), __isset.at(7), __isset.bit(7)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientMetadata_ref() const& {
    return {this->__fbthrift_field_clientMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientMetadata_ref() & {
    return {this->__fbthrift_field_clientMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientMetadata), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> clientMetadata() const& {
    return {this->__fbthrift_field_clientMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> clientMetadata() & {
    return {this->__fbthrift_field_clientMetadata, __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "clientMetadata" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::ClientMetadata>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> clientMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_clientMetadata), __isset.at(8), __isset.bit(8)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> keepAliveTimeoutMs_ref() const& {
    return {this->__fbthrift_field_keepAliveTimeoutMs, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> keepAliveTimeoutMs_ref() & {
    return {this->__fbthrift_field_keepAliveTimeoutMs, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> keepAliveTimeoutMs_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_keepAliveTimeoutMs), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> keepAliveTimeoutMs() const& {
    return {this->__fbthrift_field_keepAliveTimeoutMs, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> keepAliveTimeoutMs() & {
    return {this->__fbthrift_field_keepAliveTimeoutMs, __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> keepAliveTimeoutMs() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_keepAliveTimeoutMs), __isset.at(9), __isset.bit(9)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> encodeMetadataUsingBinary_ref() const& {
    return {this->__fbthrift_field_encodeMetadataUsingBinary, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> encodeMetadataUsingBinary_ref() & {
    return {this->__fbthrift_field_encodeMetadataUsingBinary, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> encodeMetadataUsingBinary_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_encodeMetadataUsingBinary), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> encodeMetadataUsingBinary() const& {
    return {this->__fbthrift_field_encodeMetadataUsingBinary, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> encodeMetadataUsingBinary() & {
    return {this->__fbthrift_field_encodeMetadataUsingBinary, __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> encodeMetadataUsingBinary() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_encodeMetadataUsingBinary), __isset.at(10), __isset.bit(10)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSetupRequest_ref() const& {
    return {this->__fbthrift_field_compressionSetupRequest, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSetupRequest_ref() & {
    return {this->__fbthrift_field_compressionSetupRequest, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSetupRequest_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSetupRequest), __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSetupRequest() const& {
    return {this->__fbthrift_field_compressionSetupRequest, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSetupRequest() & {
    return {this->__fbthrift_field_compressionSetupRequest, __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupRequest>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSetupRequest() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSetupRequest), __isset.at(11), __isset.bit(11)};
  }

  /** Glean { "field": "opaque" } */
  [[deprecated("Use `FOO.opaque().value()` instead of `FOO.get_opaque()`")]]
  const apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>* get_opaque() const&;

  /** Glean { "field": "opaque" } */
  [[deprecated("Use `FOO.opaque().value()` instead of `FOO.get_opaque()`")]]
  apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>* get_opaque() &;

  apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>* get_opaque() && = delete;

  /** Glean { "field": "opaque" } */
  template <typename T_RequestSetupMetadata_opaque_struct_setter = apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>>
  [[deprecated("Use `FOO.opaque() = BAR` instead of `FOO.set_opaque(BAR)`")]]
  apache::thrift::MetadataOpaqueMap<::std::string, ::std::string>& set_opaque(T_RequestSetupMetadata_opaque_struct_setter&& opaque_) {
    opaque_ref() = std::forward<T_RequestSetupMetadata_opaque_struct_setter>(opaque_);
    return __fbthrift_field_opaque;
  }

  /** Glean { "field": "interfaceKind" } */
  [[deprecated("Use `FOO.interfaceKind().value()` instead of `FOO.get_interfaceKind()`")]]
  const ::apache::thrift::InterfaceKind* get_interfaceKind() const&;

  /** Glean { "field": "interfaceKind" } */
  [[deprecated("Use `FOO.interfaceKind().value()` instead of `FOO.get_interfaceKind()`")]]
  ::apache::thrift::InterfaceKind* get_interfaceKind() &;

  ::apache::thrift::InterfaceKind* get_interfaceKind() && = delete;

  /** Glean { "field": "interfaceKind" } */
  [[deprecated("Use `FOO.interfaceKind() = BAR` instead of `FOO.set_interfaceKind(BAR)`")]]
  ::apache::thrift::InterfaceKind& set_interfaceKind(::apache::thrift::InterfaceKind interfaceKind_);

  /** Glean { "field": "minVersion" } */
  [[deprecated("Use `FOO.minVersion().value()` instead of `FOO.get_minVersion()`")]]
  const ::std::int32_t* get_minVersion() const&;

  /** Glean { "field": "minVersion" } */
  [[deprecated("Use `FOO.minVersion().value()` instead of `FOO.get_minVersion()`")]]
  ::std::int32_t* get_minVersion() &;

  ::std::int32_t* get_minVersion() && = delete;

  /** Glean { "field": "minVersion" } */
  [[deprecated("Use `FOO.minVersion() = BAR` instead of `FOO.set_minVersion(BAR)`")]]
  ::std::int32_t& set_minVersion(::std::int32_t minVersion_);

  /** Glean { "field": "maxVersion" } */
  [[deprecated("Use `FOO.maxVersion().value()` instead of `FOO.get_maxVersion()`")]]
  const ::std::int32_t* get_maxVersion() const&;

  /** Glean { "field": "maxVersion" } */
  [[deprecated("Use `FOO.maxVersion().value()` instead of `FOO.get_maxVersion()`")]]
  ::std::int32_t* get_maxVersion() &;

  ::std::int32_t* get_maxVersion() && = delete;

  /** Glean { "field": "maxVersion" } */
  [[deprecated("Use `FOO.maxVersion() = BAR` instead of `FOO.set_maxVersion(BAR)`")]]
  ::std::int32_t& set_maxVersion(::std::int32_t maxVersion_);

  /** Glean { "field": "dscpToReflect" } */
  [[deprecated("Use `FOO.dscpToReflect().value()` instead of `FOO.get_dscpToReflect()`")]]
  const ::std::int32_t* get_dscpToReflect() const&;

  /** Glean { "field": "dscpToReflect" } */
  [[deprecated("Use `FOO.dscpToReflect().value()` instead of `FOO.get_dscpToReflect()`")]]
  ::std::int32_t* get_dscpToReflect() &;

  ::std::int32_t* get_dscpToReflect() && = delete;

  /** Glean { "field": "dscpToReflect" } */
  [[deprecated("Use `FOO.dscpToReflect() = BAR` instead of `FOO.set_dscpToReflect(BAR)`")]]
  ::std::int32_t& set_dscpToReflect(::std::int32_t dscpToReflect_);

  /** Glean { "field": "markToReflect" } */
  [[deprecated("Use `FOO.markToReflect().value()` instead of `FOO.get_markToReflect()`")]]
  const ::std::int32_t* get_markToReflect() const&;

  /** Glean { "field": "markToReflect" } */
  [[deprecated("Use `FOO.markToReflect().value()` instead of `FOO.get_markToReflect()`")]]
  ::std::int32_t* get_markToReflect() &;

  ::std::int32_t* get_markToReflect() && = delete;

  /** Glean { "field": "markToReflect" } */
  [[deprecated("Use `FOO.markToReflect() = BAR` instead of `FOO.set_markToReflect(BAR)`")]]
  ::std::int32_t& set_markToReflect(::std::int32_t markToReflect_);

  /** Glean { "field": "qosUseCaseId" } */
  [[deprecated("Use `FOO.qosUseCaseId().value()` instead of `FOO.get_qosUseCaseId()`")]]
  const ::std::int32_t* get_qosUseCaseId() const&;

  /** Glean { "field": "qosUseCaseId" } */
  [[deprecated("Use `FOO.qosUseCaseId().value()` instead of `FOO.get_qosUseCaseId()`")]]
  ::std::int32_t* get_qosUseCaseId() &;

  ::std::int32_t* get_qosUseCaseId() && = delete;

  /** Glean { "field": "qosUseCaseId" } */
  [[deprecated("Use `FOO.qosUseCaseId() = BAR` instead of `FOO.set_qosUseCaseId(BAR)`")]]
  ::std::int32_t& set_qosUseCaseId(::std::int32_t qosUseCaseId_);

  /** Glean { "field": "qosPolicyId" } */
  [[deprecated("Use `FOO.qosPolicyId().value()` instead of `FOO.get_qosPolicyId()`")]]
  const ::std::int32_t* get_qosPolicyId() const&;

  /** Glean { "field": "qosPolicyId" } */
  [[deprecated("Use `FOO.qosPolicyId().value()` instead of `FOO.get_qosPolicyId()`")]]
  ::std::int32_t* get_qosPolicyId() &;

  ::std::int32_t* get_qosPolicyId() && = delete;

  /** Glean { "field": "qosPolicyId" } */
  [[deprecated("Use `FOO.qosPolicyId() = BAR` instead of `FOO.set_qosPolicyId(BAR)`")]]
  ::std::int32_t& set_qosPolicyId(::std::int32_t qosPolicyId_);

  /** Glean { "field": "clientMetadata" } */
  [[deprecated("Use `FOO.clientMetadata().value()` instead of `FOO.get_clientMetadata()`")]]
  const ::apache::thrift::ClientMetadata* get_clientMetadata() const&;

  /** Glean { "field": "clientMetadata" } */
  [[deprecated("Use `FOO.clientMetadata().value()` instead of `FOO.get_clientMetadata()`")]]
  ::apache::thrift::ClientMetadata* get_clientMetadata() &;

  ::apache::thrift::ClientMetadata* get_clientMetadata() && = delete;

  /** Glean { "field": "clientMetadata" } */
  template <typename T_RequestSetupMetadata_clientMetadata_struct_setter = ::apache::thrift::ClientMetadata>
  [[deprecated("Use `FOO.clientMetadata() = BAR` instead of `FOO.set_clientMetadata(BAR)`")]]
  ::apache::thrift::ClientMetadata& set_clientMetadata(T_RequestSetupMetadata_clientMetadata_struct_setter&& clientMetadata_) {
    clientMetadata_ref() = std::forward<T_RequestSetupMetadata_clientMetadata_struct_setter>(clientMetadata_);
    return __fbthrift_field_clientMetadata;
  }

  /** Glean { "field": "keepAliveTimeoutMs" } */
  [[deprecated("Use `FOO.keepAliveTimeoutMs().value()` instead of `FOO.get_keepAliveTimeoutMs()`")]]
  const ::std::int32_t* get_keepAliveTimeoutMs() const&;

  /** Glean { "field": "keepAliveTimeoutMs" } */
  [[deprecated("Use `FOO.keepAliveTimeoutMs().value()` instead of `FOO.get_keepAliveTimeoutMs()`")]]
  ::std::int32_t* get_keepAliveTimeoutMs() &;

  ::std::int32_t* get_keepAliveTimeoutMs() && = delete;

  /** Glean { "field": "keepAliveTimeoutMs" } */
  [[deprecated("Use `FOO.keepAliveTimeoutMs() = BAR` instead of `FOO.set_keepAliveTimeoutMs(BAR)`")]]
  ::std::int32_t& set_keepAliveTimeoutMs(::std::int32_t keepAliveTimeoutMs_);

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  [[deprecated("Use `FOO.encodeMetadataUsingBinary().value()` instead of `FOO.get_encodeMetadataUsingBinary()`")]]
  const bool* get_encodeMetadataUsingBinary() const&;

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  [[deprecated("Use `FOO.encodeMetadataUsingBinary().value()` instead of `FOO.get_encodeMetadataUsingBinary()`")]]
  bool* get_encodeMetadataUsingBinary() &;

  bool* get_encodeMetadataUsingBinary() && = delete;

  /** Glean { "field": "encodeMetadataUsingBinary" } */
  [[deprecated("Use `FOO.encodeMetadataUsingBinary() = BAR` instead of `FOO.set_encodeMetadataUsingBinary(BAR)`")]]
  bool& set_encodeMetadataUsingBinary(bool encodeMetadataUsingBinary_);

  /** Glean { "field": "compressionSetupRequest" } */
  [[deprecated("Use `FOO.compressionSetupRequest().value()` instead of `FOO.get_compressionSetupRequest()`")]]
  const ::apache::thrift::CompressionSetupRequest* get_compressionSetupRequest() const&;

  /** Glean { "field": "compressionSetupRequest" } */
  [[deprecated("Use `FOO.compressionSetupRequest().value()` instead of `FOO.get_compressionSetupRequest()`")]]
  ::apache::thrift::CompressionSetupRequest* get_compressionSetupRequest() &;

  ::apache::thrift::CompressionSetupRequest* get_compressionSetupRequest() && = delete;

  /** Glean { "field": "compressionSetupRequest" } */
  template <typename T_RequestSetupMetadata_compressionSetupRequest_struct_setter = ::apache::thrift::CompressionSetupRequest>
  [[deprecated("Use `FOO.compressionSetupRequest() = BAR` instead of `FOO.set_compressionSetupRequest(BAR)`")]]
  ::apache::thrift::CompressionSetupRequest& set_compressionSetupRequest(T_RequestSetupMetadata_compressionSetupRequest_struct_setter&& compressionSetupRequest_) {
    compressionSetupRequest_ref() = std::forward<T_RequestSetupMetadata_compressionSetupRequest_struct_setter>(compressionSetupRequest_);
    return __fbthrift_field_compressionSetupRequest;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<RequestSetupMetadata>;
  friend void swap(RequestSetupMetadata& a, RequestSetupMetadata& b);
};

template <class Protocol_>
unsigned long RequestSetupMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "SetupResponse", "kind": "struct" } */
class SetupResponse final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::version,
    ::apache::thrift::ident::zstdSupported,
    ::apache::thrift::ident::compressionSetupResponse
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::bool_t,
    ::apache::thrift::type::union_t<::apache::thrift::CompressionSetupResponse>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = SetupResponse;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  SetupResponse() :
      __fbthrift_field_version(),
      __fbthrift_field_zstdSupported() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  SetupResponse(apache::thrift::FragileConstructor, ::std::int32_t version__arg, bool zstdSupported__arg, ::apache::thrift::CompressionSetupResponse compressionSetupResponse__arg);

  SetupResponse(SetupResponse&&) noexcept;

  SetupResponse(const SetupResponse& src);


  SetupResponse& operator=(SetupResponse&&) noexcept;
  SetupResponse& operator=(const SetupResponse& src);
 private:
  ::std::int32_t __fbthrift_field_version;
 private:
  bool __fbthrift_field_zstdSupported;
 private:
  ::apache::thrift::CompressionSetupResponse __fbthrift_field_compressionSetupResponse;
 private:
  apache::thrift::detail::isset_bitset<3, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const SetupResponse&) const;
  bool operator<(const SetupResponse&) const;

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> version_ref() const& {
    return {this->__fbthrift_field_version, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> version_ref() & {
    return {this->__fbthrift_field_version, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> version_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_version), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> version() const& {
    return {this->__fbthrift_field_version, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> version() & {
    return {this->__fbthrift_field_version, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "version" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> version() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_version), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> zstdSupported_ref() const& {
    return {this->__fbthrift_field_zstdSupported, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> zstdSupported_ref() & {
    return {this->__fbthrift_field_zstdSupported, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> zstdSupported_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_zstdSupported), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> zstdSupported() const& {
    return {this->__fbthrift_field_zstdSupported, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> zstdSupported() & {
    return {this->__fbthrift_field_zstdSupported, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "zstdSupported" } */
  template <typename..., typename fbthrift_T = bool>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> zstdSupported() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_zstdSupported), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSetupResponse_ref() const& {
    return {this->__fbthrift_field_compressionSetupResponse, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSetupResponse_ref() & {
    return {this->__fbthrift_field_compressionSetupResponse, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSetupResponse_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSetupResponse), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compressionSetupResponse() const& {
    return {this->__fbthrift_field_compressionSetupResponse, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compressionSetupResponse() & {
    return {this->__fbthrift_field_compressionSetupResponse, __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionSetupResponse>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compressionSetupResponse() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compressionSetupResponse), __isset.at(2), __isset.bit(2)};
  }

  /** Glean { "field": "version" } */
  [[deprecated("Use `FOO.version().value()` instead of `FOO.get_version()`")]]
  const ::std::int32_t* get_version() const&;

  /** Glean { "field": "version" } */
  [[deprecated("Use `FOO.version().value()` instead of `FOO.get_version()`")]]
  ::std::int32_t* get_version() &;

  ::std::int32_t* get_version() && = delete;

  /** Glean { "field": "version" } */
  [[deprecated("Use `FOO.version() = BAR` instead of `FOO.set_version(BAR)`")]]
  ::std::int32_t& set_version(::std::int32_t version_);

  /** Glean { "field": "zstdSupported" } */
  [[deprecated("Use `FOO.zstdSupported().value()` instead of `FOO.get_zstdSupported()`")]]
  const bool* get_zstdSupported() const&;

  /** Glean { "field": "zstdSupported" } */
  [[deprecated("Use `FOO.zstdSupported().value()` instead of `FOO.get_zstdSupported()`")]]
  bool* get_zstdSupported() &;

  bool* get_zstdSupported() && = delete;

  /** Glean { "field": "zstdSupported" } */
  [[deprecated("Use `FOO.zstdSupported() = BAR` instead of `FOO.set_zstdSupported(BAR)`")]]
  bool& set_zstdSupported(bool zstdSupported_);

  /** Glean { "field": "compressionSetupResponse" } */
  [[deprecated("Use `FOO.compressionSetupResponse().value()` instead of `FOO.get_compressionSetupResponse()`")]]
  const ::apache::thrift::CompressionSetupResponse* get_compressionSetupResponse() const&;

  /** Glean { "field": "compressionSetupResponse" } */
  [[deprecated("Use `FOO.compressionSetupResponse().value()` instead of `FOO.get_compressionSetupResponse()`")]]
  ::apache::thrift::CompressionSetupResponse* get_compressionSetupResponse() &;

  ::apache::thrift::CompressionSetupResponse* get_compressionSetupResponse() && = delete;

  /** Glean { "field": "compressionSetupResponse" } */
  template <typename T_SetupResponse_compressionSetupResponse_struct_setter = ::apache::thrift::CompressionSetupResponse>
  [[deprecated("Use `FOO.compressionSetupResponse() = BAR` instead of `FOO.set_compressionSetupResponse(BAR)`")]]
  ::apache::thrift::CompressionSetupResponse& set_compressionSetupResponse(T_SetupResponse_compressionSetupResponse_struct_setter&& compressionSetupResponse_) {
    compressionSetupResponse_ref() = std::forward<T_SetupResponse_compressionSetupResponse_struct_setter>(compressionSetupResponse_);
    return __fbthrift_field_compressionSetupResponse;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<SetupResponse>;
  friend void swap(SetupResponse& a, SetupResponse& b);
};

template <class Protocol_>
unsigned long SetupResponse::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "HeadersPayloadContent", "kind": "struct" } */
class HeadersPayloadContent final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::otherMetadata
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = HeadersPayloadContent;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  HeadersPayloadContent();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  HeadersPayloadContent(apache::thrift::FragileConstructor, folly::F14NodeMap<::std::string, ::apache::thrift::string_4852> otherMetadata__arg);

  HeadersPayloadContent(HeadersPayloadContent&&) noexcept;

  HeadersPayloadContent(const HeadersPayloadContent& src);


  HeadersPayloadContent& operator=(HeadersPayloadContent&&) noexcept;
  HeadersPayloadContent& operator=(const HeadersPayloadContent& src);

  ~HeadersPayloadContent();

 private:
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852> __fbthrift_field_otherMetadata;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const HeadersPayloadContent&) const;
  bool operator<(const HeadersPayloadContent&) const;

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata_ref() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata_ref() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> otherMetadata() const& {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> otherMetadata() & {
    return {this->__fbthrift_field_otherMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> otherMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_otherMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() const&;

  /** Glean { "field": "otherMetadata" } */
  [[deprecated("Use `FOO.otherMetadata().value()` instead of `FOO.get_otherMetadata()`")]]
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() &;

  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>* get_otherMetadata() && = delete;

  /** Glean { "field": "otherMetadata" } */
  template <typename T_HeadersPayloadContent_otherMetadata_struct_setter = folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>>
  [[deprecated("Use `FOO.otherMetadata() = BAR` instead of `FOO.set_otherMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::apache::thrift::string_4852>& set_otherMetadata(T_HeadersPayloadContent_otherMetadata_struct_setter&& otherMetadata_) {
    otherMetadata_ref() = std::forward<T_HeadersPayloadContent_otherMetadata_struct_setter>(otherMetadata_);
    return __fbthrift_field_otherMetadata;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<HeadersPayloadContent>;
  friend void swap(HeadersPayloadContent& a, HeadersPayloadContent& b);
};

template <class Protocol_>
unsigned long HeadersPayloadContent::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "StreamHeadersPush", "kind": "struct" } */
class StreamHeadersPush final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 2;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::streamId,
    ::apache::thrift::ident::headersPayloadContent
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::i32_t,
    ::apache::thrift::type::struct_t<::apache::thrift::HeadersPayloadContent>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = StreamHeadersPush;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  StreamHeadersPush() :
      __fbthrift_field_streamId() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  StreamHeadersPush(apache::thrift::FragileConstructor, ::std::int32_t streamId__arg, ::apache::thrift::HeadersPayloadContent headersPayloadContent__arg);

  StreamHeadersPush(StreamHeadersPush&&) noexcept;

  StreamHeadersPush(const StreamHeadersPush& src);


  StreamHeadersPush& operator=(StreamHeadersPush&&) noexcept;
  StreamHeadersPush& operator=(const StreamHeadersPush& src);
 private:
  ::std::int32_t __fbthrift_field_streamId;
 private:
  ::apache::thrift::HeadersPayloadContent __fbthrift_field_headersPayloadContent;
 private:
  apache::thrift::detail::isset_bitset<2, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const StreamHeadersPush&) const;
  bool operator<(const StreamHeadersPush&) const;

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> streamId_ref() const& {
    return {this->__fbthrift_field_streamId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> streamId_ref() & {
    return {this->__fbthrift_field_streamId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> streamId_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_streamId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> streamId() const& {
    return {this->__fbthrift_field_streamId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> streamId() & {
    return {this->__fbthrift_field_streamId, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "streamId" } */
  template <typename..., typename fbthrift_T = ::std::int32_t>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> streamId() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_streamId), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> headersPayloadContent_ref() const& {
    return {this->__fbthrift_field_headersPayloadContent, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> headersPayloadContent_ref() & {
    return {this->__fbthrift_field_headersPayloadContent, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> headersPayloadContent_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_headersPayloadContent), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> headersPayloadContent() const& {
    return {this->__fbthrift_field_headersPayloadContent, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> headersPayloadContent() & {
    return {this->__fbthrift_field_headersPayloadContent, __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "headersPayloadContent" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::HeadersPayloadContent>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> headersPayloadContent() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_headersPayloadContent), __isset.at(1), __isset.bit(1)};
  }

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId().value()` instead of `FOO.get_streamId()`")]]
  const ::std::int32_t* get_streamId() const&;

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId().value()` instead of `FOO.get_streamId()`")]]
  ::std::int32_t* get_streamId() &;

  ::std::int32_t* get_streamId() && = delete;

  /** Glean { "field": "streamId" } */
  [[deprecated("Use `FOO.streamId() = BAR` instead of `FOO.set_streamId(BAR)`")]]
  ::std::int32_t& set_streamId(::std::int32_t streamId_);

  /** Glean { "field": "headersPayloadContent" } */
  [[deprecated("Use `FOO.headersPayloadContent().value()` instead of `FOO.get_headersPayloadContent()`")]]
  const ::apache::thrift::HeadersPayloadContent* get_headersPayloadContent() const&;

  /** Glean { "field": "headersPayloadContent" } */
  [[deprecated("Use `FOO.headersPayloadContent().value()` instead of `FOO.get_headersPayloadContent()`")]]
  ::apache::thrift::HeadersPayloadContent* get_headersPayloadContent() &;

  ::apache::thrift::HeadersPayloadContent* get_headersPayloadContent() && = delete;

  /** Glean { "field": "headersPayloadContent" } */
  template <typename T_StreamHeadersPush_headersPayloadContent_struct_setter = ::apache::thrift::HeadersPayloadContent>
  [[deprecated("Use `FOO.headersPayloadContent() = BAR` instead of `FOO.set_headersPayloadContent(BAR)`")]]
  ::apache::thrift::HeadersPayloadContent& set_headersPayloadContent(T_StreamHeadersPush_headersPayloadContent_struct_setter&& headersPayloadContent_) {
    headersPayloadContent_ref() = std::forward<T_StreamHeadersPush_headersPayloadContent_struct_setter>(headersPayloadContent_);
    return __fbthrift_field_headersPayloadContent;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<StreamHeadersPush>;
  friend void swap(StreamHeadersPush& a, StreamHeadersPush& b);
};

template <class Protocol_>
unsigned long StreamHeadersPush::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "TransportMetadataPush", "kind": "struct" } */
class TransportMetadataPush final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::transportMetadata
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::cpp_type<folly::F14NodeMap<::std::string, ::std::string>, ::apache::thrift::type::map<::apache::thrift::type::string_t, ::apache::thrift::type::string_t>>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = TransportMetadataPush;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  TransportMetadataPush();

  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  TransportMetadataPush(apache::thrift::FragileConstructor, folly::F14NodeMap<::std::string, ::std::string> transportMetadata__arg);

  TransportMetadataPush(TransportMetadataPush&&) noexcept;

  TransportMetadataPush(const TransportMetadataPush& src);


  TransportMetadataPush& operator=(TransportMetadataPush&&) noexcept;
  TransportMetadataPush& operator=(const TransportMetadataPush& src);

  ~TransportMetadataPush();

 private:
  folly::F14NodeMap<::std::string, ::std::string> __fbthrift_field_transportMetadata;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const TransportMetadataPush&) const;
  bool operator<(const TransportMetadataPush&) const;

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> transportMetadata_ref() const& {
    return {this->__fbthrift_field_transportMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> transportMetadata_ref() & {
    return {this->__fbthrift_field_transportMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> transportMetadata_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_transportMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> transportMetadata() const& {
    return {this->__fbthrift_field_transportMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> transportMetadata() & {
    return {this->__fbthrift_field_transportMetadata, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  template <typename..., typename fbthrift_T = folly::F14NodeMap<::std::string, ::std::string>>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> transportMetadata() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_transportMetadata), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "transportMetadata" } */
  [[deprecated("Use `FOO.transportMetadata().value()` instead of `FOO.get_transportMetadata()`")]]
  const folly::F14NodeMap<::std::string, ::std::string>* get_transportMetadata() const&;

  /** Glean { "field": "transportMetadata" } */
  [[deprecated("Use `FOO.transportMetadata().value()` instead of `FOO.get_transportMetadata()`")]]
  folly::F14NodeMap<::std::string, ::std::string>* get_transportMetadata() &;

  folly::F14NodeMap<::std::string, ::std::string>* get_transportMetadata() && = delete;

  /** Glean { "field": "transportMetadata" } */
  template <typename T_TransportMetadataPush_transportMetadata_struct_setter = folly::F14NodeMap<::std::string, ::std::string>>
  [[deprecated("Use `FOO.transportMetadata() = BAR` instead of `FOO.set_transportMetadata(BAR)`")]]
  folly::F14NodeMap<::std::string, ::std::string>& set_transportMetadata(T_TransportMetadataPush_transportMetadata_struct_setter&& transportMetadata_) {
    transportMetadata_ref() = std::forward<T_TransportMetadataPush_transportMetadata_struct_setter>(transportMetadata_);
    return __fbthrift_field_transportMetadata;
  }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<TransportMetadataPush>;
  friend void swap(TransportMetadataPush& a, TransportMetadataPush& b);
};

template <class Protocol_>
unsigned long TransportMetadataPush::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "DrainCompletePush", "kind": "struct" } */
class DrainCompletePush final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::drainCompleteCode
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::DrainCompleteCode>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = DrainCompletePush;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  DrainCompletePush() :
      __fbthrift_field_drainCompleteCode() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  DrainCompletePush(apache::thrift::FragileConstructor, ::apache::thrift::DrainCompleteCode drainCompleteCode__arg);

  DrainCompletePush(DrainCompletePush&&) = default;

  DrainCompletePush(const DrainCompletePush&) = default;


  DrainCompletePush& operator=(DrainCompletePush&&) = default;

  DrainCompletePush& operator=(const DrainCompletePush&) = default;
 private:
  ::apache::thrift::DrainCompleteCode __fbthrift_field_drainCompleteCode;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const DrainCompletePush&) const;
  bool operator<(const DrainCompletePush&) const;

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> drainCompleteCode_ref() const& {
    return {this->__fbthrift_field_drainCompleteCode, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> drainCompleteCode_ref() & {
    return {this->__fbthrift_field_drainCompleteCode, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> drainCompleteCode_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_drainCompleteCode), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> drainCompleteCode() const& {
    return {this->__fbthrift_field_drainCompleteCode, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> drainCompleteCode() & {
    return {this->__fbthrift_field_drainCompleteCode, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::DrainCompleteCode>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> drainCompleteCode() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_drainCompleteCode), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "drainCompleteCode" } */
  [[deprecated("Use `FOO.drainCompleteCode().value()` instead of `FOO.get_drainCompleteCode()`")]]
  const ::apache::thrift::DrainCompleteCode* get_drainCompleteCode() const&;

  /** Glean { "field": "drainCompleteCode" } */
  [[deprecated("Use `FOO.drainCompleteCode().value()` instead of `FOO.get_drainCompleteCode()`")]]
  ::apache::thrift::DrainCompleteCode* get_drainCompleteCode() &;

  ::apache::thrift::DrainCompleteCode* get_drainCompleteCode() && = delete;

  /** Glean { "field": "drainCompleteCode" } */
  [[deprecated("Use `FOO.drainCompleteCode() = BAR` instead of `FOO.set_drainCompleteCode(BAR)`")]]
  ::apache::thrift::DrainCompleteCode& set_drainCompleteCode(::apache::thrift::DrainCompleteCode drainCompleteCode_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<DrainCompletePush>;
  friend void swap(DrainCompletePush& a, DrainCompletePush& b);
};

template <class Protocol_>
unsigned long DrainCompletePush::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ServerPushMetadata", "kind": "union" } */
class ServerPushMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::setupResponse,
    ::apache::thrift::ident::streamHeadersPush,
    ::apache::thrift::ident::drainCompletePush
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::SetupResponse>,
    ::apache::thrift::type::struct_t<::apache::thrift::StreamHeadersPush>,
    ::apache::thrift::type::struct_t<::apache::thrift::DrainCompletePush>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ServerPushMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    setupResponse = 1,
    streamHeadersPush = 2,
    drainCompletePush = 3,
  } ;

  ServerPushMetadata()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  ServerPushMetadata(ServerPushMetadata&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::setupResponse:
      {
        set_setupResponse(std::move(rhs.value_.setupResponse));
        break;
      }
      case Type::streamHeadersPush:
      {
        set_streamHeadersPush(std::move(rhs.value_.streamHeadersPush));
        break;
      }
      case Type::drainCompletePush:
      {
        set_drainCompletePush(std::move(rhs.value_.drainCompletePush));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  ServerPushMetadata(const ServerPushMetadata& rhs);

  ServerPushMetadata& operator=(ServerPushMetadata&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::setupResponse:
      {
        set_setupResponse(std::move(rhs.value_.setupResponse));
        break;
      }
      case Type::streamHeadersPush:
      {
        set_streamHeadersPush(std::move(rhs.value_.streamHeadersPush));
        break;
      }
      case Type::drainCompletePush:
      {
        set_drainCompletePush(std::move(rhs.value_.drainCompletePush));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  ServerPushMetadata& operator=(const ServerPushMetadata& rhs);

  ~ServerPushMetadata();

  union storage_type {
    ::apache::thrift::SetupResponse setupResponse;
    ::apache::thrift::StreamHeadersPush streamHeadersPush;
    ::apache::thrift::DrainCompletePush drainCompletePush;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const ServerPushMetadata&) const;
  bool operator<(const ServerPushMetadata&) const;

  /** Glean { "field": "setupResponse" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::SetupResponse& set_setupResponse(::apache::thrift::SetupResponse const &t) {
    using T0 = ::apache::thrift::SetupResponse;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setupResponse);
    ::new (std::addressof(value_.setupResponse)) T(t);
    return value_.setupResponse;
  }

  /** Glean { "field": "setupResponse" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::SetupResponse& set_setupResponse(::apache::thrift::SetupResponse&& t) {
    using T0 = ::apache::thrift::SetupResponse;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setupResponse);
    ::new (std::addressof(value_.setupResponse)) T(std::move(t));
    return value_.setupResponse;
  }

  /** Glean { "field": "setupResponse" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::SetupResponse, T...>> ::apache::thrift::SetupResponse& set_setupResponse(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::setupResponse);
    ::new (std::addressof(value_.setupResponse)) ::apache::thrift::SetupResponse(std::forward<T>(t)...);
    return value_.setupResponse;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(::apache::thrift::StreamHeadersPush const &t) {
    using T0 = ::apache::thrift::StreamHeadersPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) T(t);
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(::apache::thrift::StreamHeadersPush&& t) {
    using T0 = ::apache::thrift::StreamHeadersPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) T(std::move(t));
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::StreamHeadersPush, T...>> ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) ::apache::thrift::StreamHeadersPush(std::forward<T>(t)...);
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "drainCompletePush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::DrainCompletePush& set_drainCompletePush(::apache::thrift::DrainCompletePush const &t) {
    using T0 = ::apache::thrift::DrainCompletePush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::drainCompletePush);
    ::new (std::addressof(value_.drainCompletePush)) T(t);
    return value_.drainCompletePush;
  }

  /** Glean { "field": "drainCompletePush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::DrainCompletePush& set_drainCompletePush(::apache::thrift::DrainCompletePush&& t) {
    using T0 = ::apache::thrift::DrainCompletePush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::drainCompletePush);
    ::new (std::addressof(value_.drainCompletePush)) T(std::move(t));
    return value_.drainCompletePush;
  }

  /** Glean { "field": "drainCompletePush" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::DrainCompletePush, T...>> ::apache::thrift::DrainCompletePush& set_drainCompletePush(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::drainCompletePush);
    ::new (std::addressof(value_.drainCompletePush)) ::apache::thrift::DrainCompletePush(std::forward<T>(t)...);
    return value_.drainCompletePush;
  }

  /** Glean { "field": "setupResponse" } */
  ::apache::thrift::SetupResponse const& get_setupResponse() const {
    if (getType() != Type::setupResponse) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.setupResponse;
  }

  /** Glean { "field": "streamHeadersPush" } */
  ::apache::thrift::StreamHeadersPush const& get_streamHeadersPush() const {
    if (getType() != Type::streamHeadersPush) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "drainCompletePush" } */
  ::apache::thrift::DrainCompletePush const& get_drainCompletePush() const {
    if (getType() != Type::drainCompletePush) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.drainCompletePush;
  }

  ::apache::thrift::SetupResponse& mutable_setupResponse() {
    assert(getType() == Type::setupResponse);
    return value_.setupResponse;
  }

  ::apache::thrift::StreamHeadersPush& mutable_streamHeadersPush() {
    assert(getType() == Type::streamHeadersPush);
    return value_.streamHeadersPush;
  }

  ::apache::thrift::DrainCompletePush& mutable_drainCompletePush() {
    assert(getType() == Type::drainCompletePush);
    return value_.drainCompletePush;
  }

  template <typename..., typename T = ::apache::thrift::SetupResponse>
  T move_setupResponse() {
    assert(getType() == Type::setupResponse);
    return std::move(value_.setupResponse);
  }

  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  T move_streamHeadersPush() {
    assert(getType() == Type::streamHeadersPush);
    return std::move(value_.streamHeadersPush);
  }

  template <typename..., typename T = ::apache::thrift::DrainCompletePush>
  T move_drainCompletePush() {
    assert(getType() == Type::drainCompletePush);
    return std::move(value_.drainCompletePush);
  }

  /** Glean { "field": "setupResponse" } */
  template <typename..., typename T = ::apache::thrift::SetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> setupResponse_ref() const& {
    return {value_.setupResponse, fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setupResponse" } */
  template <typename..., typename T = ::apache::thrift::SetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> setupResponse_ref() & {
    return {value_.setupResponse, fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setupResponse" } */
  template <typename..., typename T = ::apache::thrift::SetupResponse>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> setupResponse_ref() && {
    return {std::move(value_.setupResponse), fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setupResponse" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::SetupResponse&> setupResponse() const& {
    return {value_.setupResponse, fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setupResponse" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::SetupResponse&> setupResponse() & {
    return {value_.setupResponse, fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "setupResponse" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::SetupResponse&&> setupResponse() && {
    return {std::move(value_.setupResponse), fbthrift_type_, folly::to_underlying(Type::setupResponse), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> streamHeadersPush_ref() const& {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> streamHeadersPush_ref() & {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> streamHeadersPush_ref() && {
    return {std::move(value_.streamHeadersPush), fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::StreamHeadersPush&> streamHeadersPush() const& {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::StreamHeadersPush&> streamHeadersPush() & {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::StreamHeadersPush&&> streamHeadersPush() && {
    return {std::move(value_.streamHeadersPush), fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "drainCompletePush" } */
  template <typename..., typename T = ::apache::thrift::DrainCompletePush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> drainCompletePush_ref() const& {
    return {value_.drainCompletePush, fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "drainCompletePush" } */
  template <typename..., typename T = ::apache::thrift::DrainCompletePush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> drainCompletePush_ref() & {
    return {value_.drainCompletePush, fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "drainCompletePush" } */
  template <typename..., typename T = ::apache::thrift::DrainCompletePush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> drainCompletePush_ref() && {
    return {std::move(value_.drainCompletePush), fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "drainCompletePush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::DrainCompletePush&> drainCompletePush() const& {
    return {value_.drainCompletePush, fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "drainCompletePush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::DrainCompletePush&> drainCompletePush() & {
    return {value_.drainCompletePush, fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "drainCompletePush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::DrainCompletePush&&> drainCompletePush() && {
    return {std::move(value_.drainCompletePush), fbthrift_type_, folly::to_underlying(Type::drainCompletePush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ServerPushMetadata>;
  friend void swap(ServerPushMetadata& a, ServerPushMetadata& b);
};

template <class Protocol_>
unsigned long ServerPushMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "ClientPushMetadata", "kind": "union" } */
class ClientPushMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 3;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1,2,3};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::interactionTerminate,
    ::apache::thrift::ident::streamHeadersPush,
    ::apache::thrift::ident::transportMetadataPush
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::struct_t<::apache::thrift::InteractionTerminate>,
    ::apache::thrift::type::struct_t<::apache::thrift::StreamHeadersPush>,
    ::apache::thrift::type::struct_t<::apache::thrift::TransportMetadataPush>
  >;
  void __fbthrift_clear();
  void __fbthrift_destruct();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = ClientPushMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    true;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:
  enum class Type : int {
    __EMPTY__ = 0,
    interactionTerminate = 1,
    streamHeadersPush = 2,
    transportMetadataPush = 3,
  } ;

  ClientPushMetadata()
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {}

  ClientPushMetadata(ClientPushMetadata&& rhs) noexcept
      : fbthrift_type_(folly::to_underlying(Type::__EMPTY__)) {
    if (this == &rhs) { return; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        return;
      }
      case Type::interactionTerminate:
      {
        set_interactionTerminate(std::move(rhs.value_.interactionTerminate));
        break;
      }
      case Type::streamHeadersPush:
      {
        set_streamHeadersPush(std::move(rhs.value_.streamHeadersPush));
        break;
      }
      case Type::transportMetadataPush:
      {
        set_transportMetadataPush(std::move(rhs.value_.transportMetadataPush));
        break;
      }
      default:
      {
        assert(false);
        break;
      }
    }
    apache::thrift::clear(rhs);
  }

  ClientPushMetadata(const ClientPushMetadata& rhs);

  ClientPushMetadata& operator=(ClientPushMetadata&& rhs) noexcept {
    if (this == &rhs) { return *this; }
    switch (rhs.getType()) {
      case Type::__EMPTY__:
      {
        __fbthrift_clear();
        return *this;
      }
      case Type::interactionTerminate:
      {
        set_interactionTerminate(std::move(rhs.value_.interactionTerminate));
        break;
      }
      case Type::streamHeadersPush:
      {
        set_streamHeadersPush(std::move(rhs.value_.streamHeadersPush));
        break;
      }
      case Type::transportMetadataPush:
      {
        set_transportMetadataPush(std::move(rhs.value_.transportMetadataPush));
        break;
      }
      default:
      {
        assert(false);
        __fbthrift_clear();
      }
    }
    apache::thrift::clear(rhs);
    return *this;
  }

  ClientPushMetadata& operator=(const ClientPushMetadata& rhs);

  ~ClientPushMetadata();

  union storage_type {
    ::apache::thrift::InteractionTerminate interactionTerminate;
    ::apache::thrift::StreamHeadersPush streamHeadersPush;
    ::apache::thrift::TransportMetadataPush transportMetadataPush;

    storage_type() {}
    ~storage_type() {}
  } ;

  bool operator==(const ClientPushMetadata&) const;
  bool operator<(const ClientPushMetadata&) const;

  /** Glean { "field": "interactionTerminate" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::InteractionTerminate& set_interactionTerminate(::apache::thrift::InteractionTerminate const &t) {
    using T0 = ::apache::thrift::InteractionTerminate;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::interactionTerminate);
    ::new (std::addressof(value_.interactionTerminate)) T(t);
    return value_.interactionTerminate;
  }

  /** Glean { "field": "interactionTerminate" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::InteractionTerminate& set_interactionTerminate(::apache::thrift::InteractionTerminate&& t) {
    using T0 = ::apache::thrift::InteractionTerminate;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::interactionTerminate);
    ::new (std::addressof(value_.interactionTerminate)) T(std::move(t));
    return value_.interactionTerminate;
  }

  /** Glean { "field": "interactionTerminate" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::InteractionTerminate, T...>> ::apache::thrift::InteractionTerminate& set_interactionTerminate(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::interactionTerminate);
    ::new (std::addressof(value_.interactionTerminate)) ::apache::thrift::InteractionTerminate(std::forward<T>(t)...);
    return value_.interactionTerminate;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(::apache::thrift::StreamHeadersPush const &t) {
    using T0 = ::apache::thrift::StreamHeadersPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) T(t);
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(::apache::thrift::StreamHeadersPush&& t) {
    using T0 = ::apache::thrift::StreamHeadersPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) T(std::move(t));
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "streamHeadersPush" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::StreamHeadersPush, T...>> ::apache::thrift::StreamHeadersPush& set_streamHeadersPush(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::streamHeadersPush);
    ::new (std::addressof(value_.streamHeadersPush)) ::apache::thrift::StreamHeadersPush(std::forward<T>(t)...);
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "transportMetadataPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::TransportMetadataPush& set_transportMetadataPush(::apache::thrift::TransportMetadataPush const &t) {
    using T0 = ::apache::thrift::TransportMetadataPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::transportMetadataPush);
    ::new (std::addressof(value_.transportMetadataPush)) T(t);
    return value_.transportMetadataPush;
  }

  /** Glean { "field": "transportMetadataPush" } */
  template <typename... A> requires (sizeof...(A) == 0)
  ::apache::thrift::TransportMetadataPush& set_transportMetadataPush(::apache::thrift::TransportMetadataPush&& t) {
    using T0 = ::apache::thrift::TransportMetadataPush;
    using T = folly::type_t<T0, A...>;
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::transportMetadataPush);
    ::new (std::addressof(value_.transportMetadataPush)) T(std::move(t));
    return value_.transportMetadataPush;
  }

  /** Glean { "field": "transportMetadataPush" } */
  template<typename... T, typename = ::apache::thrift::safe_overload_t<::apache::thrift::TransportMetadataPush, T...>> ::apache::thrift::TransportMetadataPush& set_transportMetadataPush(T&&... t) {
    __fbthrift_clear();
    fbthrift_type_ = folly::to_underlying(Type::transportMetadataPush);
    ::new (std::addressof(value_.transportMetadataPush)) ::apache::thrift::TransportMetadataPush(std::forward<T>(t)...);
    return value_.transportMetadataPush;
  }

  /** Glean { "field": "interactionTerminate" } */
  ::apache::thrift::InteractionTerminate const& get_interactionTerminate() const {
    if (getType() != Type::interactionTerminate) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.interactionTerminate;
  }

  /** Glean { "field": "streamHeadersPush" } */
  ::apache::thrift::StreamHeadersPush const& get_streamHeadersPush() const {
    if (getType() != Type::streamHeadersPush) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.streamHeadersPush;
  }

  /** Glean { "field": "transportMetadataPush" } */
  ::apache::thrift::TransportMetadataPush const& get_transportMetadataPush() const {
    if (getType() != Type::transportMetadataPush) {
      ::apache::thrift::detail::throw_on_bad_union_field_access();
    }
    return value_.transportMetadataPush;
  }

  ::apache::thrift::InteractionTerminate& mutable_interactionTerminate() {
    assert(getType() == Type::interactionTerminate);
    return value_.interactionTerminate;
  }

  ::apache::thrift::StreamHeadersPush& mutable_streamHeadersPush() {
    assert(getType() == Type::streamHeadersPush);
    return value_.streamHeadersPush;
  }

  ::apache::thrift::TransportMetadataPush& mutable_transportMetadataPush() {
    assert(getType() == Type::transportMetadataPush);
    return value_.transportMetadataPush;
  }

  template <typename..., typename T = ::apache::thrift::InteractionTerminate>
  T move_interactionTerminate() {
    assert(getType() == Type::interactionTerminate);
    return std::move(value_.interactionTerminate);
  }

  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  T move_streamHeadersPush() {
    assert(getType() == Type::streamHeadersPush);
    return std::move(value_.streamHeadersPush);
  }

  template <typename..., typename T = ::apache::thrift::TransportMetadataPush>
  T move_transportMetadataPush() {
    assert(getType() == Type::transportMetadataPush);
    return std::move(value_.transportMetadataPush);
  }

  /** Glean { "field": "interactionTerminate" } */
  template <typename..., typename T = ::apache::thrift::InteractionTerminate>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> interactionTerminate_ref() const& {
    return {value_.interactionTerminate, fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "interactionTerminate" } */
  template <typename..., typename T = ::apache::thrift::InteractionTerminate>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> interactionTerminate_ref() & {
    return {value_.interactionTerminate, fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "interactionTerminate" } */
  template <typename..., typename T = ::apache::thrift::InteractionTerminate>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> interactionTerminate_ref() && {
    return {std::move(value_.interactionTerminate), fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "interactionTerminate" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::InteractionTerminate&> interactionTerminate() const& {
    return {value_.interactionTerminate, fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "interactionTerminate" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::InteractionTerminate&> interactionTerminate() & {
    return {value_.interactionTerminate, fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "interactionTerminate" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::InteractionTerminate&&> interactionTerminate() && {
    return {std::move(value_.interactionTerminate), fbthrift_type_, folly::to_underlying(Type::interactionTerminate), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> streamHeadersPush_ref() const& {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> streamHeadersPush_ref() & {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  template <typename..., typename T = ::apache::thrift::StreamHeadersPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> streamHeadersPush_ref() && {
    return {std::move(value_.streamHeadersPush), fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::StreamHeadersPush&> streamHeadersPush() const& {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::StreamHeadersPush&> streamHeadersPush() & {
    return {value_.streamHeadersPush, fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "streamHeadersPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::StreamHeadersPush&&> streamHeadersPush() && {
    return {std::move(value_.streamHeadersPush), fbthrift_type_, folly::to_underlying(Type::streamHeadersPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  /** Glean { "field": "transportMetadataPush" } */
  template <typename..., typename T = ::apache::thrift::TransportMetadataPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<const T&> transportMetadataPush_ref() const& {
    return {value_.transportMetadataPush, fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "transportMetadataPush" } */
  template <typename..., typename T = ::apache::thrift::TransportMetadataPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&> transportMetadataPush_ref() & {
    return {value_.transportMetadataPush, fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "transportMetadataPush" } */
  template <typename..., typename T = ::apache::thrift::TransportMetadataPush>
  FOLLY_ERASE ::apache::thrift::union_field_ref<T&&> transportMetadataPush_ref() && {
    return {std::move(value_.transportMetadataPush), fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "transportMetadataPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<const ::apache::thrift::TransportMetadataPush&> transportMetadataPush() const& {
    return {value_.transportMetadataPush, fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "transportMetadataPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::TransportMetadataPush&> transportMetadataPush() & {
    return {value_.transportMetadataPush, fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }

  /** Glean { "field": "transportMetadataPush" } */
  FOLLY_ERASE ::apache::thrift::union_field_ref<::apache::thrift::TransportMetadataPush&&> transportMetadataPush() && {
    return {std::move(value_.transportMetadataPush), fbthrift_type_, folly::to_underlying(Type::transportMetadataPush), this, ::apache::thrift::detail::union_field_ref_owner_vtable_for<decltype(*this)>};
  }
  Type getType() const { return static_cast<Type>(fbthrift_type_); }

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;
 protected:
  storage_type value_;
  std::underlying_type_t<Type> fbthrift_type_;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<ClientPushMetadata>;
  friend void swap(ClientPushMetadata& a, ClientPushMetadata& b);
};

template <class Protocol_>
unsigned long ClientPushMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


/** Glean {"file": "/opt/local/var/macports/build/fbthrift-07c1dc61/work/fbthrift-2025.08.25.00/thrift/lib/thrift/RpcMetadata.thrift", "name": "HeadersPayloadMetadata", "kind": "struct" } */
class HeadersPayloadMetadata final  {
 private:
  friend struct ::apache::thrift::detail::st::struct_private_access;
  template<class> friend struct ::apache::thrift::detail::invoke_reffer;

  //  used by a static_assert in the corresponding source
  static constexpr bool __fbthrift_cpp2_gen_json = true;
  static constexpr bool __fbthrift_cpp2_is_runtime_annotation = false;
  static std::string_view __fbthrift_get_field_name(::apache::thrift::FieldOrdinal ord);
  static std::string_view __fbthrift_get_class_name();
  template <class ...>
  FOLLY_ERASE static constexpr std::string_view __fbthrift_get_module_name() noexcept {
    return "RpcMetadata";
  }
  static constexpr std::size_t __fbthrift_num_fields = 1;

  static constexpr const int16_t __fbthrift_reflection_field_ids[] = {0,1};

  using __fbthrift_reflection_idents = folly::tag_t<
    ::apache::thrift::ident::compression
  >;

  using __fbthrift_reflection_type_tags = folly::tag_t<
    ::apache::thrift::type::enum_t<::apache::thrift::CompressionAlgorithm>
  >;
  void __fbthrift_clear();
  void __fbthrift_clear_terse_fields();
  bool __fbthrift_is_empty() const;

 public:
  using __fbthrift_cpp2_type = HeadersPayloadMetadata;
  static constexpr bool __fbthrift_cpp2_is_union =
    false;
  static constexpr bool __fbthrift_cpp2_uses_op_encode =
    false;


 public:

  HeadersPayloadMetadata() :
      __fbthrift_field_compression() {
  }
  // FragileConstructor for use in initialization lists only.
  [[deprecated("This constructor is deprecated")]]
  HeadersPayloadMetadata(apache::thrift::FragileConstructor, ::apache::thrift::CompressionAlgorithm compression__arg);

  HeadersPayloadMetadata(HeadersPayloadMetadata&&) = default;

  HeadersPayloadMetadata(const HeadersPayloadMetadata&) = default;


  HeadersPayloadMetadata& operator=(HeadersPayloadMetadata&&) = default;

  HeadersPayloadMetadata& operator=(const HeadersPayloadMetadata&) = default;
 private:
  ::apache::thrift::CompressionAlgorithm __fbthrift_field_compression;
 private:
  apache::thrift::detail::isset_bitset<1, apache::thrift::detail::IssetBitsetOption::Unpacked> __isset;

 public:

  bool operator==(const HeadersPayloadMetadata&) const;
  bool operator<(const HeadersPayloadMetadata&) const;

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression_ref() const& {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression_ref() & {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression_ref() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<const fbthrift_T&> compression() const& {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&> compression() & {
    return {this->__fbthrift_field_compression, __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  template <typename..., typename fbthrift_T = ::apache::thrift::CompressionAlgorithm>
  FOLLY_ERASE ::apache::thrift::optional_field_ref<fbthrift_T&&> compression() && {
    return {static_cast<fbthrift_T&&>(this->__fbthrift_field_compression), __isset.at(0), __isset.bit(0)};
  }

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  const ::apache::thrift::CompressionAlgorithm* get_compression() const&;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression().value()` instead of `FOO.get_compression()`")]]
  ::apache::thrift::CompressionAlgorithm* get_compression() &;

  ::apache::thrift::CompressionAlgorithm* get_compression() && = delete;

  /** Glean { "field": "compression" } */
  [[deprecated("Use `FOO.compression() = BAR` instead of `FOO.set_compression(BAR)`")]]
  ::apache::thrift::CompressionAlgorithm& set_compression(::apache::thrift::CompressionAlgorithm compression_);

  template <class Protocol_>
  unsigned long read(Protocol_* iprot);
  template <class Protocol_>
  uint32_t serializedSize(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t serializedSizeZC(Protocol_ const* prot_) const;
  template <class Protocol_>
  uint32_t write(Protocol_* prot_) const;

 private:
  template <class Protocol_>
  void readNoXfer(Protocol_* iprot);

  friend class ::apache::thrift::Cpp2Ops<HeadersPayloadMetadata>;
  friend void swap(HeadersPayloadMetadata& a, HeadersPayloadMetadata& b);
};

template <class Protocol_>
unsigned long HeadersPayloadMetadata::read(Protocol_* iprot) {
  auto _xferStart = iprot->getCursorPosition();
  readNoXfer(iprot);
  return iprot->getCursorPosition() - _xferStart;
}


} // namespace apache::thrift

namespace apache::thrift {

template <> struct TEnumDataStorage<::apache::thrift::CodecConfig::Type>;

template <> struct TEnumTraits<::apache::thrift::CodecConfig::Type> {
  using type = ::apache::thrift::CodecConfig::Type;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::zlibConfig; }
  static constexpr type max() { return type::lz4Config; }
};

template <> struct TEnumDataStorage<::apache::thrift::PayloadExceptionMetadata::Type>;

template <> struct TEnumTraits<::apache::thrift::PayloadExceptionMetadata::Type> {
  using type = ::apache::thrift::PayloadExceptionMetadata::Type;

  static constexpr std::size_t const size = 4;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::declaredException; }
  static constexpr type max() { return type::anyException; }
};

template <> struct TEnumDataStorage<::apache::thrift::PayloadMetadata::Type>;

template <> struct TEnumTraits<::apache::thrift::PayloadMetadata::Type> {
  using type = ::apache::thrift::PayloadMetadata::Type;

  static constexpr std::size_t const size = 2;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::responseMetadata; }
  static constexpr type max() { return type::exceptionMetadata; }
};

template <> struct TEnumDataStorage<::apache::thrift::CompressionSetupRequest::Type>;

template <> struct TEnumTraits<::apache::thrift::CompressionSetupRequest::Type> {
  using type = ::apache::thrift::CompressionSetupRequest::Type;

  static constexpr std::size_t const size = 1;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::custom; }
  static constexpr type max() { return type::custom; }
};

template <> struct TEnumDataStorage<::apache::thrift::CompressionSetupResponse::Type>;

template <> struct TEnumTraits<::apache::thrift::CompressionSetupResponse::Type> {
  using type = ::apache::thrift::CompressionSetupResponse::Type;

  static constexpr std::size_t const size = 1;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::custom; }
  static constexpr type max() { return type::custom; }
};

template <> struct TEnumDataStorage<::apache::thrift::ServerPushMetadata::Type>;

template <> struct TEnumTraits<::apache::thrift::ServerPushMetadata::Type> {
  using type = ::apache::thrift::ServerPushMetadata::Type;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::setupResponse; }
  static constexpr type max() { return type::drainCompletePush; }
};

template <> struct TEnumDataStorage<::apache::thrift::ClientPushMetadata::Type>;

template <> struct TEnumTraits<::apache::thrift::ClientPushMetadata::Type> {
  using type = ::apache::thrift::ClientPushMetadata::Type;

  static constexpr std::size_t const size = 3;
  static folly::Range<type const*> const values;
  static folly::Range<std::string_view const*> const names;

  static bool findName(type value, std::string_view* out) noexcept;
  static bool findValue(std::string_view name, type* out) noexcept;

  static char const* findName(type value) noexcept {
    std::string_view ret;
    (void)findName(value, &ret);
    return ret.data();
  }

  static constexpr type min() { return type::interactionTerminate; }
  static constexpr type max() { return type::transportMetadataPush; }
};
} // namespace apache::thrift

namespace apache::thrift::detail {
template <> struct TSchemaAssociation<::apache::thrift::Checksum, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xf7\x3a\x00\x56\x40\xa8\x88\xd6\x34\x21\xaa\xf7\xbe\x62\xe4\x77", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ZlibCompressionCodecConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x79\xba\x11\x58\xd5\xe3\x35\x86\x19\x26\x3f\xd6\xc1\x6b\xb8\x30", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ZstdCompressionCodecConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa2\x47\x90\x78\x95\xb1\x97\x82\xb4\xd0\xf1\xa1\x4c\x16\xf1\x66", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::Lz4CompressionCodecConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x66\x76\x13\x76\xfa\x08\x4d\x04\x02\x65\x1d\x39\x6b\xf7\xee\x9b", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CustomCompressionCodecConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x62\xb3\xcb\x72\x6b\xd7\x68\xb1\xf0\x8f\x31\xe7\xa0\x1d\x55\xb8", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CodecConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xb6\xb9\xbb\x16\x43\xb1\xeb\x37\x7c\xe7\x17\x8a\xf9\x2b\x9f\x1c", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CompressionConfig, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x19\xf5\xd0\xb8\x8c\x89\xf7\x2f\x33\x14\xce\xbe\x8a\x36\xf5\xb9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::NegotiationParameters, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x4c\xdd\x9e\x4d\x88\x4e\x57\x18\xa7\xee\x25\x4d\xe9\xa0\x39\xde", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::InteractionCreate, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x29\xc5\x77\x42\x17\x6a\xf4\xe2\x15\xee\x42\xc7\x29\x38\xe4\x55", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::InteractionTerminate, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x26\xe1\x99\x84\xc9\xe9\x6e\x8d\x33\x22\x4e\xeb\x21\x18\x80\x8e", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::FdMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x72\x0d\x9a\x91\xab\xb6\x9d\x61\xc0\x83\x02\x0c\x0d\xaa\xce\xbb", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::LoggingContext, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x6b\xe5\x25\x8a\x3f\x83\x85\x17\x91\x0c\x12\x5d\x6a\xed\x41\x6d", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::RequestRpcMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xac\x8c\x43\x6c\x26\xef\xd3\x44\xd1\x1a\x48\xda\x9a\xdb\xad\xe0", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ErrorClassification, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x68\xd5\xbb\xde\xc1\x8b\x55\xd1\x2b\xbc\x4c\x37\x19\x5b\x60\x6b", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadResponseMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x6e\x55\xfb\x99\x8d\x0c\xbe\x07\x9e\x5d\x3c\xe9\x89\x64\xa6\x30", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadDeclaredExceptionMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x3b\x7b\x91\xa8\x81\x9b\xf6\x02\x14\xe2\x59\x16\x82\x74\x75\x12", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadProxyExceptionMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x51\xe3\xbe\xff\x74\x6e\xb8\x98\x2f\xd7\x76\xfd\x02\xf9\xcf\x91", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadAppUnknownExceptionMetdata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x34\xac\xff\xc3\x78\xd2\x73\x21\xf8\xa6\xa7\x66\x7a\xe2\xb8\x6e", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadAnyExceptionMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x83\xed\x2c\x9c\x26\x17\x97\x76\xc3\x7a\x3e\xf1\xb6\xce\x2a\xfa", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadExceptionMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x40\xa3\x16\x53\xd2\x58\x15\x51\x1e\x03\x3f\x56\xd8\x87\x0b\x5d", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadExceptionMetadataBase, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x66\x12\x62\xc7\x3b\x12\x46\x67\x6f\x2d\x7f\x26\xf2\x11\xaf\x38", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::PayloadMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x3e\xd8\x75\xe3\x15\xc4\x81\x6e\x0b\xdb\x5b\x9a\x8c\x14\xd8\x39", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ProxiedPayloadMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x58\xe4\xc0\x22\x28\x0d\xfe\x8b\xa4\x93\xd3\xee\xb4\x6f\xdc\x6d", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::QueueMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x24\x6e\xf7\x49\xb6\xfb\x9b\xde\x55\x8b\xc2\x68\x5e\xd1\xb2\xa6", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ResponseRpcMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x00\x8b\x21\xa1\xae\x18\x0d\x09\x75\xc3\xce\xf7\x2c\x1c\x71\xda", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ResponseRpcError, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x4c\x74\x75\x4d\x6c\x28\xac\x41\x1d\xef\x8d\xe5\x2a\xbc\x70\x25", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::StreamRpcError, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x89\xb5\xdb\xb1\xe1\x36\xc6\xa1\x23\xcc\xec\x13\xac\x2a\x58\xb9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::StreamPayloadMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x86\x6a\x30\xeb\x0f\xc6\x3c\x6b\x59\xd4\x5b\xa3\xf9\x77\x2a\xef", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ClientMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa5\xfb\x90\xd4\x12\x65\xf6\x2f\x49\x90\x74\xbe\x4e\x67\x0d\x11", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CustomCompressionSetupRequest, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x8f\x71\x78\xeb\xe5\xb7\xa0\xef\x33\xd8\xbe\x36\xd4\x77\xbf\x9e", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CompressionSetupRequest, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xf3\x83\xd2\x1e\x94\x55\x68\xe2\xea\xd9\xdf\x8e\xf9\x9c\x14\xa1", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CustomCompressionSetupResponse, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xe8\x8d\x1b\xe1\x0f\xe2\x30\x70\xc6\x78\x50\xd6\x1f\x22\x2c\x55", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CompressionSetupResponse, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x1e\xb6\xbc\x66\x68\x9c\x30\x0c\xea\xc5\x77\x51\x24\xa9\xfd\xa9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::RequestSetupMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x50\x60\x3c\xdd\xa1\x96\x10\x38\x81\x42\x52\xb0\xaa\x82\x41\x44", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::SetupResponse, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x75\xd9\xa7\x03\x34\xec\x92\xac\xee\x1b\x5b\x49\xf0\x7f\xb4\xde", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::StreamHeadersPush, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa3\xe3\x11\x20\x9f\xa4\xe6\xae\xe0\xea\x1b\x57\x93\x33\xe5\x0c", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::TransportMetadataPush, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xaa\x1c\x3b\x9c\x09\x98\x70\xc7\x54\x15\xc6\x58\x4d\x42\x69\xbb", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::DrainCompletePush, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x15\xd2\xc0\xe8\x30\xe2\xcf\x3e\x44\xe7\xb1\x82\x9e\x56\xbf\x13", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ServerPushMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x84\x24\x85\x39\xf2\xe4\x59\x82\xa2\x56\x6f\x05\xfe\x74\x7b\x9d", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ClientPushMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xb9\xfd\x40\xed\xb3\x69\x17\x21\x45\x66\xb4\x64\xba\x6d\x4c\x1b", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::HeadersPayloadContent, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x56\x8b\x67\x3e\x41\x15\xf6\xd0\x3a\xf1\xa1\x71\xf7\x08\xc2\xd1", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::HeadersPayloadMetadata, false> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x44\x6d\x45\x65\x77\x2f\x09\xf5\x2b\xd7\x17\x1d\x1c\x20\x35\x5f", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ChecksumAlgorithm, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa7\xfa\xb6\x57\x60\xd7\x1d\x7b\x84\xe4\xd5\xc2\x5e\x46\x8f\x72", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ProtocolId, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x62\x6a\x91\x75\xb7\x21\xbe\x40\x09\x6d\x36\xf4\x98\x5a\x4d\xb5", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::RpcKind, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x42\x61\x0d\x7d\x01\x5c\x8d\xf3\xec\x03\x42\xe7\x47\x92\x34\x4c", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::RpcPriority, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa2\xaa\x03\x8e\xcc\xb7\xaf\x03\xf1\xc9\xbf\xe5\x25\x63\x74\xcb", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::TTransform, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x4a\x9d\xc5\xc5\x67\x9a\x88\x53\x57\x3f\x13\x0c\x80\xd4\xdf\xb5", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::CompressionAlgorithm, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x7c\xd1\xcb\x78\x9b\x3a\xbf\xcc\xc0\x6d\xbd\x9a\x04\xda\x71\x8c", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ZlibCompressionLevelPreset, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xbe\x32\xed\xb6\x3d\x35\x94\x57\xfd\xcd\xae\xc7\x81\x67\xbc\x41", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ZstdCompressionLevelPreset, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x2a\x42\xd8\x41\x9f\xdb\x30\xa5\x3f\xa2\x11\x22\x1e\x46\xcc\x8a", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::Lz4CompressionLevelPreset, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x6c\xdc\xfa\x5e\x12\x53\xb0\x3b\x46\x34\xb5\xc4\x4e\xa9\x92\x63", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ErrorKind, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xfb\x0b\x10\x1b\xb3\x3d\x41\xad\x79\xaf\x64\x2d\x70\x55\x7e\x9b", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ErrorBlame, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x1c\x3c\x31\x85\xc7\x78\x6e\x03\xc0\x15\x39\x0b\xf7\x27\xe2\x7a", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ErrorSafety, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x91\x33\x15\x48\x5e\xe8\xe2\xfa\x99\xcf\x9d\xf8\x54\x36\xe5\x15", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ResponseRpcErrorCategory, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x68\x62\x71\x7a\x99\xe7\xb9\x37\x7c\x38\x8d\xe2\xca\x6c\x44\x66", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::ResponseRpcErrorCode, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x98\xe5\x6e\xb1\x6c\x33\x85\x3f\xa2\xdc\xc2\xda\x06\x68\x22\xe9", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::StreamRpcErrorCode, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x85\x03\x6d\x54\x58\xad\xbd\x91\x5d\xc3\x7b\x7a\x87\x81\xdb\x49", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::InterfaceKind, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\xa6\x9c\xac\x49\xd4\x63\x24\x63\x82\x4c\x49\x82\x07\xf5\xa7\x7f", 16};
};
template <> struct TSchemaAssociation<::apache::thrift::DrainCompleteCode, true> {
  static ::folly::Range<const ::std::string_view*>(*bundle)();
  static constexpr int64_t programId = 5147233637136447415;
  static constexpr ::std::string_view definitionKey = {"\x64\xae\x10\x87\xdb\x53\x8e\x7b\x16\x14\x6d\xbe\xb8\xfa\x04\xf7", 16};
};
} // namespace apache::thrift::detail
