// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: rpc_types.proto

#ifndef PROTOBUF_rpc_5ftypes_2eproto__INCLUDED
#define PROTOBUF_rpc_5ftypes_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2006000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include "global_extensions/method_options.pb.h"  // IWYU pragma: export
#include "global_extensions/service_options.pb.h"  // IWYU pragma: export
#include "global_extensions/field_options.pb.h"  // IWYU pragma: export
#include "Define.h"
// @@protoc_insertion_point(includes)

namespace bgs {
namespace protocol {

// Internal implementation detail -- do not call these.
void protobuf_AddDesc_rpc_5ftypes_2eproto();
void protobuf_AssignDesc_rpc_5ftypes_2eproto();
void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

class NO_RESPONSE;
class Address;
class ProcessId;
class ObjectAddress;
class NoData;
class ErrorInfo;
class TraceInfo;
class Header;

enum TraceInfo_Sampling {
  TraceInfo_Sampling_YES = 0,
  TraceInfo_Sampling_NO = 1,
  TraceInfo_Sampling_DEFER = 2
};
bool TraceInfo_Sampling_IsValid(int value);
const TraceInfo_Sampling TraceInfo_Sampling_Sampling_MIN = TraceInfo_Sampling_YES;
const TraceInfo_Sampling TraceInfo_Sampling_Sampling_MAX = TraceInfo_Sampling_DEFER;
const int TraceInfo_Sampling_Sampling_ARRAYSIZE = TraceInfo_Sampling_Sampling_MAX + 1;

const ::google::protobuf::EnumDescriptor* TraceInfo_Sampling_descriptor();
inline const ::std::string& TraceInfo_Sampling_Name(TraceInfo_Sampling value) {
  return ::google::protobuf::internal::NameOfEnum(
    TraceInfo_Sampling_descriptor(), value);
}
inline bool TraceInfo_Sampling_Parse(
    const ::std::string& name, TraceInfo_Sampling* value) {
  return ::google::protobuf::internal::ParseNamedEnum<TraceInfo_Sampling>(
    TraceInfo_Sampling_descriptor(), name, value);
}
// ===================================================================

class NO_RESPONSE : public ::google::protobuf::Message {
 public:
  NO_RESPONSE();
  virtual ~NO_RESPONSE();

  NO_RESPONSE(const NO_RESPONSE& from);

  inline NO_RESPONSE& operator=(const NO_RESPONSE& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const NO_RESPONSE& default_instance();

  void Swap(NO_RESPONSE* other);

  // implements Message ----------------------------------------------

  NO_RESPONSE* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const NO_RESPONSE& from);
  void MergeFrom(const NO_RESPONSE& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:bgs.protocol.NO_RESPONSE)
 private:

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static NO_RESPONSE* default_instance_;
};
// -------------------------------------------------------------------

class Address : public ::google::protobuf::Message {
 public:
  Address();
  virtual ~Address();

  Address(const Address& from);

  inline Address& operator=(const Address& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const Address& default_instance();

  void Swap(Address* other);

  // implements Message ----------------------------------------------

  Address* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Address& from);
  void MergeFrom(const Address& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required string address = 1;
  inline bool has_address() const;
  inline void clear_address();
  static const int kAddressFieldNumber = 1;
  inline const ::std::string& address() const;
  inline void set_address(const ::std::string& value);
  inline void set_address(const char* value);
  inline void set_address(const char* value, size_t size);
  inline ::std::string* mutable_address();
  inline ::std::string* release_address();
  inline void set_allocated_address(::std::string* address);

  // optional uint32 port = 2;
  inline bool has_port() const;
  inline void clear_port();
  static const int kPortFieldNumber = 2;
  inline ::google::protobuf::uint32 port() const;
  inline void set_port(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.Address)
 private:
  inline void set_has_address();
  inline void clear_has_address();
  inline void set_has_port();
  inline void clear_has_port();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::std::string* address_;
  ::google::protobuf::uint32 port_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static Address* default_instance_;
};
// -------------------------------------------------------------------

class ProcessId : public ::google::protobuf::Message {
 public:
  ProcessId();
  virtual ~ProcessId();

  ProcessId(const ProcessId& from);

  inline ProcessId& operator=(const ProcessId& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const ProcessId& default_instance();

  void Swap(ProcessId* other);

  // implements Message ----------------------------------------------

  ProcessId* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const ProcessId& from);
  void MergeFrom(const ProcessId& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required uint32 label = 1;
  inline bool has_label() const;
  inline void clear_label();
  static const int kLabelFieldNumber = 1;
  inline ::google::protobuf::uint32 label() const;
  inline void set_label(::google::protobuf::uint32 value);

  // required uint32 epoch = 2;
  inline bool has_epoch() const;
  inline void clear_epoch();
  static const int kEpochFieldNumber = 2;
  inline ::google::protobuf::uint32 epoch() const;
  inline void set_epoch(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.ProcessId)
 private:
  inline void set_has_label();
  inline void clear_has_label();
  inline void set_has_epoch();
  inline void clear_has_epoch();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::google::protobuf::uint32 label_;
  ::google::protobuf::uint32 epoch_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static ProcessId* default_instance_;
};
// -------------------------------------------------------------------

class ObjectAddress : public ::google::protobuf::Message {
 public:
  ObjectAddress();
  virtual ~ObjectAddress();

  ObjectAddress(const ObjectAddress& from);

