/**
 * Autogenerated by Thrift for /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_devel_fbthrift/fbthrift/work/fbthrift-2024.01.08.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_data_h.h>

#include "thrift/lib/thrift/gen-cpp2/RpcMetadata_types.h"

namespace apache { namespace thrift {

template <> struct TEnumDataStorage<::apache::thrift::ProtocolId> {
  using type = ::apache::thrift::ProtocolId;
  static constexpr const std::size_t size = 2;
  static constexpr std::array<type, size> values = {{
      type::BINARY,
      type::COMPACT,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "BINARY",
      "COMPACT",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::RpcKind> {
  using type = ::apache::thrift::RpcKind;
  static constexpr const std::size_t size = 4;
  static constexpr std::array<type, size> values = {{
      type::SINGLE_REQUEST_SINGLE_RESPONSE,
      type::SINGLE_REQUEST_NO_RESPONSE,
      type::SINGLE_REQUEST_STREAMING_RESPONSE,
      type::SINK,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "SINGLE_REQUEST_SINGLE_RESPONSE",
      "SINGLE_REQUEST_NO_RESPONSE",
      "SINGLE_REQUEST_STREAMING_RESPONSE",
      "SINK",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::RpcPriority> {
  using type = ::apache::thrift::RpcPriority;
  static constexpr const std::size_t size = 6;
  static constexpr std::array<type, size> values = {{
      type::HIGH_IMPORTANT,
      type::HIGH,
      type::IMPORTANT,
      type::NORMAL,
      type::BEST_EFFORT,
      type::N_PRIORITIES,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "HIGH_IMPORTANT",
      "HIGH",
      "IMPORTANT",
      "NORMAL",
      "BEST_EFFORT",
      "N_PRIORITIES",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::CompressionAlgorithm> {
  using type = ::apache::thrift::CompressionAlgorithm;
  static constexpr const std::size_t size = 3;
  static constexpr std::array<type, size> values = {{
      type::NONE,
      type::ZLIB,
      type::ZSTD,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "NONE",
      "ZLIB",
      "ZSTD",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ErrorKind> {
  using type = ::apache::thrift::ErrorKind;
  static constexpr const std::size_t size = 4;
  static constexpr std::array<type, size> values = {{
      type::UNSPECIFIED,
      type::TRANSIENT,
      type::STATEFUL,
      type::PERMANENT,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "UNSPECIFIED",
      "TRANSIENT",
      "STATEFUL",
      "PERMANENT",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ErrorBlame> {
  using type = ::apache::thrift::ErrorBlame;
  static constexpr const std::size_t size = 3;
  static constexpr std::array<type, size> values = {{
      type::UNSPECIFIED,
      type::SERVER,
      type::CLIENT,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "UNSPECIFIED",
      "SERVER",
      "CLIENT",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ErrorSafety> {
  using type = ::apache::thrift::ErrorSafety;
  static constexpr const std::size_t size = 2;
  static constexpr std::array<type, size> values = {{
      type::UNSPECIFIED,
      type::SAFE,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "UNSPECIFIED",
      "SAFE",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ResponseRpcErrorCategory> {
  using type = ::apache::thrift::ResponseRpcErrorCategory;
  static constexpr const std::size_t size = 4;
  static constexpr std::array<type, size> values = {{
      type::INTERNAL_ERROR,
      type::INVALID_REQUEST,
      type::LOADSHEDDING,
      type::SHUTDOWN,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "INTERNAL_ERROR",
      "INVALID_REQUEST",
      "LOADSHEDDING",
      "SHUTDOWN",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ResponseRpcErrorCode> {
  using type = ::apache::thrift::ResponseRpcErrorCode;
  static constexpr const std::size_t size = 18;
  static constexpr std::array<type, size> values = {{
      type::UNKNOWN,
      type::OVERLOAD,
      type::TASK_EXPIRED,
      type::QUEUE_OVERLOADED,
      type::SHUTDOWN,
      type::INJECTED_FAILURE,
      type::REQUEST_PARSING_FAILURE,
      type::QUEUE_TIMEOUT,
      type::RESPONSE_TOO_BIG,
      type::WRONG_RPC_KIND,
      type::UNKNOWN_METHOD,
      type::CHECKSUM_MISMATCH,
      type::INTERRUPTION,
      type::APP_OVERLOAD,
      type::UNKNOWN_INTERACTION_ID,
      type::INTERACTION_CONSTRUCTOR_ERROR,
      type::UNIMPLEMENTED_METHOD,
      type::TENANT_QUOTA_EXCEEDED,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "UNKNOWN",
      "OVERLOAD",
      "TASK_EXPIRED",
      "QUEUE_OVERLOADED",
      "SHUTDOWN",
      "INJECTED_FAILURE",
      "REQUEST_PARSING_FAILURE",
      "QUEUE_TIMEOUT",
      "RESPONSE_TOO_BIG",
      "WRONG_RPC_KIND",
      "UNKNOWN_METHOD",
      "CHECKSUM_MISMATCH",
      "INTERRUPTION",
      "APP_OVERLOAD",
      "UNKNOWN_INTERACTION_ID",
      "INTERACTION_CONSTRUCTOR_ERROR",
      "UNIMPLEMENTED_METHOD",
      "TENANT_QUOTA_EXCEEDED",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::StreamRpcErrorCode> {
  using type = ::apache::thrift::StreamRpcErrorCode;
  static constexpr const std::size_t size = 3;
  static constexpr std::array<type, size> values = {{
      type::UNKNOWN,
      type::CREDIT_TIMEOUT,
      type::CHUNK_TIMEOUT,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "UNKNOWN",
      "CREDIT_TIMEOUT",
      "CHUNK_TIMEOUT",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::InterfaceKind> {
  using type = ::apache::thrift::InterfaceKind;
  static constexpr const std::size_t size = 4;
  static constexpr std::array<type, size> values = {{
      type::USER,
      type::DEBUGGING,
      type::MONITORING,
      type::PROFILING,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "USER",
      "DEBUGGING",
      "MONITORING",
      "PROFILING",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::DrainCompleteCode> {
  using type = ::apache::thrift::DrainCompleteCode;
  static constexpr const std::size_t size = 1;
  static constexpr std::array<type, size> values = {{
      type::EXCEEDED_INGRESS_MEM_LIMIT,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "EXCEEDED_INGRESS_MEM_LIMIT",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::CodecConfig::Type> {
  using type = ::apache::thrift::CodecConfig::Type;
  static constexpr const std::size_t size = 2;
  static constexpr std::array<type, size> values = {{
      type::zlibConfig,
      type::zstdConfig,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "zlibConfig",
      "zstdConfig",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::PayloadExceptionMetadata::Type> {
  using type = ::apache::thrift::PayloadExceptionMetadata::Type;
  static constexpr const std::size_t size = 4;
  static constexpr std::array<type, size> values = {{
      type::declaredException,
      type::DEPRECATED_proxyException,
      type::appUnknownException,
      type::anyException,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "declaredException",
      "DEPRECATED_proxyException",
      "appUnknownException",
      "anyException",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::PayloadMetadata::Type> {
  using type = ::apache::thrift::PayloadMetadata::Type;
  static constexpr const std::size_t size = 2;
  static constexpr std::array<type, size> values = {{
      type::responseMetadata,
      type::exceptionMetadata,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "responseMetadata",
      "exceptionMetadata",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ServerPushMetadata::Type> {
  using type = ::apache::thrift::ServerPushMetadata::Type;
  static constexpr const std::size_t size = 3;
  static constexpr std::array<type, size> values = {{
      type::setupResponse,
      type::streamHeadersPush,
      type::drainCompletePush,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "setupResponse",
      "streamHeadersPush",
      "drainCompletePush",
  }};
};

template <> struct TEnumDataStorage<::apache::thrift::ClientPushMetadata::Type> {
  using type = ::apache::thrift::ClientPushMetadata::Type;
  static constexpr const std::size_t size = 3;
  static constexpr std::array<type, size> values = {{
      type::interactionTerminate,
      type::streamHeadersPush,
      type::transportMetadataPush,
  }};
  static constexpr std::array<folly::StringPiece, size> names = {{
      "interactionTerminate",
      "streamHeadersPush",
      "transportMetadataPush",
  }};
};

template <> struct TStructDataStorage<::apache::thrift::ZlibCompressionCodecConfig> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ZstdCompressionCodecConfig> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::CodecConfig> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::CompressionConfig> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::NegotiationParameters> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::InteractionCreate> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::InteractionTerminate> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::FdMetadata> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::LoggingContext> {
  static constexpr const std::size_t fields_size = 4;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::RequestRpcMetadata> {
  static constexpr const std::size_t fields_size = 19;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ErrorClassification> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadResponseMetadata> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadDeclaredExceptionMetadata> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadProxyExceptionMetadata> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadProxiedExceptionMetadata> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadAppUnknownExceptionMetdata> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadAnyExceptionMetadata> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadExceptionMetadata> {
  static constexpr const std::size_t fields_size = 4;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadExceptionMetadataBase> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::PayloadMetadata> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ProxiedPayloadMetadata> {
  static constexpr const std::size_t fields_size = 0;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::QueueMetadata> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ResponseRpcMetadata> {
  static constexpr const std::size_t fields_size = 10;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ResponseRpcError> {
  static constexpr const std::size_t fields_size = 5;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::StreamRpcError> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::StreamPayloadMetadata> {
  static constexpr const std::size_t fields_size = 4;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ClientMetadata> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::RequestSetupMetadata> {
  static constexpr const std::size_t fields_size = 9;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::SetupResponse> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::StreamHeadersPush> {
  static constexpr const std::size_t fields_size = 2;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::TransportMetadataPush> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::DrainCompletePush> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ServerPushMetadata> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::ClientPushMetadata> {
  static constexpr const std::size_t fields_size = 3;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::HeadersPayloadContent> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

template <> struct TStructDataStorage<::apache::thrift::HeadersPayloadMetadata> {
  static constexpr const std::size_t fields_size = 1;
  static const folly::StringPiece name;
  static const std::array<folly::StringPiece, fields_size> fields_names;
  static const std::array<int16_t, fields_size> fields_ids;
  static const std::array<protocol::TType, fields_size> fields_types;

 private:
  // The following fields describe internal storage metadata, and are private to
  // prevent user logic from accessing them, but they can be inspected by
  // debuggers.
  static const std::array<folly::StringPiece, fields_size> storage_names;
  // -1 if the field has no isset.
  static const std::array<int, fields_size> isset_indexes;
};

}} // apache::thrift
