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

#ifndef GOOGLE_PROTOBUF_INCLUDED_modbus_5fgateway_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_modbus_5fgateway_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3021000
#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 3021012 < 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/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_bases.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include <google/protobuf/timestamp.pb.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_modbus_5fgateway_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_modbus_5fgateway_2eproto {
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_modbus_5fgateway_2eproto;
namespace hc900 {
class HealthCheckRequest;
struct HealthCheckRequestDefaultTypeInternal;
extern HealthCheckRequestDefaultTypeInternal _HealthCheckRequest_default_instance_;
class HealthCheckResponse;
struct HealthCheckResponseDefaultTypeInternal;
extern HealthCheckResponseDefaultTypeInternal _HealthCheckResponse_default_instance_;
class ListTagsRequest;
struct ListTagsRequestDefaultTypeInternal;
extern ListTagsRequestDefaultTypeInternal _ListTagsRequest_default_instance_;
class ListTagsResponse;
struct ListTagsResponseDefaultTypeInternal;
extern ListTagsResponseDefaultTypeInternal _ListTagsResponse_default_instance_;
class ReadTagsRequest;
struct ReadTagsRequestDefaultTypeInternal;
extern ReadTagsRequestDefaultTypeInternal _ReadTagsRequest_default_instance_;
class ReadTagsResponse;
struct ReadTagsResponseDefaultTypeInternal;
extern ReadTagsResponseDefaultTypeInternal _ReadTagsResponse_default_instance_;
class StreamTagsRequest;
struct StreamTagsRequestDefaultTypeInternal;
extern StreamTagsRequestDefaultTypeInternal _StreamTagsRequest_default_instance_;
class TagMetadata;
struct TagMetadataDefaultTypeInternal;
extern TagMetadataDefaultTypeInternal _TagMetadata_default_instance_;
class TagValue;
struct TagValueDefaultTypeInternal;
extern TagValueDefaultTypeInternal _TagValue_default_instance_;
class WriteTagRequest;
struct WriteTagRequestDefaultTypeInternal;
extern WriteTagRequestDefaultTypeInternal _WriteTagRequest_default_instance_;
class WriteTagResponse;
struct WriteTagResponseDefaultTypeInternal;
extern WriteTagResponseDefaultTypeInternal _WriteTagResponse_default_instance_;
}  // namespace hc900
PROTOBUF_NAMESPACE_OPEN
template<> ::hc900::HealthCheckRequest* Arena::CreateMaybeMessage<::hc900::HealthCheckRequest>(Arena*);
template<> ::hc900::HealthCheckResponse* Arena::CreateMaybeMessage<::hc900::HealthCheckResponse>(Arena*);
template<> ::hc900::ListTagsRequest* Arena::CreateMaybeMessage<::hc900::ListTagsRequest>(Arena*);
template<> ::hc900::ListTagsResponse* Arena::CreateMaybeMessage<::hc900::ListTagsResponse>(Arena*);
template<> ::hc900::ReadTagsRequest* Arena::CreateMaybeMessage<::hc900::ReadTagsRequest>(Arena*);
template<> ::hc900::ReadTagsResponse* Arena::CreateMaybeMessage<::hc900::ReadTagsResponse>(Arena*);
template<> ::hc900::StreamTagsRequest* Arena::CreateMaybeMessage<::hc900::StreamTagsRequest>(Arena*);
template<> ::hc900::TagMetadata* Arena::CreateMaybeMessage<::hc900::TagMetadata>(Arena*);
template<> ::hc900::TagValue* Arena::CreateMaybeMessage<::hc900::TagValue>(Arena*);
template<> ::hc900::WriteTagRequest* Arena::CreateMaybeMessage<::hc900::WriteTagRequest>(Arena*);
template<> ::hc900::WriteTagResponse* Arena::CreateMaybeMessage<::hc900::WriteTagResponse>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace hc900 {

enum HealthCheckResponse_ServingStatus : int {
  HealthCheckResponse_ServingStatus_UNKNOWN = 0,
  HealthCheckResponse_ServingStatus_SERVING = 1,
  HealthCheckResponse_ServingStatus_NOT_SERVING = 2,
  HealthCheckResponse_ServingStatus_HealthCheckResponse_ServingStatus_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  HealthCheckResponse_ServingStatus_HealthCheckResponse_ServingStatus_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool HealthCheckResponse_ServingStatus_IsValid(int value);
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse_ServingStatus_ServingStatus_MIN = HealthCheckResponse_ServingStatus_UNKNOWN;
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse_ServingStatus_ServingStatus_MAX = HealthCheckResponse_ServingStatus_NOT_SERVING;
constexpr int HealthCheckResponse_ServingStatus_ServingStatus_ARRAYSIZE = HealthCheckResponse_ServingStatus_ServingStatus_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HealthCheckResponse_ServingStatus_descriptor();
template<typename T>
inline const std::string& HealthCheckResponse_ServingStatus_Name(T enum_t_value) {
  static_assert(::std::is_same<T, HealthCheckResponse_ServingStatus>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function HealthCheckResponse_ServingStatus_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    HealthCheckResponse_ServingStatus_descriptor(), enum_t_value);
}
inline bool HealthCheckResponse_ServingStatus_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, HealthCheckResponse_ServingStatus* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<HealthCheckResponse_ServingStatus>(
    HealthCheckResponse_ServingStatus_descriptor(), name, value);
}
// ===================================================================

class TagValue final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.TagValue) */ {
 public:
  inline TagValue() : TagValue(nullptr) {}
  ~TagValue() override;
  explicit PROTOBUF_CONSTEXPR TagValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TagValue(const TagValue& from);
  TagValue(TagValue&& from) noexcept
    : TagValue() {
    *this = ::std::move(from);
  }