  inline ObjectAddress& operator=(const ObjectAddress& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const ObjectAddress& default_instance();

  void Swap(ObjectAddress* other);

  // implements Message ----------------------------------------------

  ObjectAddress* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const ObjectAddress& from);
  void MergeFrom(const ObjectAddress& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required .bgs.protocol.ProcessId host = 1;
  inline bool has_host() const;
  inline void clear_host();
  static const int kHostFieldNumber = 1;
  inline const ::bgs::protocol::ProcessId& host() const;
  inline ::bgs::protocol::ProcessId* mutable_host();
  inline ::bgs::protocol::ProcessId* release_host();
  inline void set_allocated_host(::bgs::protocol::ProcessId* host);

  // optional uint64 object_id = 2 [default = 0];
  inline bool has_object_id() const;
  inline void clear_object_id();
  static const int kObjectIdFieldNumber = 2;
  inline ::google::protobuf::uint64 object_id() const;
  inline void set_object_id(::google::protobuf::uint64 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.ObjectAddress)
 private:
  inline void set_has_host();
  inline void clear_has_host();
  inline void set_has_object_id();
  inline void clear_has_object_id();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::ProcessId* host_;
  ::google::protobuf::uint64 object_id_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static ObjectAddress* default_instance_;
};
// -------------------------------------------------------------------

class NoData : public ::google::protobuf::Message {
 public:
  NoData();
  virtual ~NoData();

  NoData(const NoData& from);

  inline NoData& operator=(const NoData& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const NoData& default_instance();

  void Swap(NoData* other);

  // implements Message ----------------------------------------------

  NoData* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const NoData& from);
  void MergeFrom(const NoData& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:bgs.protocol.NoData)
 private:

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static NoData* default_instance_;
};
// -------------------------------------------------------------------

class ErrorInfo : public ::google::protobuf::Message {
 public:
  ErrorInfo();
  virtual ~ErrorInfo();

  ErrorInfo(const ErrorInfo& from);

  inline ErrorInfo& operator=(const ErrorInfo& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const ErrorInfo& default_instance();

  void Swap(ErrorInfo* other);

  // implements Message ----------------------------------------------

  ErrorInfo* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const ErrorInfo& from);
  void MergeFrom(const ErrorInfo& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required .bgs.protocol.ObjectAddress object_address = 1;
  inline bool has_object_address() const;
  inline void clear_object_address();
  static const int kObjectAddressFieldNumber = 1;
  inline const ::bgs::protocol::ObjectAddress& object_address() const;
  inline ::bgs::protocol::ObjectAddress* mutable_object_address();
  inline ::bgs::protocol::ObjectAddress* release_object_address();
  inline void set_allocated_object_address(::bgs::protocol::ObjectAddress* object_address);

  // required uint32 status = 2;
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 2;
  inline ::google::protobuf::uint32 status() const;
  inline void set_status(::google::protobuf::uint32 value);

  // required uint32 service_hash = 3;
  inline bool has_service_hash() const;
  inline void clear_service_hash();
  static const int kServiceHashFieldNumber = 3;
  inline ::google::protobuf::uint32 service_hash() const;
  inline void set_service_hash(::google::protobuf::uint32 value);

  // required uint32 method_id = 4;
  inline bool has_method_id() const;
  inline void clear_method_id();
  static const int kMethodIdFieldNumber = 4;
  inline ::google::protobuf::uint32 method_id() const;
  inline void set_method_id(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.ErrorInfo)
 private:
  inline void set_has_object_address();
  inline void clear_has_object_address();
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_service_hash();
  inline void clear_has_service_hash();
  inline void set_has_method_id();
  inline void clear_has_method_id();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::ObjectAddress* object_address_;
  ::google::protobuf::uint32 status_;
  ::google::protobuf::uint32 service_hash_;
  ::google::protobuf::uint32 method_id_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static ErrorInfo* default_instance_;
};
// -------------------------------------------------------------------

class TraceInfo : public ::google::protobuf::Message {
 public:
  TraceInfo();
  virtual ~TraceInfo();

  TraceInfo(const TraceInfo& from);

  inline TraceInfo& operator=(const TraceInfo& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const TraceInfo& default_instance();

  void Swap(TraceInfo* other);

  // implements Message ----------------------------------------------

  TraceInfo* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const TraceInfo& from);
  void MergeFrom(const TraceInfo& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  typedef TraceInfo_Sampling Sampling;
  static const Sampling YES = TraceInfo_Sampling_YES;
  static const Sampling NO = TraceInfo_Sampling_NO;
  static const Sampling DEFER = TraceInfo_Sampling_DEFER;
  static inline bool Sampling_IsValid(int value) {
    return TraceInfo_Sampling_IsValid(value);
  }
  static const Sampling Sampling_MIN =
    TraceInfo_Sampling_Sampling_MIN;
  static const Sampling Sampling_MAX =
    TraceInfo_Sampling_Sampling_MAX;
  static const int Sampling_ARRAYSIZE =
    TraceInfo_Sampling_Sampling_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  Sampling_descriptor() {
    return TraceInfo_Sampling_descriptor();
  }
  static inline const ::std::string& Sampling_Name(Sampling value) {
    return TraceInfo_Sampling_Name(value);
  }
  static inline bool Sampling_Parse(const ::std::string& name,
      Sampling* value) {
    return TraceInfo_Sampling_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  // optional string session_id = 1;
  inline bool has_session_id() const;
  inline void clear_session_id();
  static const int kSessionIdFieldNumber = 1;
  inline const ::std::string& session_id() const;
  inline void set_session_id(const ::std::string& value);
  inline void set_session_id(const char* value);
  inline void set_session_id(const char* value, size_t size);
  inline ::std::string* mutable_session_id();
  inline ::std::string* release_session_id();
  inline void set_allocated_session_id(::std::string* session_id);

  // optional string trace_id = 2;
  inline bool has_trace_id() const;
  inline void clear_trace_id();
  static const int kTraceIdFieldNumber = 2;
  inline const ::std::string& trace_id() const;
  inline void set_trace_id(const ::std::string& value);
  inline void set_trace_id(const char* value);
  inline void set_trace_id(const char* value, size_t size);
  inline ::std::string* mutable_trace_id();
  inline ::std::string* release_trace_id();
  inline void set_allocated_trace_id(::std::string* trace_id);

  // optional string span_id = 3;
  inline bool has_span_id() const;
  inline void clear_span_id();
  static const int kSpanIdFieldNumber = 3;
  inline const ::std::string& span_id() const;
  inline void set_span_id(const ::std::string& value);
  inline void set_span_id(const char* value);
  inline void set_span_id(const char* value, size_t size);
  inline ::std::string* mutable_span_id();
  inline ::std::string* release_span_id();
  inline void set_allocated_span_id(::std::string* span_id);

  // optional string parent_span_id = 4;
  inline bool has_parent_span_id() const;
  inline void clear_parent_span_id();
  static const int kParentSpanIdFieldNumber = 4;
  inline const ::std::string& parent_span_id() const;
  inline void set_parent_span_id(const ::std::string& value);
  inline void set_parent_span_id(const char* value);
  inline void set_parent_span_id(const char* value, size_t size);
  inline ::std::string* mutable_parent_span_id();
  inline ::std::string* release_parent_span_id();
  inline void set_allocated_parent_span_id(::std::string* parent_span_id);

  // optional .bgs.protocol.TraceInfo.Sampling sampling = 5 [default = DEFER];
  inline bool has_sampling() const;
  inline void clear_sampling();
  static const int kSamplingFieldNumber = 5;
  inline ::bgs::protocol::TraceInfo_Sampling sampling() const;
  inline void set_sampling(::bgs::protocol::TraceInfo_Sampling value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.TraceInfo)
 private:
  inline void set_has_session_id();
  inline void clear_has_session_id();
  inline void set_has_trace_id();
  inline void clear_has_trace_id();
  inline void set_has_span_id();
  inline void clear_has_span_id();
  inline void set_has_parent_span_id();
  inline void clear_has_parent_span_id();
  inline void set_has_sampling();
  inline void clear_has_sampling();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::std::string* session_id_;
  ::std::string* trace_id_;
  ::std::string* span_id_;
  ::std::string* parent_span_id_;
  int sampling_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static TraceInfo* default_instance_;
};
// -------------------------------------------------------------------

class Header : public ::google::protobuf::Message {
 public:
  Header();
  virtual ~Header();

  Header(const Header& from);

  inline Header& operator=(const Header& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const Header& default_instance();

  void Swap(Header* other);

  // implements Message ----------------------------------------------

  Header* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Header& from);
  void MergeFrom(const Header& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required uint32 service_id = 1;
  inline bool has_service_id() const;
  inline void clear_service_id();
  static const int kServiceIdFieldNumber = 1;
  inline ::google::protobuf::uint32 service_id() const;
  inline void set_service_id(::google::protobuf::uint32 value);

  // optional uint32 method_id = 2;
  inline bool has_method_id() const;
  inline void clear_method_id();
  static const int kMethodIdFieldNumber = 2;
  inline ::google::protobuf::uint32 method_id() const;
  inline void set_method_id(::google::protobuf::uint32 value);

  // required uint32 token = 3;
  inline bool has_token() const;
  inline void clear_token();
  static const int kTokenFieldNumber = 3;
  inline ::google::protobuf::uint32 token() const;
  inline void set_token(::google::protobuf::uint32 value);

  // optional uint64 object_id = 4 [default = 0];
  inline bool has_object_id() const;
  inline void clear_object_id();
  static const int kObjectIdFieldNumber = 4;
  inline ::google::protobuf::uint64 object_id() const;
  inline void set_object_id(::google::protobuf::uint64 value);

  // optional uint32 size = 5 [default = 0];
  inline bool has_size() const;
  inline void clear_size();
  static const int kSizeFieldNumber = 5;
  inline ::google::protobuf::uint32 size() const;
  inline void set_size(::google::protobuf::uint32 value);

  // optional uint32 status = 6 [default = 0];
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 6;
  inline ::google::protobuf::uint32 status() const;
  inline void set_status(::google::protobuf::uint32 value);

  // repeated .bgs.protocol.ErrorInfo error = 7;
  inline int error_size() const;
  inline void clear_error();
  static const int kErrorFieldNumber = 7;
  inline const ::bgs::protocol::ErrorInfo& error(int index) const;
  inline ::bgs::protocol::ErrorInfo* mutable_error(int index);
  inline ::bgs::protocol::ErrorInfo* add_error();
  inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ErrorInfo >&
      error() const;
  inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ErrorInfo >*
      mutable_error();

  // optional uint64 timeout = 8;
  inline bool has_timeout() const;
  inline void clear_timeout();
  static const int kTimeoutFieldNumber = 8;
  inline ::google::protobuf::uint64 timeout() const;
  inline void set_timeout(::google::protobuf::uint64 value);

  // optional bool is_response = 9;
  inline bool has_is_response() const;
  inline void clear_is_response();
  static const int kIsResponseFieldNumber = 9;
  inline bool is_response() const;
  inline void set_is_response(bool value);

  // repeated .bgs.protocol.ProcessId forward_targets = 10;
  inline int forward_targets_size() const;
  inline void clear_forward_targets();
  static const int kForwardTargetsFieldNumber = 10;
  inline const ::bgs::protocol::ProcessId& forward_targets(int index) const;
  inline ::bgs::protocol::ProcessId* mutable_forward_targets(int index);
  inline ::bgs::protocol::ProcessId* add_forward_targets();
  inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ProcessId >&
      forward_targets() const;
  inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ProcessId >*
      mutable_forward_targets();

  // optional fixed32 service_hash = 11;
  inline bool has_service_hash() const;
  inline void clear_service_hash();
  static const int kServiceHashFieldNumber = 11;
  inline ::google::protobuf::uint32 service_hash() const;
  inline void set_service_hash(::google::protobuf::uint32 value);

  // optional .bgs.protocol.TraceInfo trace_info = 12;
  inline bool has_trace_info() const;
  inline void clear_trace_info();
  static const int kTraceInfoFieldNumber = 12;
  inline const ::bgs::protocol::TraceInfo& trace_info() const;
  inline ::bgs::protocol::TraceInfo* mutable_trace_info();
  inline ::bgs::protocol::TraceInfo* release_trace_info();
  inline void set_allocated_trace_info(::bgs::protocol::TraceInfo* trace_info);

  // @@protoc_insertion_point(class_scope:bgs.protocol.Header)
 private:
  inline void set_has_service_id();
  inline void clear_has_service_id();
  inline void set_has_method_id();
  inline void clear_has_method_id();
  inline void set_has_token();
  inline void clear_has_token();
  inline void set_has_object_id();
  inline void clear_has_object_id();
  inline void set_has_size();
  inline void clear_has_size();
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_timeout();
  inline void clear_has_timeout();
  inline void set_has_is_response();
  inline void clear_has_is_response();
  inline void set_has_service_hash();
  inline void clear_has_service_hash();
  inline void set_has_trace_info();
  inline void clear_has_trace_info();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::google::protobuf::uint32 service_id_;
  ::google::protobuf::uint32 method_id_;
  ::google::protobuf::uint64 object_id_;
  ::google::protobuf::uint32 token_;
  ::google::protobuf::uint32 size_;
  ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ErrorInfo > error_;
  ::google::protobuf::uint32 status_;
  bool is_response_;
  ::google::protobuf::uint64 timeout_;
  ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ProcessId > forward_targets_;
  ::bgs::protocol::TraceInfo* trace_info_;
  ::google::protobuf::uint32 service_hash_;
  friend void protobuf_AddDesc_rpc_5ftypes_2eproto();
  friend void protobuf_AssignDesc_rpc_5ftypes_2eproto();
  friend void protobuf_ShutdownFile_rpc_5ftypes_2eproto();

  void InitAsDefaultInstance();
  static Header* default_instance_;
};
// ===================================================================


// ===================================================================


// ===================================================================

// NO_RESPONSE

// -------------------------------------------------------------------

// Address

// required string address = 1;
inline bool Address::has_address() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Address::set_has_address() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Address::clear_has_address() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Address::clear_address() {
  if (address_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    address_->clear();
  }
  clear_has_address();
}
inline const ::std::string& Address::address() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Address.address)
  return *address_;
}
inline void Address::set_address(const ::std::string& value) {
  set_has_address();
  if (address_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    address_ = new ::std::string;
  }
  address_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.Address.address)
}
inline void Address::set_address(const char* value) {
  set_has_address();
  if (address_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    address_ = new ::std::string;
  }
  address_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.Address.address)
}
inline void Address::set_address(const char* value, size_t size) {
  set_has_address();
  if (address_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    address_ = new ::std::string;
  }
  address_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.Address.address)
}
inline ::std::string* Address::mutable_address() {
  set_has_address();
  if (address_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    address_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.Address.address)
  return address_;
}
inline ::std::string* Address::release_address() {
  clear_has_address();
  if (address_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = address_;
    address_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void Address::set_allocated_address(::std::string* address) {
  if (address_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete address_;
  }
  if (address) {
    set_has_address();
    address_ = address;
  } else {
    clear_has_address();
    address_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.Address.address)
}

// optional uint32 port = 2;
inline bool Address::has_port() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Address::set_has_port() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Address::clear_has_port() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Address::clear_port() {
  port_ = 0u;
  clear_has_port();
}
inline ::google::protobuf::uint32 Address::port() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Address.port)
  return port_;
}
inline void Address::set_port(::google::protobuf::uint32 value) {
  set_has_port();
  port_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Address.port)
}

// -------------------------------------------------------------------

// ProcessId

// required uint32 label = 1;
inline bool ProcessId::has_label() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void ProcessId::set_has_label() {
  _has_bits_[0] |= 0x00000001u;
}
inline void ProcessId::clear_has_label() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void ProcessId::clear_label() {
  label_ = 0u;
  clear_has_label();
}
inline ::google::protobuf::uint32 ProcessId::label() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ProcessId.label)
  return label_;
}
inline void ProcessId::set_label(::google::protobuf::uint32 value) {
  set_has_label();
  label_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ProcessId.label)
}