  inline TagValue& operator=(const TagValue& from) {
    CopyFrom(from);
    return *this;
  }
  inline TagValue& operator=(TagValue&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TagValue& default_instance() {
    return *internal_default_instance();
  }
  enum ValueCase {
    kFloat32Val = 2,
    kUint16Val = 3,
    VALUE_NOT_SET = 0,
  };

  static inline const TagValue* internal_default_instance() {
    return reinterpret_cast<const TagValue*>(
               &_TagValue_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(TagValue& a, TagValue& b) {
    a.Swap(&b);
  }
  inline void Swap(TagValue* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TagValue* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  TagValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TagValue>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TagValue& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const TagValue& from) {
    TagValue::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TagValue* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.TagValue";
  }
  protected:
  explicit TagValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagNameFieldNumber = 1,
    kTimestampFieldNumber = 5,
    kQualityFieldNumber = 4,
    kFloat32ValFieldNumber = 2,
    kUint16ValFieldNumber = 3,
  };
  // string tag_name = 1;
  void clear_tag_name();
  const std::string& tag_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_tag_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_tag_name();
  PROTOBUF_NODISCARD std::string* release_tag_name();
  void set_allocated_tag_name(std::string* tag_name);
  private:
  const std::string& _internal_tag_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tag_name(const std::string& value);
  std::string* _internal_mutable_tag_name();
  public:

  // .google.protobuf.Timestamp timestamp = 5;
  bool has_timestamp() const;
  private:
  bool _internal_has_timestamp() const;
  public:
  void clear_timestamp();
  const ::PROTOBUF_NAMESPACE_ID::Timestamp& timestamp() const;
  PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::Timestamp* release_timestamp();
  ::PROTOBUF_NAMESPACE_ID::Timestamp* mutable_timestamp();
  void set_allocated_timestamp(::PROTOBUF_NAMESPACE_ID::Timestamp* timestamp);
  private:
  const ::PROTOBUF_NAMESPACE_ID::Timestamp& _internal_timestamp() const;
  ::PROTOBUF_NAMESPACE_ID::Timestamp* _internal_mutable_timestamp();
  public:
  void unsafe_arena_set_allocated_timestamp(
      ::PROTOBUF_NAMESPACE_ID::Timestamp* timestamp);
  ::PROTOBUF_NAMESPACE_ID::Timestamp* unsafe_arena_release_timestamp();

  // uint32 quality = 4;
  void clear_quality();
  uint32_t quality() const;
  void set_quality(uint32_t value);
  private:
  uint32_t _internal_quality() const;
  void _internal_set_quality(uint32_t value);
  public:

  // float float32_val = 2;
  bool has_float32_val() const;
  private:
  bool _internal_has_float32_val() const;
  public:
  void clear_float32_val();
  float float32_val() const;
  void set_float32_val(float value);
  private:
  float _internal_float32_val() const;
  void _internal_set_float32_val(float value);
  public:

  // uint32 uint16_val = 3;
  bool has_uint16_val() const;
  private:
  bool _internal_has_uint16_val() const;
  public:
  void clear_uint16_val();
  uint32_t uint16_val() const;
  void set_uint16_val(uint32_t value);
  private:
  uint32_t _internal_uint16_val() const;
  void _internal_set_uint16_val(uint32_t value);
  public:

  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:hc900.TagValue)
 private:
  class _Internal;
  void set_has_float32_val();
  void set_has_uint16_val();

  inline bool has_value() const;
  inline void clear_has_value();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tag_name_;
    ::PROTOBUF_NAMESPACE_ID::Timestamp* timestamp_;
    uint32_t quality_;
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
        ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
      float float32_val_;
      uint32_t uint16_val_;
    } value_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    uint32_t _oneof_case_[1];

  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class TagMetadata final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.TagMetadata) */ {
 public:
  inline TagMetadata() : TagMetadata(nullptr) {}
  ~TagMetadata() override;
  explicit PROTOBUF_CONSTEXPR TagMetadata(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TagMetadata(const TagMetadata& from);
  TagMetadata(TagMetadata&& from) noexcept
    : TagMetadata() {
    *this = ::std::move(from);
  }

  inline TagMetadata& operator=(const TagMetadata& from) {
    CopyFrom(from);
    return *this;
  }
  inline TagMetadata& operator=(TagMetadata&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TagMetadata& default_instance() {
    return *internal_default_instance();
  }
  static inline const TagMetadata* internal_default_instance() {
    return reinterpret_cast<const TagMetadata*>(
               &_TagMetadata_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(TagMetadata& a, TagMetadata& b) {
    a.Swap(&b);
  }
  inline void Swap(TagMetadata* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TagMetadata* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  TagMetadata* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TagMetadata>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TagMetadata& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const TagMetadata& from) {
    TagMetadata::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TagMetadata* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.TagMetadata";
  }
  protected:
  explicit TagMetadata(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagNameFieldNumber = 1,
    kTypeFieldNumber = 4,
    kAccessFieldNumber = 5,
    kDescriptionFieldNumber = 6,
    kEuFieldNumber = 7,
    kAddressFieldNumber = 2,
    kCountFieldNumber = 3,
  };
  // string tag_name = 1;
  void clear_tag_name();
  const std::string& tag_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_tag_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_tag_name();
  PROTOBUF_NODISCARD std::string* release_tag_name();
  void set_allocated_tag_name(std::string* tag_name);
  private:
  const std::string& _internal_tag_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tag_name(const std::string& value);
  std::string* _internal_mutable_tag_name();
  public:

  // string type = 4;
  void clear_type();
  const std::string& type() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_type(ArgT0&& arg0, ArgT... args);
  std::string* mutable_type();
  PROTOBUF_NODISCARD std::string* release_type();
  void set_allocated_type(std::string* type);
  private:
  const std::string& _internal_type() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_type(const std::string& value);
  std::string* _internal_mutable_type();
  public:

  // string access = 5;
  void clear_access();
  const std::string& access() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_access(ArgT0&& arg0, ArgT... args);
  std::string* mutable_access();
  PROTOBUF_NODISCARD std::string* release_access();
  void set_allocated_access(std::string* access);
  private:
  const std::string& _internal_access() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_access(const std::string& value);
  std::string* _internal_mutable_access();
  public:

  // string description = 6;
  void clear_description();
  const std::string& description() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_description(ArgT0&& arg0, ArgT... args);
  std::string* mutable_description();
  PROTOBUF_NODISCARD std::string* release_description();
  void set_allocated_description(std::string* description);
  private:
  const std::string& _internal_description() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_description(const std::string& value);
  std::string* _internal_mutable_description();
  public:

  // string eu = 7;
  void clear_eu();
  const std::string& eu() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_eu(ArgT0&& arg0, ArgT... args);
  std::string* mutable_eu();
  PROTOBUF_NODISCARD std::string* release_eu();
  void set_allocated_eu(std::string* eu);
  private:
  const std::string& _internal_eu() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_eu(const std::string& value);
  std::string* _internal_mutable_eu();
  public:

  // uint32 address = 2;
  void clear_address();
  uint32_t address() const;
  void set_address(uint32_t value);
  private:
  uint32_t _internal_address() const;
  void _internal_set_address(uint32_t value);
  public:

  // uint32 count = 3;
  void clear_count();
  uint32_t count() const;
  void set_count(uint32_t value);
  private:
  uint32_t _internal_count() const;
  void _internal_set_count(uint32_t value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.TagMetadata)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tag_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr type_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr description_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr eu_;
    uint32_t address_;
    uint32_t count_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class ReadTagsRequest final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.ReadTagsRequest) */ {
 public:
  inline ReadTagsRequest() : ReadTagsRequest(nullptr) {}
  ~ReadTagsRequest() override;
  explicit PROTOBUF_CONSTEXPR ReadTagsRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ReadTagsRequest(const ReadTagsRequest& from);
  ReadTagsRequest(ReadTagsRequest&& from) noexcept
    : ReadTagsRequest() {
    *this = ::std::move(from);
  }

  inline ReadTagsRequest& operator=(const ReadTagsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ReadTagsRequest& operator=(ReadTagsRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ReadTagsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const ReadTagsRequest* internal_default_instance() {
    return reinterpret_cast<const ReadTagsRequest*>(
               &_ReadTagsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(ReadTagsRequest& a, ReadTagsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(ReadTagsRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ReadTagsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ReadTagsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ReadTagsRequest>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ReadTagsRequest& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const ReadTagsRequest& from) {
    ReadTagsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ReadTagsRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.ReadTagsRequest";
  }
  protected:
  explicit ReadTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagNamesFieldNumber = 1,
  };
  // repeated string tag_names = 1;
  int tag_names_size() const;
  private:
  int _internal_tag_names_size() const;
  public:
  void clear_tag_names();
  const std::string& tag_names(int index) const;
  std::string* mutable_tag_names(int index);
  void set_tag_names(int index, const std::string& value);
  void set_tag_names(int index, std::string&& value);
  void set_tag_names(int index, const char* value);
  void set_tag_names(int index, const char* value, size_t size);
  std::string* add_tag_names();
  void add_tag_names(const std::string& value);
  void add_tag_names(std::string&& value);
  void add_tag_names(const char* value);
  void add_tag_names(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& tag_names() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_tag_names();
  private:
  const std::string& _internal_tag_names(int index) const;
  std::string* _internal_add_tag_names();
  public:

  // @@protoc_insertion_point(class_scope:hc900.ReadTagsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> tag_names_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class ReadTagsResponse final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.ReadTagsResponse) */ {
 public:
  inline ReadTagsResponse() : ReadTagsResponse(nullptr) {}
  ~ReadTagsResponse() override;
  explicit PROTOBUF_CONSTEXPR ReadTagsResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ReadTagsResponse(const ReadTagsResponse& from);
  ReadTagsResponse(ReadTagsResponse&& from) noexcept
    : ReadTagsResponse() {
    *this = ::std::move(from);
  }

  inline ReadTagsResponse& operator=(const ReadTagsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ReadTagsResponse& operator=(ReadTagsResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ReadTagsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const ReadTagsResponse* internal_default_instance() {
    return reinterpret_cast<const ReadTagsResponse*>(
               &_ReadTagsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(ReadTagsResponse& a, ReadTagsResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(ReadTagsResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ReadTagsResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ReadTagsResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ReadTagsResponse>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ReadTagsResponse& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const ReadTagsResponse& from) {
    ReadTagsResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ReadTagsResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.ReadTagsResponse";
  }
  protected:
  explicit ReadTagsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kValuesFieldNumber = 1,
    kFromCacheFieldNumber = 2,
  };
  // repeated .hc900.TagValue values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;
  public:
  void clear_values();
  ::hc900::TagValue* mutable_values(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagValue >*
      mutable_values();
  private:
  const ::hc900::TagValue& _internal_values(int index) const;
  ::hc900::TagValue* _internal_add_values();
  public:
  const ::hc900::TagValue& values(int index) const;
  ::hc900::TagValue* add_values();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagValue >&
      values() const;

  // bool from_cache = 2;
  void clear_from_cache();
  bool from_cache() const;
  void set_from_cache(bool value);
  private:
  bool _internal_from_cache() const;
  void _internal_set_from_cache(bool value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.ReadTagsResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagValue > values_;
    bool from_cache_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class WriteTagRequest final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.WriteTagRequest) */ {
 public:
  inline WriteTagRequest() : WriteTagRequest(nullptr) {}
  ~WriteTagRequest() override;
  explicit PROTOBUF_CONSTEXPR WriteTagRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  WriteTagRequest(const WriteTagRequest& from);
  WriteTagRequest(WriteTagRequest&& from) noexcept
    : WriteTagRequest() {
    *this = ::std::move(from);
  }

  inline WriteTagRequest& operator=(const WriteTagRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline WriteTagRequest& operator=(WriteTagRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WriteTagRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const WriteTagRequest* internal_default_instance() {
    return reinterpret_cast<const WriteTagRequest*>(
               &_WriteTagRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(WriteTagRequest& a, WriteTagRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(WriteTagRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(WriteTagRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  WriteTagRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<WriteTagRequest>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const WriteTagRequest& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const WriteTagRequest& from) {
    WriteTagRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(WriteTagRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.WriteTagRequest";
  }
  protected:
  explicit WriteTagRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagNameFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // string tag_name = 1;
  void clear_tag_name();
  const std::string& tag_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_tag_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_tag_name();
  PROTOBUF_NODISCARD std::string* release_tag_name();
  void set_allocated_tag_name(std::string* tag_name);
  private:
  const std::string& _internal_tag_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tag_name(const std::string& value);
  std::string* _internal_mutable_tag_name();
  public:

  // double value = 2;
  void clear_value();
  double value() const;
  void set_value(double value);
  private:
  double _internal_value() const;
  void _internal_set_value(double value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.WriteTagRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tag_name_;
    double value_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class WriteTagResponse final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.WriteTagResponse) */ {
 public:
  inline WriteTagResponse() : WriteTagResponse(nullptr) {}
  ~WriteTagResponse() override;
  explicit PROTOBUF_CONSTEXPR WriteTagResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  WriteTagResponse(const WriteTagResponse& from);
  WriteTagResponse(WriteTagResponse&& from) noexcept
    : WriteTagResponse() {
    *this = ::std::move(from);
  }

  inline WriteTagResponse& operator=(const WriteTagResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline WriteTagResponse& operator=(WriteTagResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WriteTagResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const WriteTagResponse* internal_default_instance() {
    return reinterpret_cast<const WriteTagResponse*>(
               &_WriteTagResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(WriteTagResponse& a, WriteTagResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(WriteTagResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(WriteTagResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  WriteTagResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<WriteTagResponse>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const WriteTagResponse& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const WriteTagResponse& from) {
    WriteTagResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(WriteTagResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.WriteTagResponse";
  }
  protected:
  explicit WriteTagResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kErrorFieldNumber = 2,
    kSuccessFieldNumber = 1,
  };
  // string error = 2;
  void clear_error();
  const std::string& error() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_error(ArgT0&& arg0, ArgT... args);
  std::string* mutable_error();
  PROTOBUF_NODISCARD std::string* release_error();
  void set_allocated_error(std::string* error);
  private:
  const std::string& _internal_error() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_error(const std::string& value);
  std::string* _internal_mutable_error();
  public:

  // bool success = 1;
  void clear_success();
  bool success() const;
  void set_success(bool value);
  private:
  bool _internal_success() const;
  void _internal_set_success(bool value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.WriteTagResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr error_;
    bool success_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class StreamTagsRequest final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.StreamTagsRequest) */ {
 public:
  inline StreamTagsRequest() : StreamTagsRequest(nullptr) {}
  ~StreamTagsRequest() override;
  explicit PROTOBUF_CONSTEXPR StreamTagsRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  StreamTagsRequest(const StreamTagsRequest& from);
  StreamTagsRequest(StreamTagsRequest&& from) noexcept
    : StreamTagsRequest() {
    *this = ::std::move(from);
  }

  inline StreamTagsRequest& operator=(const StreamTagsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline StreamTagsRequest& operator=(StreamTagsRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StreamTagsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const StreamTagsRequest* internal_default_instance() {
    return reinterpret_cast<const StreamTagsRequest*>(
               &_StreamTagsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(StreamTagsRequest& a, StreamTagsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(StreamTagsRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StreamTagsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  StreamTagsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<StreamTagsRequest>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const StreamTagsRequest& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const StreamTagsRequest& from) {
    StreamTagsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StreamTagsRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.StreamTagsRequest";
  }
  protected:
  explicit StreamTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagNamesFieldNumber = 2,
    kIntervalMsFieldNumber = 1,
  };
  // repeated string tag_names = 2;
  int tag_names_size() const;
  private:
  int _internal_tag_names_size() const;
  public:
  void clear_tag_names();
  const std::string& tag_names(int index) const;
  std::string* mutable_tag_names(int index);
  void set_tag_names(int index, const std::string& value);
  void set_tag_names(int index, std::string&& value);
  void set_tag_names(int index, const char* value);
  void set_tag_names(int index, const char* value, size_t size);
  std::string* add_tag_names();
  void add_tag_names(const std::string& value);
  void add_tag_names(std::string&& value);
  void add_tag_names(const char* value);
  void add_tag_names(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& tag_names() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_tag_names();
  private:
  const std::string& _internal_tag_names(int index) const;
  std::string* _internal_add_tag_names();
  public:

  // int32 interval_ms = 1;
  void clear_interval_ms();
  int32_t interval_ms() const;
  void set_interval_ms(int32_t value);
  private:
  int32_t _internal_interval_ms() const;
  void _internal_set_interval_ms(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.StreamTagsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> tag_names_;
    int32_t interval_ms_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class ListTagsRequest final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.ListTagsRequest) */ {
 public:
  inline ListTagsRequest() : ListTagsRequest(nullptr) {}
  ~ListTagsRequest() override;
  explicit PROTOBUF_CONSTEXPR ListTagsRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ListTagsRequest(const ListTagsRequest& from);
  ListTagsRequest(ListTagsRequest&& from) noexcept
    : ListTagsRequest() {
    *this = ::std::move(from);
  }

  inline ListTagsRequest& operator=(const ListTagsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ListTagsRequest& operator=(ListTagsRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListTagsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListTagsRequest* internal_default_instance() {
    return reinterpret_cast<const ListTagsRequest*>(
               &_ListTagsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(ListTagsRequest& a, ListTagsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(ListTagsRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ListTagsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ListTagsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListTagsRequest>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ListTagsRequest& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const ListTagsRequest& from) {
    ListTagsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ListTagsRequest* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.ListTagsRequest";
  }
  protected:
  explicit ListTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kFilterFieldNumber = 1,
    kLimitFieldNumber = 2,
  };
  // string filter = 1;
  void clear_filter();
  const std::string& filter() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_filter(ArgT0&& arg0, ArgT... args);
  std::string* mutable_filter();
  PROTOBUF_NODISCARD std::string* release_filter();
  void set_allocated_filter(std::string* filter);
  private:
  const std::string& _internal_filter() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_filter(const std::string& value);
  std::string* _internal_mutable_filter();
  public:

  // int32 limit = 2;
  void clear_limit();
  int32_t limit() const;
  void set_limit(int32_t value);
  private:
  int32_t _internal_limit() const;
  void _internal_set_limit(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.ListTagsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filter_;
    int32_t limit_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class ListTagsResponse final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.ListTagsResponse) */ {
 public:
  inline ListTagsResponse() : ListTagsResponse(nullptr) {}
  ~ListTagsResponse() override;
  explicit PROTOBUF_CONSTEXPR ListTagsResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ListTagsResponse(const ListTagsResponse& from);
  ListTagsResponse(ListTagsResponse&& from) noexcept
    : ListTagsResponse() {
    *this = ::std::move(from);
  }

  inline ListTagsResponse& operator=(const ListTagsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ListTagsResponse& operator=(ListTagsResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListTagsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListTagsResponse* internal_default_instance() {
    return reinterpret_cast<const ListTagsResponse*>(
               &_ListTagsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(ListTagsResponse& a, ListTagsResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(ListTagsResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ListTagsResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ListTagsResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListTagsResponse>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ListTagsResponse& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const ListTagsResponse& from) {
    ListTagsResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ListTagsResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.ListTagsResponse";
  }
  protected:
  explicit ListTagsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTagsFieldNumber = 1,
  };
  // repeated .hc900.TagMetadata tags = 1;
  int tags_size() const;
  private:
  int _internal_tags_size() const;
  public:
  void clear_tags();
  ::hc900::TagMetadata* mutable_tags(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagMetadata >*
      mutable_tags();
  private:
  const ::hc900::TagMetadata& _internal_tags(int index) const;
  ::hc900::TagMetadata* _internal_add_tags();
  public:
  const ::hc900::TagMetadata& tags(int index) const;
  ::hc900::TagMetadata* add_tags();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagMetadata >&
      tags() const;

  // @@protoc_insertion_point(class_scope:hc900.ListTagsResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagMetadata > tags_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class HealthCheckRequest final :
    public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:hc900.HealthCheckRequest) */ {
 public:
  inline HealthCheckRequest() : HealthCheckRequest(nullptr) {}
  explicit PROTOBUF_CONSTEXPR HealthCheckRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  HealthCheckRequest(const HealthCheckRequest& from);
  HealthCheckRequest(HealthCheckRequest&& from) noexcept
    : HealthCheckRequest() {
    *this = ::std::move(from);
  }

  inline HealthCheckRequest& operator=(const HealthCheckRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline HealthCheckRequest& operator=(HealthCheckRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HealthCheckRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const HealthCheckRequest* internal_default_instance() {
    return reinterpret_cast<const HealthCheckRequest*>(
               &_HealthCheckRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(HealthCheckRequest& a, HealthCheckRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(HealthCheckRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HealthCheckRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  HealthCheckRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<HealthCheckRequest>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const HealthCheckRequest& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const HealthCheckRequest& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }
  public:

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.HealthCheckRequest";
  }
  protected:
  explicit HealthCheckRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  // @@protoc_insertion_point(class_scope:hc900.HealthCheckRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
  };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// -------------------------------------------------------------------

class HealthCheckResponse final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:hc900.HealthCheckResponse) */ {
 public:
  inline HealthCheckResponse() : HealthCheckResponse(nullptr) {}
  ~HealthCheckResponse() override;
  explicit PROTOBUF_CONSTEXPR HealthCheckResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  HealthCheckResponse(const HealthCheckResponse& from);
  HealthCheckResponse(HealthCheckResponse&& from) noexcept
    : HealthCheckResponse() {
    *this = ::std::move(from);
  }

  inline HealthCheckResponse& operator=(const HealthCheckResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline HealthCheckResponse& operator=(HealthCheckResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const HealthCheckResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const HealthCheckResponse* internal_default_instance() {
    return reinterpret_cast<const HealthCheckResponse*>(
               &_HealthCheckResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(HealthCheckResponse& a, HealthCheckResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(HealthCheckResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HealthCheckResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  HealthCheckResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<HealthCheckResponse>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const HealthCheckResponse& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const HealthCheckResponse& from) {
    HealthCheckResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(HealthCheckResponse* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "hc900.HealthCheckResponse";
  }
  protected:
  explicit HealthCheckResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

  typedef HealthCheckResponse_ServingStatus ServingStatus;
  static constexpr ServingStatus UNKNOWN =
    HealthCheckResponse_ServingStatus_UNKNOWN;
  static constexpr ServingStatus SERVING =
    HealthCheckResponse_ServingStatus_SERVING;
  static constexpr ServingStatus NOT_SERVING =
    HealthCheckResponse_ServingStatus_NOT_SERVING;
  static inline bool ServingStatus_IsValid(int value) {
    return HealthCheckResponse_ServingStatus_IsValid(value);
  }
  static constexpr ServingStatus ServingStatus_MIN =
    HealthCheckResponse_ServingStatus_ServingStatus_MIN;
  static constexpr ServingStatus ServingStatus_MAX =
    HealthCheckResponse_ServingStatus_ServingStatus_MAX;
  static constexpr int ServingStatus_ARRAYSIZE =
    HealthCheckResponse_ServingStatus_ServingStatus_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  ServingStatus_descriptor() {
    return HealthCheckResponse_ServingStatus_descriptor();
  }
  template<typename T>
  static inline const std::string& ServingStatus_Name(T enum_t_value) {
    static_assert(::std::is_same<T, ServingStatus>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function ServingStatus_Name.");
    return HealthCheckResponse_ServingStatus_Name(enum_t_value);
  }
  static inline bool ServingStatus_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      ServingStatus* value) {
    return HealthCheckResponse_ServingStatus_Parse(name, value);
  }

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

  enum : int {
    kControllerIpFieldNumber = 5,
    kUptimeSecFieldNumber = 2,
    kPollCountFieldNumber = 3,
    kStatusFieldNumber = 1,
    kActiveTagsFieldNumber = 6,
    kLastPollMsFieldNumber = 4,
  };
  // string controller_ip = 5;
  void clear_controller_ip();
  const std::string& controller_ip() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_controller_ip(ArgT0&& arg0, ArgT... args);
  std::string* mutable_controller_ip();
  PROTOBUF_NODISCARD std::string* release_controller_ip();
  void set_allocated_controller_ip(std::string* controller_ip);
  private:
  const std::string& _internal_controller_ip() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_controller_ip(const std::string& value);
  std::string* _internal_mutable_controller_ip();
  public:

  // double uptime_sec = 2;
  void clear_uptime_sec();
  double uptime_sec() const;
  void set_uptime_sec(double value);
  private:
  double _internal_uptime_sec() const;
  void _internal_set_uptime_sec(double value);
  public:

  // uint64 poll_count = 3;
  void clear_poll_count();
  uint64_t poll_count() const;
  void set_poll_count(uint64_t value);
  private:
  uint64_t _internal_poll_count() const;
  void _internal_set_poll_count(uint64_t value);
  public:

  // .hc900.HealthCheckResponse.ServingStatus status = 1;
  void clear_status();
  ::hc900::HealthCheckResponse_ServingStatus status() const;
  void set_status(::hc900::HealthCheckResponse_ServingStatus value);
  private:
  ::hc900::HealthCheckResponse_ServingStatus _internal_status() const;
  void _internal_set_status(::hc900::HealthCheckResponse_ServingStatus value);
  public:

  // uint32 active_tags = 6;
  void clear_active_tags();
  uint32_t active_tags() const;
  void set_active_tags(uint32_t value);
  private:
  uint32_t _internal_active_tags() const;
  void _internal_set_active_tags(uint32_t value);
  public:

  // double last_poll_ms = 4;
  void clear_last_poll_ms();
  double last_poll_ms() const;
  void set_last_poll_ms(double value);
  private:
  double _internal_last_poll_ms() const;
  void _internal_set_last_poll_ms(double value);
  public:

  // @@protoc_insertion_point(class_scope:hc900.HealthCheckResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr controller_ip_;
    double uptime_sec_;
    uint64_t poll_count_;
    int status_;
    uint32_t active_tags_;
    double last_poll_ms_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_modbus_5fgateway_2eproto;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// TagValue

// string tag_name = 1;
inline void TagValue::clear_tag_name() {
  _impl_.tag_name_.ClearToEmpty();
}
inline const std::string& TagValue::tag_name() const {
  // @@protoc_insertion_point(field_get:hc900.TagValue.tag_name)
  return _internal_tag_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagValue::set_tag_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.tag_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagValue.tag_name)
}
inline std::string* TagValue::mutable_tag_name() {
  std::string* _s = _internal_mutable_tag_name();
  // @@protoc_insertion_point(field_mutable:hc900.TagValue.tag_name)
  return _s;
}
inline const std::string& TagValue::_internal_tag_name() const {
  return _impl_.tag_name_.Get();
}
inline void TagValue::_internal_set_tag_name(const std::string& value) {
  
  _impl_.tag_name_.Set(value, GetArenaForAllocation());
}
inline std::string* TagValue::_internal_mutable_tag_name() {
  
  return _impl_.tag_name_.Mutable(GetArenaForAllocation());
}
inline std::string* TagValue::release_tag_name() {
  // @@protoc_insertion_point(field_release:hc900.TagValue.tag_name)
  return _impl_.tag_name_.Release();
}
inline void TagValue::set_allocated_tag_name(std::string* tag_name) {
  if (tag_name != nullptr) {
    
  } else {
    
  }
  _impl_.tag_name_.SetAllocated(tag_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.tag_name_.IsDefault()) {
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagValue.tag_name)
}

// float float32_val = 2;
inline bool TagValue::_internal_has_float32_val() const {
  return value_case() == kFloat32Val;
}
inline bool TagValue::has_float32_val() const {
  return _internal_has_float32_val();
}
inline void TagValue::set_has_float32_val() {
  _impl_._oneof_case_[0] = kFloat32Val;
}
inline void TagValue::clear_float32_val() {
  if (_internal_has_float32_val()) {
    _impl_.value_.float32_val_ = 0;
    clear_has_value();
  }
}
inline float TagValue::_internal_float32_val() const {
  if (_internal_has_float32_val()) {
    return _impl_.value_.float32_val_;
  }
  return 0;
}
inline void TagValue::_internal_set_float32_val(float value) {
  if (!_internal_has_float32_val()) {
    clear_value();
    set_has_float32_val();
  }
  _impl_.value_.float32_val_ = value;
}
inline float TagValue::float32_val() const {
  // @@protoc_insertion_point(field_get:hc900.TagValue.float32_val)
  return _internal_float32_val();
}
inline void TagValue::set_float32_val(float value) {
  _internal_set_float32_val(value);
  // @@protoc_insertion_point(field_set:hc900.TagValue.float32_val)
}

// uint32 uint16_val = 3;
inline bool TagValue::_internal_has_uint16_val() const {
  return value_case() == kUint16Val;
}
inline bool TagValue::has_uint16_val() const {
  return _internal_has_uint16_val();
}
inline void TagValue::set_has_uint16_val() {
  _impl_._oneof_case_[0] = kUint16Val;
}
inline void TagValue::clear_uint16_val() {
  if (_internal_has_uint16_val()) {
    _impl_.value_.uint16_val_ = 0u;
    clear_has_value();
  }
}
inline uint32_t TagValue::_internal_uint16_val() const {
  if (_internal_has_uint16_val()) {
    return _impl_.value_.uint16_val_;
  }
  return 0u;
}
inline void TagValue::_internal_set_uint16_val(uint32_t value) {
  if (!_internal_has_uint16_val()) {
    clear_value();
    set_has_uint16_val();
  }
  _impl_.value_.uint16_val_ = value;
}
inline uint32_t TagValue::uint16_val() const {
  // @@protoc_insertion_point(field_get:hc900.TagValue.uint16_val)
  return _internal_uint16_val();
}
inline void TagValue::set_uint16_val(uint32_t value) {
  _internal_set_uint16_val(value);
  // @@protoc_insertion_point(field_set:hc900.TagValue.uint16_val)
}

// uint32 quality = 4;
inline void TagValue::clear_quality() {
  _impl_.quality_ = 0u;
}
inline uint32_t TagValue::_internal_quality() const {
  return _impl_.quality_;
}
inline uint32_t TagValue::quality() const {
  // @@protoc_insertion_point(field_get:hc900.TagValue.quality)
  return _internal_quality();
}
inline void TagValue::_internal_set_quality(uint32_t value) {
  
  _impl_.quality_ = value;
}
inline void TagValue::set_quality(uint32_t value) {
  _internal_set_quality(value);
  // @@protoc_insertion_point(field_set:hc900.TagValue.quality)
}

// .google.protobuf.Timestamp timestamp = 5;
inline bool TagValue::_internal_has_timestamp() const {
  return this != internal_default_instance() && _impl_.timestamp_ != nullptr;
}
inline bool TagValue::has_timestamp() const {
  return _internal_has_timestamp();
}
inline const ::PROTOBUF_NAMESPACE_ID::Timestamp& TagValue::_internal_timestamp() const {
  const ::PROTOBUF_NAMESPACE_ID::Timestamp* p = _impl_.timestamp_;
  return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Timestamp&>(
      ::PROTOBUF_NAMESPACE_ID::_Timestamp_default_instance_);
}
inline const ::PROTOBUF_NAMESPACE_ID::Timestamp& TagValue::timestamp() const {
  // @@protoc_insertion_point(field_get:hc900.TagValue.timestamp)
  return _internal_timestamp();
}
inline void TagValue::unsafe_arena_set_allocated_timestamp(
    ::PROTOBUF_NAMESPACE_ID::Timestamp* timestamp) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.timestamp_);
  }
  _impl_.timestamp_ = timestamp;
  if (timestamp) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:hc900.TagValue.timestamp)
}
inline ::PROTOBUF_NAMESPACE_ID::Timestamp* TagValue::release_timestamp() {
  
  ::PROTOBUF_NAMESPACE_ID::Timestamp* temp = _impl_.timestamp_;
  _impl_.timestamp_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::Timestamp* TagValue::unsafe_arena_release_timestamp() {
  // @@protoc_insertion_point(field_release:hc900.TagValue.timestamp)
  
  ::PROTOBUF_NAMESPACE_ID::Timestamp* temp = _impl_.timestamp_;
  _impl_.timestamp_ = nullptr;
  return temp;
}
inline ::PROTOBUF_NAMESPACE_ID::Timestamp* TagValue::_internal_mutable_timestamp() {
  
  if (_impl_.timestamp_ == nullptr) {
    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Timestamp>(GetArenaForAllocation());
    _impl_.timestamp_ = p;
  }
  return _impl_.timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::Timestamp* TagValue::mutable_timestamp() {
  ::PROTOBUF_NAMESPACE_ID::Timestamp* _msg = _internal_mutable_timestamp();
  // @@protoc_insertion_point(field_mutable:hc900.TagValue.timestamp)
  return _msg;
}
inline void TagValue::set_allocated_timestamp(::PROTOBUF_NAMESPACE_ID::Timestamp* timestamp) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.timestamp_);
  }
  if (timestamp) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp));
    if (message_arena != submessage_arena) {
      timestamp = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp, submessage_arena);
    }
    
  } else {
    
  }
  _impl_.timestamp_ = timestamp;
  // @@protoc_insertion_point(field_set_allocated:hc900.TagValue.timestamp)
}

inline bool TagValue::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void TagValue::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline TagValue::ValueCase TagValue::value_case() const {
  return TagValue::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// TagMetadata

// string tag_name = 1;
inline void TagMetadata::clear_tag_name() {
  _impl_.tag_name_.ClearToEmpty();
}
inline const std::string& TagMetadata::tag_name() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.tag_name)
  return _internal_tag_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagMetadata::set_tag_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.tag_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.tag_name)
}
inline std::string* TagMetadata::mutable_tag_name() {
  std::string* _s = _internal_mutable_tag_name();
  // @@protoc_insertion_point(field_mutable:hc900.TagMetadata.tag_name)
  return _s;
}
inline const std::string& TagMetadata::_internal_tag_name() const {
  return _impl_.tag_name_.Get();
}
inline void TagMetadata::_internal_set_tag_name(const std::string& value) {
  
  _impl_.tag_name_.Set(value, GetArenaForAllocation());
}
inline std::string* TagMetadata::_internal_mutable_tag_name() {
  
  return _impl_.tag_name_.Mutable(GetArenaForAllocation());
}
inline std::string* TagMetadata::release_tag_name() {
  // @@protoc_insertion_point(field_release:hc900.TagMetadata.tag_name)
  return _impl_.tag_name_.Release();
}
inline void TagMetadata::set_allocated_tag_name(std::string* tag_name) {
  if (tag_name != nullptr) {
    
  } else {
    
  }
  _impl_.tag_name_.SetAllocated(tag_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.tag_name_.IsDefault()) {
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagMetadata.tag_name)
}

// uint32 address = 2;
inline void TagMetadata::clear_address() {
  _impl_.address_ = 0u;
}
inline uint32_t TagMetadata::_internal_address() const {
  return _impl_.address_;
}
inline uint32_t TagMetadata::address() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.address)
  return _internal_address();
}
inline void TagMetadata::_internal_set_address(uint32_t value) {
  
  _impl_.address_ = value;
}
inline void TagMetadata::set_address(uint32_t value) {
  _internal_set_address(value);
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.address)
}

// uint32 count = 3;
inline void TagMetadata::clear_count() {
  _impl_.count_ = 0u;
}
inline uint32_t TagMetadata::_internal_count() const {
  return _impl_.count_;
}
inline uint32_t TagMetadata::count() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.count)
  return _internal_count();
}
inline void TagMetadata::_internal_set_count(uint32_t value) {
  
  _impl_.count_ = value;
}
inline void TagMetadata::set_count(uint32_t value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.count)
}

// string type = 4;
inline void TagMetadata::clear_type() {
  _impl_.type_.ClearToEmpty();
}
inline const std::string& TagMetadata::type() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.type)
  return _internal_type();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagMetadata::set_type(ArgT0&& arg0, ArgT... args) {
 
 _impl_.type_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.type)
}
inline std::string* TagMetadata::mutable_type() {
  std::string* _s = _internal_mutable_type();
  // @@protoc_insertion_point(field_mutable:hc900.TagMetadata.type)
  return _s;
}
inline const std::string& TagMetadata::_internal_type() const {
  return _impl_.type_.Get();
}
inline void TagMetadata::_internal_set_type(const std::string& value) {
  
  _impl_.type_.Set(value, GetArenaForAllocation());
}
inline std::string* TagMetadata::_internal_mutable_type() {
  
  return _impl_.type_.Mutable(GetArenaForAllocation());
}
inline std::string* TagMetadata::release_type() {
  // @@protoc_insertion_point(field_release:hc900.TagMetadata.type)
  return _impl_.type_.Release();
}
inline void TagMetadata::set_allocated_type(std::string* type) {
  if (type != nullptr) {
    
  } else {
    
  }
  _impl_.type_.SetAllocated(type, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.type_.IsDefault()) {
    _impl_.type_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagMetadata.type)
}

// string access = 5;
inline void TagMetadata::clear_access() {
  _impl_.access_.ClearToEmpty();
}
inline const std::string& TagMetadata::access() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.access)
  return _internal_access();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagMetadata::set_access(ArgT0&& arg0, ArgT... args) {
 
 _impl_.access_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.access)
}
inline std::string* TagMetadata::mutable_access() {
  std::string* _s = _internal_mutable_access();
  // @@protoc_insertion_point(field_mutable:hc900.TagMetadata.access)
  return _s;
}
inline const std::string& TagMetadata::_internal_access() const {
  return _impl_.access_.Get();
}
inline void TagMetadata::_internal_set_access(const std::string& value) {
  
  _impl_.access_.Set(value, GetArenaForAllocation());
}
inline std::string* TagMetadata::_internal_mutable_access() {
  
  return _impl_.access_.Mutable(GetArenaForAllocation());
}
inline std::string* TagMetadata::release_access() {
  // @@protoc_insertion_point(field_release:hc900.TagMetadata.access)
  return _impl_.access_.Release();
}
inline void TagMetadata::set_allocated_access(std::string* access) {
  if (access != nullptr) {
    
  } else {
    
  }
  _impl_.access_.SetAllocated(access, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.access_.IsDefault()) {
    _impl_.access_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagMetadata.access)
}

// string description = 6;
inline void TagMetadata::clear_description() {
  _impl_.description_.ClearToEmpty();
}
inline const std::string& TagMetadata::description() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.description)
  return _internal_description();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagMetadata::set_description(ArgT0&& arg0, ArgT... args) {
 
 _impl_.description_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.description)
}
inline std::string* TagMetadata::mutable_description() {
  std::string* _s = _internal_mutable_description();
  // @@protoc_insertion_point(field_mutable:hc900.TagMetadata.description)
  return _s;
}
inline const std::string& TagMetadata::_internal_description() const {
  return _impl_.description_.Get();
}
inline void TagMetadata::_internal_set_description(const std::string& value) {
  
  _impl_.description_.Set(value, GetArenaForAllocation());
}
inline std::string* TagMetadata::_internal_mutable_description() {
  
  return _impl_.description_.Mutable(GetArenaForAllocation());
}
inline std::string* TagMetadata::release_description() {
  // @@protoc_insertion_point(field_release:hc900.TagMetadata.description)
  return _impl_.description_.Release();
}
inline void TagMetadata::set_allocated_description(std::string* description) {
  if (description != nullptr) {
    
  } else {
    
  }
  _impl_.description_.SetAllocated(description, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.description_.IsDefault()) {
    _impl_.description_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagMetadata.description)
}

// string eu = 7;
inline void TagMetadata::clear_eu() {
  _impl_.eu_.ClearToEmpty();
}
inline const std::string& TagMetadata::eu() const {
  // @@protoc_insertion_point(field_get:hc900.TagMetadata.eu)
  return _internal_eu();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TagMetadata::set_eu(ArgT0&& arg0, ArgT... args) {
 
 _impl_.eu_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.TagMetadata.eu)
}
inline std::string* TagMetadata::mutable_eu() {
  std::string* _s = _internal_mutable_eu();
  // @@protoc_insertion_point(field_mutable:hc900.TagMetadata.eu)
  return _s;
}
inline const std::string& TagMetadata::_internal_eu() const {
  return _impl_.eu_.Get();
}
inline void TagMetadata::_internal_set_eu(const std::string& value) {
  
  _impl_.eu_.Set(value, GetArenaForAllocation());
}
inline std::string* TagMetadata::_internal_mutable_eu() {
  
  return _impl_.eu_.Mutable(GetArenaForAllocation());
}
inline std::string* TagMetadata::release_eu() {
  // @@protoc_insertion_point(field_release:hc900.TagMetadata.eu)
  return _impl_.eu_.Release();
}
inline void TagMetadata::set_allocated_eu(std::string* eu) {
  if (eu != nullptr) {
    
  } else {
    
  }
  _impl_.eu_.SetAllocated(eu, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.eu_.IsDefault()) {
    _impl_.eu_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.TagMetadata.eu)
}

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

// ReadTagsRequest

// repeated string tag_names = 1;
inline int ReadTagsRequest::_internal_tag_names_size() const {
  return _impl_.tag_names_.size();
}
inline int ReadTagsRequest::tag_names_size() const {
  return _internal_tag_names_size();
}
inline void ReadTagsRequest::clear_tag_names() {
  _impl_.tag_names_.Clear();
}
inline std::string* ReadTagsRequest::add_tag_names() {
  std::string* _s = _internal_add_tag_names();
  // @@protoc_insertion_point(field_add_mutable:hc900.ReadTagsRequest.tag_names)
  return _s;
}
inline const std::string& ReadTagsRequest::_internal_tag_names(int index) const {
  return _impl_.tag_names_.Get(index);
}
inline const std::string& ReadTagsRequest::tag_names(int index) const {
  // @@protoc_insertion_point(field_get:hc900.ReadTagsRequest.tag_names)
  return _internal_tag_names(index);
}
inline std::string* ReadTagsRequest::mutable_tag_names(int index) {
  // @@protoc_insertion_point(field_mutable:hc900.ReadTagsRequest.tag_names)
  return _impl_.tag_names_.Mutable(index);
}
inline void ReadTagsRequest::set_tag_names(int index, const std::string& value) {
  _impl_.tag_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::set_tag_names(int index, std::string&& value) {
  _impl_.tag_names_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::set_tag_names(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.tag_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::set_tag_names(int index, const char* value, size_t size) {
  _impl_.tag_names_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:hc900.ReadTagsRequest.tag_names)
}
inline std::string* ReadTagsRequest::_internal_add_tag_names() {
  return _impl_.tag_names_.Add();
}
inline void ReadTagsRequest::add_tag_names(const std::string& value) {
  _impl_.tag_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::add_tag_names(std::string&& value) {
  _impl_.tag_names_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::add_tag_names(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.tag_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:hc900.ReadTagsRequest.tag_names)
}
inline void ReadTagsRequest::add_tag_names(const char* value, size_t size) {
  _impl_.tag_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:hc900.ReadTagsRequest.tag_names)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ReadTagsRequest::tag_names() const {
  // @@protoc_insertion_point(field_list:hc900.ReadTagsRequest.tag_names)
  return _impl_.tag_names_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
ReadTagsRequest::mutable_tag_names() {
  // @@protoc_insertion_point(field_mutable_list:hc900.ReadTagsRequest.tag_names)
  return &_impl_.tag_names_;
}

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

// ReadTagsResponse

// repeated .hc900.TagValue values = 1;
inline int ReadTagsResponse::_internal_values_size() const {
  return _impl_.values_.size();
}
inline int ReadTagsResponse::values_size() const {
  return _internal_values_size();
}
inline void ReadTagsResponse::clear_values() {
  _impl_.values_.Clear();
}
inline ::hc900::TagValue* ReadTagsResponse::mutable_values(int index) {
  // @@protoc_insertion_point(field_mutable:hc900.ReadTagsResponse.values)
  return _impl_.values_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagValue >*
ReadTagsResponse::mutable_values() {
  // @@protoc_insertion_point(field_mutable_list:hc900.ReadTagsResponse.values)
  return &_impl_.values_;
}
inline const ::hc900::TagValue& ReadTagsResponse::_internal_values(int index) const {
  return _impl_.values_.Get(index);
}
inline const ::hc900::TagValue& ReadTagsResponse::values(int index) const {
  // @@protoc_insertion_point(field_get:hc900.ReadTagsResponse.values)
  return _internal_values(index);
}
inline ::hc900::TagValue* ReadTagsResponse::_internal_add_values() {
  return _impl_.values_.Add();
}
inline ::hc900::TagValue* ReadTagsResponse::add_values() {
  ::hc900::TagValue* _add = _internal_add_values();
  // @@protoc_insertion_point(field_add:hc900.ReadTagsResponse.values)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagValue >&
ReadTagsResponse::values() const {
  // @@protoc_insertion_point(field_list:hc900.ReadTagsResponse.values)
  return _impl_.values_;
}

// bool from_cache = 2;
inline void ReadTagsResponse::clear_from_cache() {
  _impl_.from_cache_ = false;
}
inline bool ReadTagsResponse::_internal_from_cache() const {
  return _impl_.from_cache_;
}
inline bool ReadTagsResponse::from_cache() const {
  // @@protoc_insertion_point(field_get:hc900.ReadTagsResponse.from_cache)
  return _internal_from_cache();
}
inline void ReadTagsResponse::_internal_set_from_cache(bool value) {
  
  _impl_.from_cache_ = value;
}
inline void ReadTagsResponse::set_from_cache(bool value) {
  _internal_set_from_cache(value);
  // @@protoc_insertion_point(field_set:hc900.ReadTagsResponse.from_cache)
}

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

// WriteTagRequest

// string tag_name = 1;
inline void WriteTagRequest::clear_tag_name() {
  _impl_.tag_name_.ClearToEmpty();
}
inline const std::string& WriteTagRequest::tag_name() const {
  // @@protoc_insertion_point(field_get:hc900.WriteTagRequest.tag_name)
  return _internal_tag_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void WriteTagRequest::set_tag_name(ArgT0&& arg0, ArgT... args) {
 
 _impl_.tag_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.WriteTagRequest.tag_name)
}
inline std::string* WriteTagRequest::mutable_tag_name() {
  std::string* _s = _internal_mutable_tag_name();
  // @@protoc_insertion_point(field_mutable:hc900.WriteTagRequest.tag_name)
  return _s;
}
inline const std::string& WriteTagRequest::_internal_tag_name() const {
  return _impl_.tag_name_.Get();
}
inline void WriteTagRequest::_internal_set_tag_name(const std::string& value) {
  
  _impl_.tag_name_.Set(value, GetArenaForAllocation());
}
inline std::string* WriteTagRequest::_internal_mutable_tag_name() {
  
  return _impl_.tag_name_.Mutable(GetArenaForAllocation());
}
inline std::string* WriteTagRequest::release_tag_name() {
  // @@protoc_insertion_point(field_release:hc900.WriteTagRequest.tag_name)
  return _impl_.tag_name_.Release();
}
inline void WriteTagRequest::set_allocated_tag_name(std::string* tag_name) {
  if (tag_name != nullptr) {
    
  } else {
    
  }
  _impl_.tag_name_.SetAllocated(tag_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.tag_name_.IsDefault()) {
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.WriteTagRequest.tag_name)
}

// double value = 2;
inline void WriteTagRequest::clear_value() {
  _impl_.value_ = 0;
}
inline double WriteTagRequest::_internal_value() const {
  return _impl_.value_;
}
inline double WriteTagRequest::value() const {
  // @@protoc_insertion_point(field_get:hc900.WriteTagRequest.value)
  return _internal_value();
}
inline void WriteTagRequest::_internal_set_value(double value) {
  
  _impl_.value_ = value;
}
inline void WriteTagRequest::set_value(double value) {
  _internal_set_value(value);
  // @@protoc_insertion_point(field_set:hc900.WriteTagRequest.value)
}

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

// WriteTagResponse

// bool success = 1;
inline void WriteTagResponse::clear_success() {
  _impl_.success_ = false;
}
inline bool WriteTagResponse::_internal_success() const {
  return _impl_.success_;
}
inline bool WriteTagResponse::success() const {
  // @@protoc_insertion_point(field_get:hc900.WriteTagResponse.success)
  return _internal_success();
}
inline void WriteTagResponse::_internal_set_success(bool value) {
  
  _impl_.success_ = value;
}
inline void WriteTagResponse::set_success(bool value) {
  _internal_set_success(value);
  // @@protoc_insertion_point(field_set:hc900.WriteTagResponse.success)
}

// string error = 2;
inline void WriteTagResponse::clear_error() {
  _impl_.error_.ClearToEmpty();
}
inline const std::string& WriteTagResponse::error() const {
  // @@protoc_insertion_point(field_get:hc900.WriteTagResponse.error)
  return _internal_error();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void WriteTagResponse::set_error(ArgT0&& arg0, ArgT... args) {
 
 _impl_.error_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.WriteTagResponse.error)
}
inline std::string* WriteTagResponse::mutable_error() {
  std::string* _s = _internal_mutable_error();
  // @@protoc_insertion_point(field_mutable:hc900.WriteTagResponse.error)
  return _s;
}
inline const std::string& WriteTagResponse::_internal_error() const {
  return _impl_.error_.Get();
}
inline void WriteTagResponse::_internal_set_error(const std::string& value) {
  
  _impl_.error_.Set(value, GetArenaForAllocation());
}
inline std::string* WriteTagResponse::_internal_mutable_error() {
  
  return _impl_.error_.Mutable(GetArenaForAllocation());
}
inline std::string* WriteTagResponse::release_error() {
  // @@protoc_insertion_point(field_release:hc900.WriteTagResponse.error)
  return _impl_.error_.Release();
}
inline void WriteTagResponse::set_allocated_error(std::string* error) {
  if (error != nullptr) {
    
  } else {
    
  }
  _impl_.error_.SetAllocated(error, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.error_.IsDefault()) {
    _impl_.error_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.WriteTagResponse.error)
}

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

// StreamTagsRequest

// int32 interval_ms = 1;
inline void StreamTagsRequest::clear_interval_ms() {
  _impl_.interval_ms_ = 0;
}
inline int32_t StreamTagsRequest::_internal_interval_ms() const {
  return _impl_.interval_ms_;
}
inline int32_t StreamTagsRequest::interval_ms() const {
  // @@protoc_insertion_point(field_get:hc900.StreamTagsRequest.interval_ms)
  return _internal_interval_ms();
}
inline void StreamTagsRequest::_internal_set_interval_ms(int32_t value) {
  
  _impl_.interval_ms_ = value;
}
inline void StreamTagsRequest::set_interval_ms(int32_t value) {
  _internal_set_interval_ms(value);
  // @@protoc_insertion_point(field_set:hc900.StreamTagsRequest.interval_ms)
}

// repeated string tag_names = 2;
inline int StreamTagsRequest::_internal_tag_names_size() const {
  return _impl_.tag_names_.size();
}
inline int StreamTagsRequest::tag_names_size() const {
  return _internal_tag_names_size();
}
inline void StreamTagsRequest::clear_tag_names() {
  _impl_.tag_names_.Clear();
}
inline std::string* StreamTagsRequest::add_tag_names() {
  std::string* _s = _internal_add_tag_names();
  // @@protoc_insertion_point(field_add_mutable:hc900.StreamTagsRequest.tag_names)
  return _s;
}
inline const std::string& StreamTagsRequest::_internal_tag_names(int index) const {
  return _impl_.tag_names_.Get(index);
}
inline const std::string& StreamTagsRequest::tag_names(int index) const {
  // @@protoc_insertion_point(field_get:hc900.StreamTagsRequest.tag_names)
  return _internal_tag_names(index);
}
inline std::string* StreamTagsRequest::mutable_tag_names(int index) {
  // @@protoc_insertion_point(field_mutable:hc900.StreamTagsRequest.tag_names)
  return _impl_.tag_names_.Mutable(index);
}
inline void StreamTagsRequest::set_tag_names(int index, const std::string& value) {
  _impl_.tag_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::set_tag_names(int index, std::string&& value) {
  _impl_.tag_names_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::set_tag_names(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.tag_names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::set_tag_names(int index, const char* value, size_t size) {
  _impl_.tag_names_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:hc900.StreamTagsRequest.tag_names)
}
inline std::string* StreamTagsRequest::_internal_add_tag_names() {
  return _impl_.tag_names_.Add();
}
inline void StreamTagsRequest::add_tag_names(const std::string& value) {
  _impl_.tag_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::add_tag_names(std::string&& value) {
  _impl_.tag_names_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::add_tag_names(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.tag_names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:hc900.StreamTagsRequest.tag_names)
}
inline void StreamTagsRequest::add_tag_names(const char* value, size_t size) {
  _impl_.tag_names_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:hc900.StreamTagsRequest.tag_names)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
StreamTagsRequest::tag_names() const {
  // @@protoc_insertion_point(field_list:hc900.StreamTagsRequest.tag_names)
  return _impl_.tag_names_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
StreamTagsRequest::mutable_tag_names() {
  // @@protoc_insertion_point(field_mutable_list:hc900.StreamTagsRequest.tag_names)
  return &_impl_.tag_names_;
}

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

// ListTagsRequest

// string filter = 1;
inline void ListTagsRequest::clear_filter() {
  _impl_.filter_.ClearToEmpty();
}
inline const std::string& ListTagsRequest::filter() const {
  // @@protoc_insertion_point(field_get:hc900.ListTagsRequest.filter)
  return _internal_filter();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ListTagsRequest::set_filter(ArgT0&& arg0, ArgT... args) {
 
 _impl_.filter_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.ListTagsRequest.filter)
}
inline std::string* ListTagsRequest::mutable_filter() {
  std::string* _s = _internal_mutable_filter();
  // @@protoc_insertion_point(field_mutable:hc900.ListTagsRequest.filter)
  return _s;
}
inline const std::string& ListTagsRequest::_internal_filter() const {
  return _impl_.filter_.Get();
}
inline void ListTagsRequest::_internal_set_filter(const std::string& value) {
  
  _impl_.filter_.Set(value, GetArenaForAllocation());
}
inline std::string* ListTagsRequest::_internal_mutable_filter() {
  
  return _impl_.filter_.Mutable(GetArenaForAllocation());
}
inline std::string* ListTagsRequest::release_filter() {
  // @@protoc_insertion_point(field_release:hc900.ListTagsRequest.filter)
  return _impl_.filter_.Release();
}
inline void ListTagsRequest::set_allocated_filter(std::string* filter) {
  if (filter != nullptr) {
    
  } else {
    
  }
  _impl_.filter_.SetAllocated(filter, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.filter_.IsDefault()) {
    _impl_.filter_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.ListTagsRequest.filter)
}

// int32 limit = 2;
inline void ListTagsRequest::clear_limit() {
  _impl_.limit_ = 0;
}
inline int32_t ListTagsRequest::_internal_limit() const {
  return _impl_.limit_;
}
inline int32_t ListTagsRequest::limit() const {
  // @@protoc_insertion_point(field_get:hc900.ListTagsRequest.limit)
  return _internal_limit();
}
inline void ListTagsRequest::_internal_set_limit(int32_t value) {
  
  _impl_.limit_ = value;
}
inline void ListTagsRequest::set_limit(int32_t value) {
  _internal_set_limit(value);
  // @@protoc_insertion_point(field_set:hc900.ListTagsRequest.limit)
}

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

// ListTagsResponse

// repeated .hc900.TagMetadata tags = 1;
inline int ListTagsResponse::_internal_tags_size() const {
  return _impl_.tags_.size();
}
inline int ListTagsResponse::tags_size() const {
  return _internal_tags_size();
}
inline void ListTagsResponse::clear_tags() {
  _impl_.tags_.Clear();
}
inline ::hc900::TagMetadata* ListTagsResponse::mutable_tags(int index) {
  // @@protoc_insertion_point(field_mutable:hc900.ListTagsResponse.tags)
  return _impl_.tags_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagMetadata >*
ListTagsResponse::mutable_tags() {
  // @@protoc_insertion_point(field_mutable_list:hc900.ListTagsResponse.tags)
  return &_impl_.tags_;
}
inline const ::hc900::TagMetadata& ListTagsResponse::_internal_tags(int index) const {
  return _impl_.tags_.Get(index);
}
inline const ::hc900::TagMetadata& ListTagsResponse::tags(int index) const {
  // @@protoc_insertion_point(field_get:hc900.ListTagsResponse.tags)
  return _internal_tags(index);
}
inline ::hc900::TagMetadata* ListTagsResponse::_internal_add_tags() {
  return _impl_.tags_.Add();
}
inline ::hc900::TagMetadata* ListTagsResponse::add_tags() {
  ::hc900::TagMetadata* _add = _internal_add_tags();
  // @@protoc_insertion_point(field_add:hc900.ListTagsResponse.tags)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::hc900::TagMetadata >&
ListTagsResponse::tags() const {
  // @@protoc_insertion_point(field_list:hc900.ListTagsResponse.tags)
  return _impl_.tags_;
}

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

// HealthCheckRequest

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

// HealthCheckResponse

// .hc900.HealthCheckResponse.ServingStatus status = 1;
inline void HealthCheckResponse::clear_status() {
  _impl_.status_ = 0;
}
inline ::hc900::HealthCheckResponse_ServingStatus HealthCheckResponse::_internal_status() const {
  return static_cast< ::hc900::HealthCheckResponse_ServingStatus >(_impl_.status_);
}
inline ::hc900::HealthCheckResponse_ServingStatus HealthCheckResponse::status() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.status)
  return _internal_status();
}
inline void HealthCheckResponse::_internal_set_status(::hc900::HealthCheckResponse_ServingStatus value) {
  
  _impl_.status_ = value;
}
inline void HealthCheckResponse::set_status(::hc900::HealthCheckResponse_ServingStatus value) {
  _internal_set_status(value);
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.status)
}

// double uptime_sec = 2;
inline void HealthCheckResponse::clear_uptime_sec() {
  _impl_.uptime_sec_ = 0;
}
inline double HealthCheckResponse::_internal_uptime_sec() const {
  return _impl_.uptime_sec_;
}
inline double HealthCheckResponse::uptime_sec() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.uptime_sec)
  return _internal_uptime_sec();
}
inline void HealthCheckResponse::_internal_set_uptime_sec(double value) {
  
  _impl_.uptime_sec_ = value;
}
inline void HealthCheckResponse::set_uptime_sec(double value) {
  _internal_set_uptime_sec(value);
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.uptime_sec)
}

// uint64 poll_count = 3;
inline void HealthCheckResponse::clear_poll_count() {
  _impl_.poll_count_ = uint64_t{0u};
}
inline uint64_t HealthCheckResponse::_internal_poll_count() const {
  return _impl_.poll_count_;
}
inline uint64_t HealthCheckResponse::poll_count() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.poll_count)
  return _internal_poll_count();
}
inline void HealthCheckResponse::_internal_set_poll_count(uint64_t value) {
  
  _impl_.poll_count_ = value;
}
inline void HealthCheckResponse::set_poll_count(uint64_t value) {
  _internal_set_poll_count(value);
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.poll_count)
}

// double last_poll_ms = 4;
inline void HealthCheckResponse::clear_last_poll_ms() {
  _impl_.last_poll_ms_ = 0;
}
inline double HealthCheckResponse::_internal_last_poll_ms() const {
  return _impl_.last_poll_ms_;
}
inline double HealthCheckResponse::last_poll_ms() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.last_poll_ms)
  return _internal_last_poll_ms();
}
inline void HealthCheckResponse::_internal_set_last_poll_ms(double value) {
  
  _impl_.last_poll_ms_ = value;
}
inline void HealthCheckResponse::set_last_poll_ms(double value) {
  _internal_set_last_poll_ms(value);
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.last_poll_ms)
}

// string controller_ip = 5;
inline void HealthCheckResponse::clear_controller_ip() {
  _impl_.controller_ip_.ClearToEmpty();
}
inline const std::string& HealthCheckResponse::controller_ip() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.controller_ip)
  return _internal_controller_ip();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void HealthCheckResponse::set_controller_ip(ArgT0&& arg0, ArgT... args) {
 
 _impl_.controller_ip_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.controller_ip)
}
inline std::string* HealthCheckResponse::mutable_controller_ip() {
  std::string* _s = _internal_mutable_controller_ip();
  // @@protoc_insertion_point(field_mutable:hc900.HealthCheckResponse.controller_ip)
  return _s;
}
inline const std::string& HealthCheckResponse::_internal_controller_ip() const {
  return _impl_.controller_ip_.Get();
}
inline void HealthCheckResponse::_internal_set_controller_ip(const std::string& value) {
  
  _impl_.controller_ip_.Set(value, GetArenaForAllocation());
}
inline std::string* HealthCheckResponse::_internal_mutable_controller_ip() {
  
  return _impl_.controller_ip_.Mutable(GetArenaForAllocation());
}
inline std::string* HealthCheckResponse::release_controller_ip() {
  // @@protoc_insertion_point(field_release:hc900.HealthCheckResponse.controller_ip)
  return _impl_.controller_ip_.Release();
}
inline void HealthCheckResponse::set_allocated_controller_ip(std::string* controller_ip) {
  if (controller_ip != nullptr) {
    
  } else {
    
  }
  _impl_.controller_ip_.SetAllocated(controller_ip, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.controller_ip_.IsDefault()) {
    _impl_.controller_ip_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:hc900.HealthCheckResponse.controller_ip)
}

// uint32 active_tags = 6;
inline void HealthCheckResponse::clear_active_tags() {
  _impl_.active_tags_ = 0u;
}
inline uint32_t HealthCheckResponse::_internal_active_tags() const {
  return _impl_.active_tags_;
}
inline uint32_t HealthCheckResponse::active_tags() const {
  // @@protoc_insertion_point(field_get:hc900.HealthCheckResponse.active_tags)
  return _internal_active_tags();
}
inline void HealthCheckResponse::_internal_set_active_tags(uint32_t value) {
  
  _impl_.active_tags_ = value;
}
inline void HealthCheckResponse::set_active_tags(uint32_t value) {
  _internal_set_active_tags(value);
  // @@protoc_insertion_point(field_set:hc900.HealthCheckResponse.active_tags)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace hc900

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::hc900::HealthCheckResponse_ServingStatus> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::hc900::HealthCheckResponse_ServingStatus>() {
  return ::hc900::HealthCheckResponse_ServingStatus_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_modbus_5fgateway_2eproto