// required uint32 epoch = 2;
inline bool ProcessId::has_epoch() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void ProcessId::set_has_epoch() {
  _has_bits_[0] |= 0x00000002u;
}
inline void ProcessId::clear_has_epoch() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void ProcessId::clear_epoch() {
  epoch_ = 0u;
  clear_has_epoch();
}
inline ::google::protobuf::uint32 ProcessId::epoch() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ProcessId.epoch)
  return epoch_;
}
inline void ProcessId::set_epoch(::google::protobuf::uint32 value) {
  set_has_epoch();
  epoch_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ProcessId.epoch)
}

// -------------------------------------------------------------------

// ObjectAddress

// required .bgs.protocol.ProcessId host = 1;
inline bool ObjectAddress::has_host() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void ObjectAddress::set_has_host() {
  _has_bits_[0] |= 0x00000001u;
}
inline void ObjectAddress::clear_has_host() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void ObjectAddress::clear_host() {
  if (host_ != NULL) host_->::bgs::protocol::ProcessId::Clear();
  clear_has_host();
}
inline const ::bgs::protocol::ProcessId& ObjectAddress::host() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ObjectAddress.host)
  return host_ != NULL ? *host_ : *default_instance_->host_;
}
inline ::bgs::protocol::ProcessId* ObjectAddress::mutable_host() {
  set_has_host();
  if (host_ == NULL) host_ = new ::bgs::protocol::ProcessId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.ObjectAddress.host)
  return host_;
}
inline ::bgs::protocol::ProcessId* ObjectAddress::release_host() {
  clear_has_host();
  ::bgs::protocol::ProcessId* temp = host_;
  host_ = NULL;
  return temp;
}
inline void ObjectAddress::set_allocated_host(::bgs::protocol::ProcessId* host) {
  delete host_;
  host_ = host;
  if (host) {
    set_has_host();
  } else {
    clear_has_host();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.ObjectAddress.host)
}

// optional uint64 object_id = 2 [default = 0];
inline bool ObjectAddress::has_object_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void ObjectAddress::set_has_object_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void ObjectAddress::clear_has_object_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void ObjectAddress::clear_object_id() {
  object_id_ = GOOGLE_ULONGLONG(0);
  clear_has_object_id();
}
inline ::google::protobuf::uint64 ObjectAddress::object_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ObjectAddress.object_id)
  return object_id_;
}
inline void ObjectAddress::set_object_id(::google::protobuf::uint64 value) {
  set_has_object_id();
  object_id_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ObjectAddress.object_id)
}

// -------------------------------------------------------------------

// NoData

// -------------------------------------------------------------------

// ErrorInfo

// required .bgs.protocol.ObjectAddress object_address = 1;
inline bool ErrorInfo::has_object_address() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void ErrorInfo::set_has_object_address() {
  _has_bits_[0] |= 0x00000001u;
}
inline void ErrorInfo::clear_has_object_address() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void ErrorInfo::clear_object_address() {
  if (object_address_ != NULL) object_address_->::bgs::protocol::ObjectAddress::Clear();
  clear_has_object_address();
}
inline const ::bgs::protocol::ObjectAddress& ErrorInfo::object_address() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ErrorInfo.object_address)
  return object_address_ != NULL ? *object_address_ : *default_instance_->object_address_;
}
inline ::bgs::protocol::ObjectAddress* ErrorInfo::mutable_object_address() {
  set_has_object_address();
  if (object_address_ == NULL) object_address_ = new ::bgs::protocol::ObjectAddress;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.ErrorInfo.object_address)
  return object_address_;
}
inline ::bgs::protocol::ObjectAddress* ErrorInfo::release_object_address() {
  clear_has_object_address();
  ::bgs::protocol::ObjectAddress* temp = object_address_;
  object_address_ = NULL;
  return temp;
}
inline void ErrorInfo::set_allocated_object_address(::bgs::protocol::ObjectAddress* object_address) {
  delete object_address_;
  object_address_ = object_address;
  if (object_address) {
    set_has_object_address();
  } else {
    clear_has_object_address();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.ErrorInfo.object_address)
}

// required uint32 status = 2;
inline bool ErrorInfo::has_status() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void ErrorInfo::set_has_status() {
  _has_bits_[0] |= 0x00000002u;
}
inline void ErrorInfo::clear_has_status() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void ErrorInfo::clear_status() {
  status_ = 0u;
  clear_has_status();
}
inline ::google::protobuf::uint32 ErrorInfo::status() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ErrorInfo.status)
  return status_;
}
inline void ErrorInfo::set_status(::google::protobuf::uint32 value) {
  set_has_status();
  status_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ErrorInfo.status)
}

// required uint32 service_hash = 3;
inline bool ErrorInfo::has_service_hash() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void ErrorInfo::set_has_service_hash() {
  _has_bits_[0] |= 0x00000004u;
}
inline void ErrorInfo::clear_has_service_hash() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void ErrorInfo::clear_service_hash() {
  service_hash_ = 0u;
  clear_has_service_hash();
}
inline ::google::protobuf::uint32 ErrorInfo::service_hash() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ErrorInfo.service_hash)
  return service_hash_;
}
inline void ErrorInfo::set_service_hash(::google::protobuf::uint32 value) {
  set_has_service_hash();
  service_hash_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ErrorInfo.service_hash)
}

// required uint32 method_id = 4;
inline bool ErrorInfo::has_method_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void ErrorInfo::set_has_method_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void ErrorInfo::clear_has_method_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void ErrorInfo::clear_method_id() {
  method_id_ = 0u;
  clear_has_method_id();
}
inline ::google::protobuf::uint32 ErrorInfo::method_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.ErrorInfo.method_id)
  return method_id_;
}
inline void ErrorInfo::set_method_id(::google::protobuf::uint32 value) {
  set_has_method_id();
  method_id_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.ErrorInfo.method_id)
}

// -------------------------------------------------------------------

// TraceInfo

// optional string session_id = 1;
inline bool TraceInfo::has_session_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void TraceInfo::set_has_session_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void TraceInfo::clear_has_session_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void TraceInfo::clear_session_id() {
  if (session_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    session_id_->clear();
  }
  clear_has_session_id();
}
inline const ::std::string& TraceInfo::session_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.TraceInfo.session_id)
  return *session_id_;
}
inline void TraceInfo::set_session_id(const ::std::string& value) {
  set_has_session_id();
  if (session_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    session_id_ = new ::std::string;
  }
  session_id_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.TraceInfo.session_id)
}
inline void TraceInfo::set_session_id(const char* value) {
  set_has_session_id();
  if (session_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    session_id_ = new ::std::string;
  }
  session_id_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.TraceInfo.session_id)
}
inline void TraceInfo::set_session_id(const char* value, size_t size) {
  set_has_session_id();
  if (session_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    session_id_ = new ::std::string;
  }
  session_id_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.TraceInfo.session_id)
}
inline ::std::string* TraceInfo::mutable_session_id() {
  set_has_session_id();
  if (session_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    session_id_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.TraceInfo.session_id)
  return session_id_;
}
inline ::std::string* TraceInfo::release_session_id() {
  clear_has_session_id();
  if (session_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = session_id_;
    session_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void TraceInfo::set_allocated_session_id(::std::string* session_id) {
  if (session_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete session_id_;
  }
  if (session_id) {
    set_has_session_id();
    session_id_ = session_id;
  } else {
    clear_has_session_id();
    session_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.TraceInfo.session_id)
}

// optional string trace_id = 2;
inline bool TraceInfo::has_trace_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void TraceInfo::set_has_trace_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void TraceInfo::clear_has_trace_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void TraceInfo::clear_trace_id() {
  if (trace_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    trace_id_->clear();
  }
  clear_has_trace_id();
}
inline const ::std::string& TraceInfo::trace_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.TraceInfo.trace_id)
  return *trace_id_;
}
inline void TraceInfo::set_trace_id(const ::std::string& value) {
  set_has_trace_id();
  if (trace_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    trace_id_ = new ::std::string;
  }
  trace_id_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.TraceInfo.trace_id)
}
inline void TraceInfo::set_trace_id(const char* value) {
  set_has_trace_id();
  if (trace_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    trace_id_ = new ::std::string;
  }
  trace_id_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.TraceInfo.trace_id)
}
inline void TraceInfo::set_trace_id(const char* value, size_t size) {
  set_has_trace_id();
  if (trace_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    trace_id_ = new ::std::string;
  }
  trace_id_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.TraceInfo.trace_id)
}
inline ::std::string* TraceInfo::mutable_trace_id() {
  set_has_trace_id();
  if (trace_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    trace_id_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.TraceInfo.trace_id)
  return trace_id_;
}
inline ::std::string* TraceInfo::release_trace_id() {
  clear_has_trace_id();
  if (trace_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = trace_id_;
    trace_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void TraceInfo::set_allocated_trace_id(::std::string* trace_id) {
  if (trace_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete trace_id_;
  }
  if (trace_id) {
    set_has_trace_id();
    trace_id_ = trace_id;
  } else {
    clear_has_trace_id();
    trace_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.TraceInfo.trace_id)
}

// optional string span_id = 3;
inline bool TraceInfo::has_span_id() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void TraceInfo::set_has_span_id() {
  _has_bits_[0] |= 0x00000004u;
}
inline void TraceInfo::clear_has_span_id() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void TraceInfo::clear_span_id() {
  if (span_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    span_id_->clear();
  }
  clear_has_span_id();
}
inline const ::std::string& TraceInfo::span_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.TraceInfo.span_id)
  return *span_id_;
}
inline void TraceInfo::set_span_id(const ::std::string& value) {
  set_has_span_id();
  if (span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    span_id_ = new ::std::string;
  }
  span_id_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.TraceInfo.span_id)
}
inline void TraceInfo::set_span_id(const char* value) {
  set_has_span_id();
  if (span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    span_id_ = new ::std::string;
  }
  span_id_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.TraceInfo.span_id)
}
inline void TraceInfo::set_span_id(const char* value, size_t size) {
  set_has_span_id();
  if (span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    span_id_ = new ::std::string;
  }
  span_id_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.TraceInfo.span_id)
}
inline ::std::string* TraceInfo::mutable_span_id() {
  set_has_span_id();
  if (span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    span_id_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.TraceInfo.span_id)
  return span_id_;
}
inline ::std::string* TraceInfo::release_span_id() {
  clear_has_span_id();
  if (span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = span_id_;
    span_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void TraceInfo::set_allocated_span_id(::std::string* span_id) {
  if (span_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete span_id_;
  }
  if (span_id) {
    set_has_span_id();
    span_id_ = span_id;
  } else {
    clear_has_span_id();
    span_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.TraceInfo.span_id)
}

// optional string parent_span_id = 4;
inline bool TraceInfo::has_parent_span_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void TraceInfo::set_has_parent_span_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void TraceInfo::clear_has_parent_span_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void TraceInfo::clear_parent_span_id() {
  if (parent_span_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    parent_span_id_->clear();
  }
  clear_has_parent_span_id();
}
inline const ::std::string& TraceInfo::parent_span_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.TraceInfo.parent_span_id)
  return *parent_span_id_;
}
inline void TraceInfo::set_parent_span_id(const ::std::string& value) {
  set_has_parent_span_id();
  if (parent_span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    parent_span_id_ = new ::std::string;
  }
  parent_span_id_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.TraceInfo.parent_span_id)
}
inline void TraceInfo::set_parent_span_id(const char* value) {
  set_has_parent_span_id();
  if (parent_span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    parent_span_id_ = new ::std::string;
  }
  parent_span_id_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.TraceInfo.parent_span_id)
}
inline void TraceInfo::set_parent_span_id(const char* value, size_t size) {
  set_has_parent_span_id();
  if (parent_span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    parent_span_id_ = new ::std::string;
  }
  parent_span_id_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.TraceInfo.parent_span_id)
}
inline ::std::string* TraceInfo::mutable_parent_span_id() {
  set_has_parent_span_id();
  if (parent_span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    parent_span_id_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.TraceInfo.parent_span_id)
  return parent_span_id_;
}
inline ::std::string* TraceInfo::release_parent_span_id() {
  clear_has_parent_span_id();
  if (parent_span_id_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = parent_span_id_;
    parent_span_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void TraceInfo::set_allocated_parent_span_id(::std::string* parent_span_id) {
  if (parent_span_id_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete parent_span_id_;
  }
  if (parent_span_id) {
    set_has_parent_span_id();
    parent_span_id_ = parent_span_id;
  } else {
    clear_has_parent_span_id();
    parent_span_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.TraceInfo.parent_span_id)
}

// optional .bgs.protocol.TraceInfo.Sampling sampling = 5 [default = DEFER];
inline bool TraceInfo::has_sampling() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void TraceInfo::set_has_sampling() {
  _has_bits_[0] |= 0x00000010u;
}
inline void TraceInfo::clear_has_sampling() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void TraceInfo::clear_sampling() {
  sampling_ = 2;
  clear_has_sampling();
}
inline ::bgs::protocol::TraceInfo_Sampling TraceInfo::sampling() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.TraceInfo.sampling)
  return static_cast< ::bgs::protocol::TraceInfo_Sampling >(sampling_);
}
inline void TraceInfo::set_sampling(::bgs::protocol::TraceInfo_Sampling value) {
  assert(::bgs::protocol::TraceInfo_Sampling_IsValid(value));
  set_has_sampling();
  sampling_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.TraceInfo.sampling)
}

// -------------------------------------------------------------------

// Header

// required uint32 service_id = 1;
inline bool Header::has_service_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Header::set_has_service_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Header::clear_has_service_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Header::clear_service_id() {
  service_id_ = 0u;
  clear_has_service_id();
}
inline ::google::protobuf::uint32 Header::service_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.service_id)
  return service_id_;
}
inline void Header::set_service_id(::google::protobuf::uint32 value) {
  set_has_service_id();
  service_id_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.service_id)
}

// optional uint32 method_id = 2;
inline bool Header::has_method_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Header::set_has_method_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Header::clear_has_method_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Header::clear_method_id() {
  method_id_ = 0u;
  clear_has_method_id();
}
inline ::google::protobuf::uint32 Header::method_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.method_id)
  return method_id_;
}
inline void Header::set_method_id(::google::protobuf::uint32 value) {
  set_has_method_id();
  method_id_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.method_id)
}

// required uint32 token = 3;
inline bool Header::has_token() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Header::set_has_token() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Header::clear_has_token() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Header::clear_token() {
  token_ = 0u;
  clear_has_token();
}
inline ::google::protobuf::uint32 Header::token() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.token)
  return token_;
}
inline void Header::set_token(::google::protobuf::uint32 value) {
  set_has_token();
  token_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.token)
}

// optional uint64 object_id = 4 [default = 0];
inline bool Header::has_object_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void Header::set_has_object_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void Header::clear_has_object_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void Header::clear_object_id() {
  object_id_ = GOOGLE_ULONGLONG(0);
  clear_has_object_id();
}
inline ::google::protobuf::uint64 Header::object_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.object_id)
  return object_id_;
}
inline void Header::set_object_id(::google::protobuf::uint64 value) {
  set_has_object_id();
  object_id_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.object_id)
}

// optional uint32 size = 5 [default = 0];
inline bool Header::has_size() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void Header::set_has_size() {
  _has_bits_[0] |= 0x00000010u;
}
inline void Header::clear_has_size() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void Header::clear_size() {
  size_ = 0u;
  clear_has_size();
}
inline ::google::protobuf::uint32 Header::size() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.size)
  return size_;
}
inline void Header::set_size(::google::protobuf::uint32 value) {
  set_has_size();
  size_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.size)
}

// optional uint32 status = 6 [default = 0];
inline bool Header::has_status() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void Header::set_has_status() {
  _has_bits_[0] |= 0x00000020u;
}
inline void Header::clear_has_status() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void Header::clear_status() {
  status_ = 0u;
  clear_has_status();
}
inline ::google::protobuf::uint32 Header::status() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.status)
  return status_;
}
inline void Header::set_status(::google::protobuf::uint32 value) {
  set_has_status();
  status_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.status)
}

// repeated .bgs.protocol.ErrorInfo error = 7;
inline int Header::error_size() const {
  return error_.size();
}
inline void Header::clear_error() {
  error_.Clear();
}
inline const ::bgs::protocol::ErrorInfo& Header::error(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.error)
  return error_.Get(index);
}
inline ::bgs::protocol::ErrorInfo* Header::mutable_error(int index) {
  // @@protoc_insertion_point(field_mutable:bgs.protocol.Header.error)
  return error_.Mutable(index);
}
inline ::bgs::protocol::ErrorInfo* Header::add_error() {
  // @@protoc_insertion_point(field_add:bgs.protocol.Header.error)
  return error_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ErrorInfo >&
Header::error() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.Header.error)
  return error_;
}
inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ErrorInfo >*
Header::mutable_error() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.Header.error)
  return &error_;
}

// optional uint64 timeout = 8;
inline bool Header::has_timeout() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void Header::set_has_timeout() {
  _has_bits_[0] |= 0x00000080u;
}
inline void Header::clear_has_timeout() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void Header::clear_timeout() {
  timeout_ = GOOGLE_ULONGLONG(0);
  clear_has_timeout();
}
inline ::google::protobuf::uint64 Header::timeout() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.timeout)
  return timeout_;
}
inline void Header::set_timeout(::google::protobuf::uint64 value) {
  set_has_timeout();
  timeout_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.timeout)
}

// optional bool is_response = 9;
inline bool Header::has_is_response() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void Header::set_has_is_response() {
  _has_bits_[0] |= 0x00000100u;
}
inline void Header::clear_has_is_response() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void Header::clear_is_response() {
  is_response_ = false;
  clear_has_is_response();
}
inline bool Header::is_response() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.is_response)
  return is_response_;
}
inline void Header::set_is_response(bool value) {
  set_has_is_response();
  is_response_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.is_response)
}

// repeated .bgs.protocol.ProcessId forward_targets = 10;
inline int Header::forward_targets_size() const {
  return forward_targets_.size();
}
inline void Header::clear_forward_targets() {
  forward_targets_.Clear();
}
inline const ::bgs::protocol::ProcessId& Header::forward_targets(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.forward_targets)
  return forward_targets_.Get(index);
}
inline ::bgs::protocol::ProcessId* Header::mutable_forward_targets(int index) {
  // @@protoc_insertion_point(field_mutable:bgs.protocol.Header.forward_targets)
  return forward_targets_.Mutable(index);
}
inline ::bgs::protocol::ProcessId* Header::add_forward_targets() {
  // @@protoc_insertion_point(field_add:bgs.protocol.Header.forward_targets)
  return forward_targets_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ProcessId >&
Header::forward_targets() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.Header.forward_targets)
  return forward_targets_;
}
inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::ProcessId >*
Header::mutable_forward_targets() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.Header.forward_targets)
  return &forward_targets_;
}

// optional fixed32 service_hash = 11;
inline bool Header::has_service_hash() const {
  return (_has_bits_[0] & 0x00000400u) != 0;
}
inline void Header::set_has_service_hash() {
  _has_bits_[0] |= 0x00000400u;
}
inline void Header::clear_has_service_hash() {
  _has_bits_[0] &= ~0x00000400u;
}
inline void Header::clear_service_hash() {
  service_hash_ = 0u;
  clear_has_service_hash();
}
inline ::google::protobuf::uint32 Header::service_hash() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.service_hash)
  return service_hash_;
}
inline void Header::set_service_hash(::google::protobuf::uint32 value) {
  set_has_service_hash();
  service_hash_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.Header.service_hash)
}

// optional .bgs.protocol.TraceInfo trace_info = 12;
inline bool Header::has_trace_info() const {
  return (_has_bits_[0] & 0x00000800u) != 0;
}
inline void Header::set_has_trace_info() {
  _has_bits_[0] |= 0x00000800u;
}
inline void Header::clear_has_trace_info() {
  _has_bits_[0] &= ~0x00000800u;
}
inline void Header::clear_trace_info() {
  if (trace_info_ != NULL) trace_info_->::bgs::protocol::TraceInfo::Clear();
  clear_has_trace_info();
}
inline const ::bgs::protocol::TraceInfo& Header::trace_info() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.Header.trace_info)
  return trace_info_ != NULL ? *trace_info_ : *default_instance_->trace_info_;
}
inline ::bgs::protocol::TraceInfo* Header::mutable_trace_info() {
  set_has_trace_info();
  if (trace_info_ == NULL) trace_info_ = new ::bgs::protocol::TraceInfo;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.Header.trace_info)
  return trace_info_;
}
inline ::bgs::protocol::TraceInfo* Header::release_trace_info() {
  clear_has_trace_info();
  ::bgs::protocol::TraceInfo* temp = trace_info_;
  trace_info_ = NULL;
  return temp;
}
inline void Header::set_allocated_trace_info(::bgs::protocol::TraceInfo* trace_info) {
  delete trace_info_;
  trace_info_ = trace_info;
  if (trace_info) {
    set_has_trace_info();
  } else {
    clear_has_trace_info();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.Header.trace_info)
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace protocol
}  // namespace bgs

#ifndef SWIG
namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::bgs::protocol::TraceInfo_Sampling> : ::google::protobuf::internal::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::bgs::protocol::TraceInfo_Sampling>() {
  return ::bgs::protocol::TraceInfo_Sampling_descriptor();
}

}  // namespace google
}  // namespace protobuf
#endif  // SWIG

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_rpc_5ftypes_2eproto__INCLUDED
