// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: greptime/v1/meta/heartbeat.proto

package greptime.v1.meta;

public final class HeartbeatOuterClass {
  private HeartbeatOuterClass() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code greptime.v1.meta.RegionRole}
   */
  public enum RegionRole
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * Writable region(mito2), Readonly region(file).
     * </pre>
     *
     * <code>Leader = 0;</code>
     */
    Leader(0),
    /**
     * <pre>
     * Readonly region.
     * </pre>
     *
     * <code>Follower = 1;</code>
     */
    Follower(1),
    /**
     * <pre>
     * A downgrading region, which is in the process of downgrading from Leader to
     * Follower.
     * This role is used to prevent the region from being written during the
     * downgrade process.
     * </pre>
     *
     * <code>DowngradingLeader = 2;</code>
     */
    DowngradingLeader(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Writable region(mito2), Readonly region(file).
     * </pre>
     *
     * <code>Leader = 0;</code>
     */
    public static final int Leader_VALUE = 0;
    /**
     * <pre>
     * Readonly region.
     * </pre>
     *
     * <code>Follower = 1;</code>
     */
    public static final int Follower_VALUE = 1;
    /**
     * <pre>
     * A downgrading region, which is in the process of downgrading from Leader to
     * Follower.
     * This role is used to prevent the region from being written during the
     * downgrade process.
     * </pre>
     *
     * <code>DowngradingLeader = 2;</code>
     */
    public static final int DowngradingLeader_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static RegionRole valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static RegionRole forNumber(int value) {
      switch (value) {
        case 0: return Leader;
        case 1: return Follower;
        case 2: return DowngradingLeader;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<RegionRole>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        RegionRole> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<RegionRole>() {
            public RegionRole findValueByNumber(int number) {
              return RegionRole.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.getDescriptor().getEnumTypes().get(0);
    }

    private static final RegionRole[] VALUES = values();

    public static RegionRole valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private RegionRole(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:greptime.v1.meta.RegionRole)
  }

  public interface HeartbeatRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.HeartbeatRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return The header.
     */
    greptime.v1.meta.Common.RequestHeader getHeader();
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     */
    greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder();

    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     * @return Whether the peer field is set.
     */
    boolean hasPeer();
    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     * @return The peer.
     */
    greptime.v1.meta.Common.Peer getPeer();
    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     */
    greptime.v1.meta.Common.PeerOrBuilder getPeerOrBuilder();

    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     * @return Whether the reportInterval field is set.
     */
    boolean hasReportInterval();
    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     * @return The reportInterval.
     */
    greptime.v1.meta.Common.TimeInterval getReportInterval();
    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     */
    greptime.v1.meta.Common.TimeIntervalOrBuilder getReportIntervalOrBuilder();

    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat> 
        getRegionStatsList();
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionStat getRegionStats(int index);
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    int getRegionStatsCount();
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder> 
        getRegionStatsOrBuilderList();
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder getRegionStatsOrBuilder(
        int index);

    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     * @return Whether the mailboxMessage field is set.
     */
    boolean hasMailboxMessage();
    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     * @return The mailboxMessage.
     */
    greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage();
    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder();

    /**
     * <pre>
     * The duration since the heartbeat task's epoch in milliseconds.
     * </pre>
     *
     * <code>uint64 duration_since_epoch = 6;</code>
     * @return The durationSinceEpoch.
     */
    long getDurationSinceEpoch();

    /**
     * <pre>
     * The node's epoch
     * </pre>
     *
     * <code>uint64 node_epoch = 7;</code>
     * @return The nodeEpoch.
     */
    long getNodeEpoch();

    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     * @return Whether the info field is set.
     */
    boolean hasInfo();
    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     * @return The info.
     */
    greptime.v1.meta.HeartbeatOuterClass.NodeInfo getInfo();
    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder getInfoOrBuilder();

    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     * @return Whether the flowStat field is set.
     */
    boolean hasFlowStat();
    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     * @return The flowStat.
     */
    greptime.v1.meta.HeartbeatOuterClass.FlowStat getFlowStat();
    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder getFlowStatOrBuilder();

    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     * @return Whether the datanode field is set.
     */
    boolean hasDatanode();
    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     * @return The datanode.
     */
    greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDatanode();
    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder getDatanodeOrBuilder();

    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     * @return Whether the frontend field is set.
     */
    boolean hasFrontend();
    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     * @return The frontend.
     */
    greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getFrontend();
    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder getFrontendOrBuilder();

    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     * @return Whether the flownode field is set.
     */
    boolean hasFlownode();
    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     * @return The flownode.
     */
    greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getFlownode();
    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder getFlownodeOrBuilder();

    public greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.NodeWorkloadsCase getNodeWorkloadsCase();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.HeartbeatRequest}
   */
  public static final class HeartbeatRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.HeartbeatRequest)
      HeartbeatRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HeartbeatRequest.newBuilder() to construct.
    private HeartbeatRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HeartbeatRequest() {
      regionStats_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HeartbeatRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HeartbeatRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              greptime.v1.meta.Common.RequestHeader.Builder subBuilder = null;
              if (header_ != null) {
                subBuilder = header_.toBuilder();
              }
              header_ = input.readMessage(greptime.v1.meta.Common.RequestHeader.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(header_);
                header_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              greptime.v1.meta.Common.Peer.Builder subBuilder = null;
              if (peer_ != null) {
                subBuilder = peer_.toBuilder();
              }
              peer_ = input.readMessage(greptime.v1.meta.Common.Peer.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(peer_);
                peer_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              greptime.v1.meta.Common.TimeInterval.Builder subBuilder = null;
              if (reportInterval_ != null) {
                subBuilder = reportInterval_.toBuilder();
              }
              reportInterval_ = input.readMessage(greptime.v1.meta.Common.TimeInterval.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(reportInterval_);
                reportInterval_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                regionStats_ = new java.util.ArrayList<greptime.v1.meta.HeartbeatOuterClass.RegionStat>();
                mutable_bitField0_ |= 0x00000001;
              }
              regionStats_.add(
                  input.readMessage(greptime.v1.meta.HeartbeatOuterClass.RegionStat.parser(), extensionRegistry));
              break;
            }
            case 42: {
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder subBuilder = null;
              if (mailboxMessage_ != null) {
                subBuilder = mailboxMessage_.toBuilder();
              }
              mailboxMessage_ = input.readMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(mailboxMessage_);
                mailboxMessage_ = subBuilder.buildPartial();
              }

              break;
            }
            case 48: {

              durationSinceEpoch_ = input.readUInt64();
              break;
            }
            case 56: {

              nodeEpoch_ = input.readUInt64();
              break;
            }
            case 66: {
              greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder subBuilder = null;
              if (info_ != null) {
                subBuilder = info_.toBuilder();
              }
              info_ = input.readMessage(greptime.v1.meta.HeartbeatOuterClass.NodeInfo.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(info_);
                info_ = subBuilder.buildPartial();
              }

              break;
            }
            case 74: {
              greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder subBuilder = null;
              if (flowStat_ != null) {
                subBuilder = flowStat_.toBuilder();
              }
              flowStat_ = input.readMessage(greptime.v1.meta.HeartbeatOuterClass.FlowStat.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(flowStat_);
                flowStat_ = subBuilder.buildPartial();
              }

              break;
            }
            case 82: {
              greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder subBuilder = null;
              if (nodeWorkloadsCase_ == 10) {
                subBuilder = ((greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_).toBuilder();
              }
              nodeWorkloads_ =
                  input.readMessage(greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_);
                nodeWorkloads_ = subBuilder.buildPartial();
              }
              nodeWorkloadsCase_ = 10;
              break;
            }
            case 90: {
              greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder subBuilder = null;
              if (nodeWorkloadsCase_ == 11) {
                subBuilder = ((greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_).toBuilder();
              }
              nodeWorkloads_ =
                  input.readMessage(greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_);
                nodeWorkloads_ = subBuilder.buildPartial();
              }
              nodeWorkloadsCase_ = 11;
              break;
            }
            case 98: {
              greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder subBuilder = null;
              if (nodeWorkloadsCase_ == 12) {
                subBuilder = ((greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_).toBuilder();
              }
              nodeWorkloads_ =
                  input.readMessage(greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_);
                nodeWorkloads_ = subBuilder.buildPartial();
              }
              nodeWorkloadsCase_ = 12;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          regionStats_ = java.util.Collections.unmodifiableList(regionStats_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.class, greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.Builder.class);
    }

    private int nodeWorkloadsCase_ = 0;
    private java.lang.Object nodeWorkloads_;
    public enum NodeWorkloadsCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATANODE(10),
      FRONTEND(11),
      FLOWNODE(12),
      NODEWORKLOADS_NOT_SET(0);
      private final int value;
      private NodeWorkloadsCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static NodeWorkloadsCase valueOf(int value) {
        return forNumber(value);
      }

      public static NodeWorkloadsCase forNumber(int value) {
        switch (value) {
          case 10: return DATANODE;
          case 11: return FRONTEND;
          case 12: return FLOWNODE;
          case 0: return NODEWORKLOADS_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public NodeWorkloadsCase
    getNodeWorkloadsCase() {
      return NodeWorkloadsCase.forNumber(
          nodeWorkloadsCase_);
    }

    public static final int HEADER_FIELD_NUMBER = 1;
    private greptime.v1.meta.Common.RequestHeader header_;
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return header_ != null;
    }
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return The header.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.RequestHeader getHeader() {
      return header_ == null ? greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
    }
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder() {
      return getHeader();
    }

    public static final int PEER_FIELD_NUMBER = 2;
    private greptime.v1.meta.Common.Peer peer_;
    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     * @return Whether the peer field is set.
     */
    @java.lang.Override
    public boolean hasPeer() {
      return peer_ != null;
    }
    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     * @return The peer.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.Peer getPeer() {
      return peer_ == null ? greptime.v1.meta.Common.Peer.getDefaultInstance() : peer_;
    }
    /**
     * <pre>
     * Self peer
     * </pre>
     *
     * <code>.greptime.v1.meta.Peer peer = 2;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.PeerOrBuilder getPeerOrBuilder() {
      return getPeer();
    }

    public static final int REPORT_INTERVAL_FIELD_NUMBER = 3;
    private greptime.v1.meta.Common.TimeInterval reportInterval_;
    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     * @return Whether the reportInterval field is set.
     */
    @java.lang.Override
    public boolean hasReportInterval() {
      return reportInterval_ != null;
    }
    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     * @return The reportInterval.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.TimeInterval getReportInterval() {
      return reportInterval_ == null ? greptime.v1.meta.Common.TimeInterval.getDefaultInstance() : reportInterval_;
    }
    /**
     * <pre>
     * Actually reported time interval
     * </pre>
     *
     * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.TimeIntervalOrBuilder getReportIntervalOrBuilder() {
      return getReportInterval();
    }

    public static final int REGION_STATS_FIELD_NUMBER = 4;
    private java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat> regionStats_;
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    @java.lang.Override
    public java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat> getRegionStatsList() {
      return regionStats_;
    }
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder> 
        getRegionStatsOrBuilderList() {
      return regionStats_;
    }
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    @java.lang.Override
    public int getRegionStatsCount() {
      return regionStats_.size();
    }
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionStat getRegionStats(int index) {
      return regionStats_.get(index);
    }
    /**
     * <pre>
     * Region stats on this node
     * </pre>
     *
     * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder getRegionStatsOrBuilder(
        int index) {
      return regionStats_.get(index);
    }

    public static final int MAILBOX_MESSAGE_FIELD_NUMBER = 5;
    private greptime.v1.meta.HeartbeatOuterClass.MailboxMessage mailboxMessage_;
    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     * @return Whether the mailboxMessage field is set.
     */
    @java.lang.Override
    public boolean hasMailboxMessage() {
      return mailboxMessage_ != null;
    }
    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     * @return The mailboxMessage.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage() {
      return mailboxMessage_ == null ? greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
    }
    /**
     * <pre>
     * Mailbox send message to Metasrv
     * </pre>
     *
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder() {
      return getMailboxMessage();
    }

    public static final int DURATION_SINCE_EPOCH_FIELD_NUMBER = 6;
    private long durationSinceEpoch_;
    /**
     * <pre>
     * The duration since the heartbeat task's epoch in milliseconds.
     * </pre>
     *
     * <code>uint64 duration_since_epoch = 6;</code>
     * @return The durationSinceEpoch.
     */
    @java.lang.Override
    public long getDurationSinceEpoch() {
      return durationSinceEpoch_;
    }

    public static final int NODE_EPOCH_FIELD_NUMBER = 7;
    private long nodeEpoch_;
    /**
     * <pre>
     * The node's epoch
     * </pre>
     *
     * <code>uint64 node_epoch = 7;</code>
     * @return The nodeEpoch.
     */
    @java.lang.Override
    public long getNodeEpoch() {
      return nodeEpoch_;
    }

    public static final int INFO_FIELD_NUMBER = 8;
    private greptime.v1.meta.HeartbeatOuterClass.NodeInfo info_;
    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     * @return Whether the info field is set.
     */
    @java.lang.Override
    public boolean hasInfo() {
      return info_ != null;
    }
    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     * @return The info.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.NodeInfo getInfo() {
      return info_ == null ? greptime.v1.meta.HeartbeatOuterClass.NodeInfo.getDefaultInstance() : info_;
    }
    /**
     * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder getInfoOrBuilder() {
      return getInfo();
    }

    public static final int FLOW_STAT_FIELD_NUMBER = 9;
    private greptime.v1.meta.HeartbeatOuterClass.FlowStat flowStat_;
    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     * @return Whether the flowStat field is set.
     */
    @java.lang.Override
    public boolean hasFlowStat() {
      return flowStat_ != null;
    }
    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     * @return The flowStat.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlowStat getFlowStat() {
      return flowStat_ == null ? greptime.v1.meta.HeartbeatOuterClass.FlowStat.getDefaultInstance() : flowStat_;
    }
    /**
     * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder getFlowStatOrBuilder() {
      return getFlowStat();
    }

    public static final int DATANODE_FIELD_NUMBER = 10;
    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     * @return Whether the datanode field is set.
     */
    @java.lang.Override
    public boolean hasDatanode() {
      return nodeWorkloadsCase_ == 10;
    }
    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     * @return The datanode.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDatanode() {
      if (nodeWorkloadsCase_ == 10) {
         return (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
    }
    /**
     * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder getDatanodeOrBuilder() {
      if (nodeWorkloadsCase_ == 10) {
         return (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
    }

    public static final int FRONTEND_FIELD_NUMBER = 11;
    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     * @return Whether the frontend field is set.
     */
    @java.lang.Override
    public boolean hasFrontend() {
      return nodeWorkloadsCase_ == 11;
    }
    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     * @return The frontend.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getFrontend() {
      if (nodeWorkloadsCase_ == 11) {
         return (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
    }
    /**
     * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder getFrontendOrBuilder() {
      if (nodeWorkloadsCase_ == 11) {
         return (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
    }

    public static final int FLOWNODE_FIELD_NUMBER = 12;
    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     * @return Whether the flownode field is set.
     */
    @java.lang.Override
    public boolean hasFlownode() {
      return nodeWorkloadsCase_ == 12;
    }
    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     * @return The flownode.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getFlownode() {
      if (nodeWorkloadsCase_ == 12) {
         return (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
    }
    /**
     * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder getFlownodeOrBuilder() {
      if (nodeWorkloadsCase_ == 12) {
         return (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_;
      }
      return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (header_ != null) {
        output.writeMessage(1, getHeader());
      }
      if (peer_ != null) {
        output.writeMessage(2, getPeer());
      }
      if (reportInterval_ != null) {
        output.writeMessage(3, getReportInterval());
      }
      for (int i = 0; i < regionStats_.size(); i++) {
        output.writeMessage(4, regionStats_.get(i));
      }
      if (mailboxMessage_ != null) {
        output.writeMessage(5, getMailboxMessage());
      }
      if (durationSinceEpoch_ != 0L) {
        output.writeUInt64(6, durationSinceEpoch_);
      }
      if (nodeEpoch_ != 0L) {
        output.writeUInt64(7, nodeEpoch_);
      }
      if (info_ != null) {
        output.writeMessage(8, getInfo());
      }
      if (flowStat_ != null) {
        output.writeMessage(9, getFlowStat());
      }
      if (nodeWorkloadsCase_ == 10) {
        output.writeMessage(10, (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_);
      }
      if (nodeWorkloadsCase_ == 11) {
        output.writeMessage(11, (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_);
      }
      if (nodeWorkloadsCase_ == 12) {
        output.writeMessage(12, (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (header_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getHeader());
      }
      if (peer_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPeer());
      }
      if (reportInterval_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getReportInterval());
      }
      for (int i = 0; i < regionStats_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, regionStats_.get(i));
      }
      if (mailboxMessage_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getMailboxMessage());
      }
      if (durationSinceEpoch_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, durationSinceEpoch_);
      }
      if (nodeEpoch_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(7, nodeEpoch_);
      }
      if (info_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getInfo());
      }
      if (flowStat_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getFlowStat());
      }
      if (nodeWorkloadsCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_);
      }
      if (nodeWorkloadsCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_);
      }
      if (nodeWorkloadsCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest other = (greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest) obj;

      if (hasHeader() != other.hasHeader()) return false;
      if (hasHeader()) {
        if (!getHeader()
            .equals(other.getHeader())) return false;
      }
      if (hasPeer() != other.hasPeer()) return false;
      if (hasPeer()) {
        if (!getPeer()
            .equals(other.getPeer())) return false;
      }
      if (hasReportInterval() != other.hasReportInterval()) return false;
      if (hasReportInterval()) {
        if (!getReportInterval()
            .equals(other.getReportInterval())) return false;
      }
      if (!getRegionStatsList()
          .equals(other.getRegionStatsList())) return false;
      if (hasMailboxMessage() != other.hasMailboxMessage()) return false;
      if (hasMailboxMessage()) {
        if (!getMailboxMessage()
            .equals(other.getMailboxMessage())) return false;
      }
      if (getDurationSinceEpoch()
          != other.getDurationSinceEpoch()) return false;
      if (getNodeEpoch()
          != other.getNodeEpoch()) return false;
      if (hasInfo() != other.hasInfo()) return false;
      if (hasInfo()) {
        if (!getInfo()
            .equals(other.getInfo())) return false;
      }
      if (hasFlowStat() != other.hasFlowStat()) return false;
      if (hasFlowStat()) {
        if (!getFlowStat()
            .equals(other.getFlowStat())) return false;
      }
      if (!getNodeWorkloadsCase().equals(other.getNodeWorkloadsCase())) return false;
      switch (nodeWorkloadsCase_) {
        case 10:
          if (!getDatanode()
              .equals(other.getDatanode())) return false;
          break;
        case 11:
          if (!getFrontend()
              .equals(other.getFrontend())) return false;
          break;
        case 12:
          if (!getFlownode()
              .equals(other.getFlownode())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHeader()) {
        hash = (37 * hash) + HEADER_FIELD_NUMBER;
        hash = (53 * hash) + getHeader().hashCode();
      }
      if (hasPeer()) {
        hash = (37 * hash) + PEER_FIELD_NUMBER;
        hash = (53 * hash) + getPeer().hashCode();
      }
      if (hasReportInterval()) {
        hash = (37 * hash) + REPORT_INTERVAL_FIELD_NUMBER;
        hash = (53 * hash) + getReportInterval().hashCode();
      }
      if (getRegionStatsCount() > 0) {
        hash = (37 * hash) + REGION_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getRegionStatsList().hashCode();
      }
      if (hasMailboxMessage()) {
        hash = (37 * hash) + MAILBOX_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMailboxMessage().hashCode();
      }
      hash = (37 * hash) + DURATION_SINCE_EPOCH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDurationSinceEpoch());
      hash = (37 * hash) + NODE_EPOCH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNodeEpoch());
      if (hasInfo()) {
        hash = (37 * hash) + INFO_FIELD_NUMBER;
        hash = (53 * hash) + getInfo().hashCode();
      }
      if (hasFlowStat()) {
        hash = (37 * hash) + FLOW_STAT_FIELD_NUMBER;
        hash = (53 * hash) + getFlowStat().hashCode();
      }
      switch (nodeWorkloadsCase_) {
        case 10:
          hash = (37 * hash) + DATANODE_FIELD_NUMBER;
          hash = (53 * hash) + getDatanode().hashCode();
          break;
        case 11:
          hash = (37 * hash) + FRONTEND_FIELD_NUMBER;
          hash = (53 * hash) + getFrontend().hashCode();
          break;
        case 12:
          hash = (37 * hash) + FLOWNODE_FIELD_NUMBER;
          hash = (53 * hash) + getFlownode().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.HeartbeatRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.HeartbeatRequest)
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.class, greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRegionStatsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (headerBuilder_ == null) {
          header_ = null;
        } else {
          header_ = null;
          headerBuilder_ = null;
        }
        if (peerBuilder_ == null) {
          peer_ = null;
        } else {
          peer_ = null;
          peerBuilder_ = null;
        }
        if (reportIntervalBuilder_ == null) {
          reportInterval_ = null;
        } else {
          reportInterval_ = null;
          reportIntervalBuilder_ = null;
        }
        if (regionStatsBuilder_ == null) {
          regionStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          regionStatsBuilder_.clear();
        }
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = null;
        } else {
          mailboxMessage_ = null;
          mailboxMessageBuilder_ = null;
        }
        durationSinceEpoch_ = 0L;

        nodeEpoch_ = 0L;

        if (infoBuilder_ == null) {
          info_ = null;
        } else {
          info_ = null;
          infoBuilder_ = null;
        }
        if (flowStatBuilder_ == null) {
          flowStat_ = null;
        } else {
          flowStat_ = null;
          flowStatBuilder_ = null;
        }
        nodeWorkloadsCase_ = 0;
        nodeWorkloads_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatRequest_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest build() {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest result = new greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest(this);
        int from_bitField0_ = bitField0_;
        if (headerBuilder_ == null) {
          result.header_ = header_;
        } else {
          result.header_ = headerBuilder_.build();
        }
        if (peerBuilder_ == null) {
          result.peer_ = peer_;
        } else {
          result.peer_ = peerBuilder_.build();
        }
        if (reportIntervalBuilder_ == null) {
          result.reportInterval_ = reportInterval_;
        } else {
          result.reportInterval_ = reportIntervalBuilder_.build();
        }
        if (regionStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            regionStats_ = java.util.Collections.unmodifiableList(regionStats_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.regionStats_ = regionStats_;
        } else {
          result.regionStats_ = regionStatsBuilder_.build();
        }
        if (mailboxMessageBuilder_ == null) {
          result.mailboxMessage_ = mailboxMessage_;
        } else {
          result.mailboxMessage_ = mailboxMessageBuilder_.build();
        }
        result.durationSinceEpoch_ = durationSinceEpoch_;
        result.nodeEpoch_ = nodeEpoch_;
        if (infoBuilder_ == null) {
          result.info_ = info_;
        } else {
          result.info_ = infoBuilder_.build();
        }
        if (flowStatBuilder_ == null) {
          result.flowStat_ = flowStat_;
        } else {
          result.flowStat_ = flowStatBuilder_.build();
        }
        if (nodeWorkloadsCase_ == 10) {
          if (datanodeBuilder_ == null) {
            result.nodeWorkloads_ = nodeWorkloads_;
          } else {
            result.nodeWorkloads_ = datanodeBuilder_.build();
          }
        }
        if (nodeWorkloadsCase_ == 11) {
          if (frontendBuilder_ == null) {
            result.nodeWorkloads_ = nodeWorkloads_;
          } else {
            result.nodeWorkloads_ = frontendBuilder_.build();
          }
        }
        if (nodeWorkloadsCase_ == 12) {
          if (flownodeBuilder_ == null) {
            result.nodeWorkloads_ = nodeWorkloads_;
          } else {
            result.nodeWorkloads_ = flownodeBuilder_.build();
          }
        }
        result.nodeWorkloadsCase_ = nodeWorkloadsCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest.getDefaultInstance()) return this;
        if (other.hasHeader()) {
          mergeHeader(other.getHeader());
        }
        if (other.hasPeer()) {
          mergePeer(other.getPeer());
        }
        if (other.hasReportInterval()) {
          mergeReportInterval(other.getReportInterval());
        }
        if (regionStatsBuilder_ == null) {
          if (!other.regionStats_.isEmpty()) {
            if (regionStats_.isEmpty()) {
              regionStats_ = other.regionStats_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRegionStatsIsMutable();
              regionStats_.addAll(other.regionStats_);
            }
            onChanged();
          }
        } else {
          if (!other.regionStats_.isEmpty()) {
            if (regionStatsBuilder_.isEmpty()) {
              regionStatsBuilder_.dispose();
              regionStatsBuilder_ = null;
              regionStats_ = other.regionStats_;
              bitField0_ = (bitField0_ & ~0x00000001);
              regionStatsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRegionStatsFieldBuilder() : null;
            } else {
              regionStatsBuilder_.addAllMessages(other.regionStats_);
            }
          }
        }
        if (other.hasMailboxMessage()) {
          mergeMailboxMessage(other.getMailboxMessage());
        }
        if (other.getDurationSinceEpoch() != 0L) {
          setDurationSinceEpoch(other.getDurationSinceEpoch());
        }
        if (other.getNodeEpoch() != 0L) {
          setNodeEpoch(other.getNodeEpoch());
        }
        if (other.hasInfo()) {
          mergeInfo(other.getInfo());
        }
        if (other.hasFlowStat()) {
          mergeFlowStat(other.getFlowStat());
        }
        switch (other.getNodeWorkloadsCase()) {
          case DATANODE: {
            mergeDatanode(other.getDatanode());
            break;
          }
          case FRONTEND: {
            mergeFrontend(other.getFrontend());
            break;
          }
          case FLOWNODE: {
            mergeFlownode(other.getFlownode());
            break;
          }
          case NODEWORKLOADS_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int nodeWorkloadsCase_ = 0;
      private java.lang.Object nodeWorkloads_;
      public NodeWorkloadsCase
          getNodeWorkloadsCase() {
        return NodeWorkloadsCase.forNumber(
            nodeWorkloadsCase_);
      }

      public Builder clearNodeWorkloads() {
        nodeWorkloadsCase_ = 0;
        nodeWorkloads_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private greptime.v1.meta.Common.RequestHeader header_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder> headerBuilder_;
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       * @return Whether the header field is set.
       */
      public boolean hasHeader() {
        return headerBuilder_ != null || header_ != null;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       * @return The header.
       */
      public greptime.v1.meta.Common.RequestHeader getHeader() {
        if (headerBuilder_ == null) {
          return header_ == null ? greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
        } else {
          return headerBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder setHeader(greptime.v1.meta.Common.RequestHeader value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          header_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder setHeader(
          greptime.v1.meta.Common.RequestHeader.Builder builderForValue) {
        if (headerBuilder_ == null) {
          header_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder mergeHeader(greptime.v1.meta.Common.RequestHeader value) {
        if (headerBuilder_ == null) {
          if (header_ != null) {
            header_ =
              greptime.v1.meta.Common.RequestHeader.newBuilder(header_).mergeFrom(value).buildPartial();
          } else {
            header_ = value;
          }
          onChanged();
        } else {
          headerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          header_ = null;
          onChanged();
        } else {
          header_ = null;
          headerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.RequestHeader.Builder getHeaderBuilder() {
        
        onChanged();
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder() {
        if (headerBuilder_ != null) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          return header_ == null ?
              greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
        }
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder>(
                  getHeader(),
                  getParentForChildren(),
                  isClean());
          header_ = null;
        }
        return headerBuilder_;
      }

      private greptime.v1.meta.Common.Peer peer_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder> peerBuilder_;
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       * @return Whether the peer field is set.
       */
      public boolean hasPeer() {
        return peerBuilder_ != null || peer_ != null;
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       * @return The peer.
       */
      public greptime.v1.meta.Common.Peer getPeer() {
        if (peerBuilder_ == null) {
          return peer_ == null ? greptime.v1.meta.Common.Peer.getDefaultInstance() : peer_;
        } else {
          return peerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public Builder setPeer(greptime.v1.meta.Common.Peer value) {
        if (peerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          peer_ = value;
          onChanged();
        } else {
          peerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public Builder setPeer(
          greptime.v1.meta.Common.Peer.Builder builderForValue) {
        if (peerBuilder_ == null) {
          peer_ = builderForValue.build();
          onChanged();
        } else {
          peerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public Builder mergePeer(greptime.v1.meta.Common.Peer value) {
        if (peerBuilder_ == null) {
          if (peer_ != null) {
            peer_ =
              greptime.v1.meta.Common.Peer.newBuilder(peer_).mergeFrom(value).buildPartial();
          } else {
            peer_ = value;
          }
          onChanged();
        } else {
          peerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public Builder clearPeer() {
        if (peerBuilder_ == null) {
          peer_ = null;
          onChanged();
        } else {
          peer_ = null;
          peerBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public greptime.v1.meta.Common.Peer.Builder getPeerBuilder() {
        
        onChanged();
        return getPeerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      public greptime.v1.meta.Common.PeerOrBuilder getPeerOrBuilder() {
        if (peerBuilder_ != null) {
          return peerBuilder_.getMessageOrBuilder();
        } else {
          return peer_ == null ?
              greptime.v1.meta.Common.Peer.getDefaultInstance() : peer_;
        }
      }
      /**
       * <pre>
       * Self peer
       * </pre>
       *
       * <code>.greptime.v1.meta.Peer peer = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder> 
          getPeerFieldBuilder() {
        if (peerBuilder_ == null) {
          peerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder>(
                  getPeer(),
                  getParentForChildren(),
                  isClean());
          peer_ = null;
        }
        return peerBuilder_;
      }

      private greptime.v1.meta.Common.TimeInterval reportInterval_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.TimeInterval, greptime.v1.meta.Common.TimeInterval.Builder, greptime.v1.meta.Common.TimeIntervalOrBuilder> reportIntervalBuilder_;
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       * @return Whether the reportInterval field is set.
       */
      public boolean hasReportInterval() {
        return reportIntervalBuilder_ != null || reportInterval_ != null;
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       * @return The reportInterval.
       */
      public greptime.v1.meta.Common.TimeInterval getReportInterval() {
        if (reportIntervalBuilder_ == null) {
          return reportInterval_ == null ? greptime.v1.meta.Common.TimeInterval.getDefaultInstance() : reportInterval_;
        } else {
          return reportIntervalBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public Builder setReportInterval(greptime.v1.meta.Common.TimeInterval value) {
        if (reportIntervalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          reportInterval_ = value;
          onChanged();
        } else {
          reportIntervalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public Builder setReportInterval(
          greptime.v1.meta.Common.TimeInterval.Builder builderForValue) {
        if (reportIntervalBuilder_ == null) {
          reportInterval_ = builderForValue.build();
          onChanged();
        } else {
          reportIntervalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public Builder mergeReportInterval(greptime.v1.meta.Common.TimeInterval value) {
        if (reportIntervalBuilder_ == null) {
          if (reportInterval_ != null) {
            reportInterval_ =
              greptime.v1.meta.Common.TimeInterval.newBuilder(reportInterval_).mergeFrom(value).buildPartial();
          } else {
            reportInterval_ = value;
          }
          onChanged();
        } else {
          reportIntervalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public Builder clearReportInterval() {
        if (reportIntervalBuilder_ == null) {
          reportInterval_ = null;
          onChanged();
        } else {
          reportInterval_ = null;
          reportIntervalBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public greptime.v1.meta.Common.TimeInterval.Builder getReportIntervalBuilder() {
        
        onChanged();
        return getReportIntervalFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      public greptime.v1.meta.Common.TimeIntervalOrBuilder getReportIntervalOrBuilder() {
        if (reportIntervalBuilder_ != null) {
          return reportIntervalBuilder_.getMessageOrBuilder();
        } else {
          return reportInterval_ == null ?
              greptime.v1.meta.Common.TimeInterval.getDefaultInstance() : reportInterval_;
        }
      }
      /**
       * <pre>
       * Actually reported time interval
       * </pre>
       *
       * <code>.greptime.v1.meta.TimeInterval report_interval = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.TimeInterval, greptime.v1.meta.Common.TimeInterval.Builder, greptime.v1.meta.Common.TimeIntervalOrBuilder> 
          getReportIntervalFieldBuilder() {
        if (reportIntervalBuilder_ == null) {
          reportIntervalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.TimeInterval, greptime.v1.meta.Common.TimeInterval.Builder, greptime.v1.meta.Common.TimeIntervalOrBuilder>(
                  getReportInterval(),
                  getParentForChildren(),
                  isClean());
          reportInterval_ = null;
        }
        return reportIntervalBuilder_;
      }

      private java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat> regionStats_ =
        java.util.Collections.emptyList();
      private void ensureRegionStatsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          regionStats_ = new java.util.ArrayList<greptime.v1.meta.HeartbeatOuterClass.RegionStat>(regionStats_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.RegionStat, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder> regionStatsBuilder_;

      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat> getRegionStatsList() {
        if (regionStatsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(regionStats_);
        } else {
          return regionStatsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public int getRegionStatsCount() {
        if (regionStatsBuilder_ == null) {
          return regionStats_.size();
        } else {
          return regionStatsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat getRegionStats(int index) {
        if (regionStatsBuilder_ == null) {
          return regionStats_.get(index);
        } else {
          return regionStatsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder setRegionStats(
          int index, greptime.v1.meta.HeartbeatOuterClass.RegionStat value) {
        if (regionStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionStatsIsMutable();
          regionStats_.set(index, value);
          onChanged();
        } else {
          regionStatsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder setRegionStats(
          int index, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder builderForValue) {
        if (regionStatsBuilder_ == null) {
          ensureRegionStatsIsMutable();
          regionStats_.set(index, builderForValue.build());
          onChanged();
        } else {
          regionStatsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder addRegionStats(greptime.v1.meta.HeartbeatOuterClass.RegionStat value) {
        if (regionStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionStatsIsMutable();
          regionStats_.add(value);
          onChanged();
        } else {
          regionStatsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder addRegionStats(
          int index, greptime.v1.meta.HeartbeatOuterClass.RegionStat value) {
        if (regionStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionStatsIsMutable();
          regionStats_.add(index, value);
          onChanged();
        } else {
          regionStatsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder addRegionStats(
          greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder builderForValue) {
        if (regionStatsBuilder_ == null) {
          ensureRegionStatsIsMutable();
          regionStats_.add(builderForValue.build());
          onChanged();
        } else {
          regionStatsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder addRegionStats(
          int index, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder builderForValue) {
        if (regionStatsBuilder_ == null) {
          ensureRegionStatsIsMutable();
          regionStats_.add(index, builderForValue.build());
          onChanged();
        } else {
          regionStatsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder addAllRegionStats(
          java.lang.Iterable<? extends greptime.v1.meta.HeartbeatOuterClass.RegionStat> values) {
        if (regionStatsBuilder_ == null) {
          ensureRegionStatsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, regionStats_);
          onChanged();
        } else {
          regionStatsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder clearRegionStats() {
        if (regionStatsBuilder_ == null) {
          regionStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          regionStatsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public Builder removeRegionStats(int index) {
        if (regionStatsBuilder_ == null) {
          ensureRegionStatsIsMutable();
          regionStats_.remove(index);
          onChanged();
        } else {
          regionStatsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder getRegionStatsBuilder(
          int index) {
        return getRegionStatsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder getRegionStatsOrBuilder(
          int index) {
        if (regionStatsBuilder_ == null) {
          return regionStats_.get(index);  } else {
          return regionStatsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder> 
           getRegionStatsOrBuilderList() {
        if (regionStatsBuilder_ != null) {
          return regionStatsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(regionStats_);
        }
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder addRegionStatsBuilder() {
        return getRegionStatsFieldBuilder().addBuilder(
            greptime.v1.meta.HeartbeatOuterClass.RegionStat.getDefaultInstance());
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder addRegionStatsBuilder(
          int index) {
        return getRegionStatsFieldBuilder().addBuilder(
            index, greptime.v1.meta.HeartbeatOuterClass.RegionStat.getDefaultInstance());
      }
      /**
       * <pre>
       * Region stats on this node
       * </pre>
       *
       * <code>repeated .greptime.v1.meta.RegionStat region_stats = 4;</code>
       */
      public java.util.List<greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder> 
           getRegionStatsBuilderList() {
        return getRegionStatsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.RegionStat, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder> 
          getRegionStatsFieldBuilder() {
        if (regionStatsBuilder_ == null) {
          regionStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.RegionStat, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder>(
                  regionStats_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          regionStats_ = null;
        }
        return regionStatsBuilder_;
      }

      private greptime.v1.meta.HeartbeatOuterClass.MailboxMessage mailboxMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder> mailboxMessageBuilder_;
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       * @return Whether the mailboxMessage field is set.
       */
      public boolean hasMailboxMessage() {
        return mailboxMessageBuilder_ != null || mailboxMessage_ != null;
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       * @return The mailboxMessage.
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage() {
        if (mailboxMessageBuilder_ == null) {
          return mailboxMessage_ == null ? greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
        } else {
          return mailboxMessageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public Builder setMailboxMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage value) {
        if (mailboxMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          mailboxMessage_ = value;
          onChanged();
        } else {
          mailboxMessageBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public Builder setMailboxMessage(
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder builderForValue) {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = builderForValue.build();
          onChanged();
        } else {
          mailboxMessageBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public Builder mergeMailboxMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage value) {
        if (mailboxMessageBuilder_ == null) {
          if (mailboxMessage_ != null) {
            mailboxMessage_ =
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.newBuilder(mailboxMessage_).mergeFrom(value).buildPartial();
          } else {
            mailboxMessage_ = value;
          }
          onChanged();
        } else {
          mailboxMessageBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public Builder clearMailboxMessage() {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = null;
          onChanged();
        } else {
          mailboxMessage_ = null;
          mailboxMessageBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder getMailboxMessageBuilder() {
        
        onChanged();
        return getMailboxMessageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder() {
        if (mailboxMessageBuilder_ != null) {
          return mailboxMessageBuilder_.getMessageOrBuilder();
        } else {
          return mailboxMessage_ == null ?
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
        }
      }
      /**
       * <pre>
       * Mailbox send message to Metasrv
       * </pre>
       *
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder> 
          getMailboxMessageFieldBuilder() {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder>(
                  getMailboxMessage(),
                  getParentForChildren(),
                  isClean());
          mailboxMessage_ = null;
        }
        return mailboxMessageBuilder_;
      }

      private long durationSinceEpoch_ ;
      /**
       * <pre>
       * The duration since the heartbeat task's epoch in milliseconds.
       * </pre>
       *
       * <code>uint64 duration_since_epoch = 6;</code>
       * @return The durationSinceEpoch.
       */
      @java.lang.Override
      public long getDurationSinceEpoch() {
        return durationSinceEpoch_;
      }
      /**
       * <pre>
       * The duration since the heartbeat task's epoch in milliseconds.
       * </pre>
       *
       * <code>uint64 duration_since_epoch = 6;</code>
       * @param value The durationSinceEpoch to set.
       * @return This builder for chaining.
       */
      public Builder setDurationSinceEpoch(long value) {
        
        durationSinceEpoch_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The duration since the heartbeat task's epoch in milliseconds.
       * </pre>
       *
       * <code>uint64 duration_since_epoch = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearDurationSinceEpoch() {
        
        durationSinceEpoch_ = 0L;
        onChanged();
        return this;
      }

      private long nodeEpoch_ ;
      /**
       * <pre>
       * The node's epoch
       * </pre>
       *
       * <code>uint64 node_epoch = 7;</code>
       * @return The nodeEpoch.
       */
      @java.lang.Override
      public long getNodeEpoch() {
        return nodeEpoch_;
      }
      /**
       * <pre>
       * The node's epoch
       * </pre>
       *
       * <code>uint64 node_epoch = 7;</code>
       * @param value The nodeEpoch to set.
       * @return This builder for chaining.
       */
      public Builder setNodeEpoch(long value) {
        
        nodeEpoch_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node's epoch
       * </pre>
       *
       * <code>uint64 node_epoch = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeEpoch() {
        
        nodeEpoch_ = 0L;
        onChanged();
        return this;
      }

      private greptime.v1.meta.HeartbeatOuterClass.NodeInfo info_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.NodeInfo, greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder, greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder> infoBuilder_;
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       * @return Whether the info field is set.
       */
      public boolean hasInfo() {
        return infoBuilder_ != null || info_ != null;
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       * @return The info.
       */
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfo getInfo() {
        if (infoBuilder_ == null) {
          return info_ == null ? greptime.v1.meta.HeartbeatOuterClass.NodeInfo.getDefaultInstance() : info_;
        } else {
          return infoBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public Builder setInfo(greptime.v1.meta.HeartbeatOuterClass.NodeInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          info_ = value;
          onChanged();
        } else {
          infoBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public Builder setInfo(
          greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          info_ = builderForValue.build();
          onChanged();
        } else {
          infoBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public Builder mergeInfo(greptime.v1.meta.HeartbeatOuterClass.NodeInfo value) {
        if (infoBuilder_ == null) {
          if (info_ != null) {
            info_ =
              greptime.v1.meta.HeartbeatOuterClass.NodeInfo.newBuilder(info_).mergeFrom(value).buildPartial();
          } else {
            info_ = value;
          }
          onChanged();
        } else {
          infoBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public Builder clearInfo() {
        if (infoBuilder_ == null) {
          info_ = null;
          onChanged();
        } else {
          info_ = null;
          infoBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder getInfoBuilder() {
        
        onChanged();
        return getInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder getInfoOrBuilder() {
        if (infoBuilder_ != null) {
          return infoBuilder_.getMessageOrBuilder();
        } else {
          return info_ == null ?
              greptime.v1.meta.HeartbeatOuterClass.NodeInfo.getDefaultInstance() : info_;
        }
      }
      /**
       * <code>.greptime.v1.meta.NodeInfo info = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.NodeInfo, greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder, greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder> 
          getInfoFieldBuilder() {
        if (infoBuilder_ == null) {
          infoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.NodeInfo, greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder, greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder>(
                  getInfo(),
                  getParentForChildren(),
                  isClean());
          info_ = null;
        }
        return infoBuilder_;
      }

      private greptime.v1.meta.HeartbeatOuterClass.FlowStat flowStat_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FlowStat, greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder, greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder> flowStatBuilder_;
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       * @return Whether the flowStat field is set.
       */
      public boolean hasFlowStat() {
        return flowStatBuilder_ != null || flowStat_ != null;
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       * @return The flowStat.
       */
      public greptime.v1.meta.HeartbeatOuterClass.FlowStat getFlowStat() {
        if (flowStatBuilder_ == null) {
          return flowStat_ == null ? greptime.v1.meta.HeartbeatOuterClass.FlowStat.getDefaultInstance() : flowStat_;
        } else {
          return flowStatBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public Builder setFlowStat(greptime.v1.meta.HeartbeatOuterClass.FlowStat value) {
        if (flowStatBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flowStat_ = value;
          onChanged();
        } else {
          flowStatBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public Builder setFlowStat(
          greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder builderForValue) {
        if (flowStatBuilder_ == null) {
          flowStat_ = builderForValue.build();
          onChanged();
        } else {
          flowStatBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public Builder mergeFlowStat(greptime.v1.meta.HeartbeatOuterClass.FlowStat value) {
        if (flowStatBuilder_ == null) {
          if (flowStat_ != null) {
            flowStat_ =
              greptime.v1.meta.HeartbeatOuterClass.FlowStat.newBuilder(flowStat_).mergeFrom(value).buildPartial();
          } else {
            flowStat_ = value;
          }
          onChanged();
        } else {
          flowStatBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public Builder clearFlowStat() {
        if (flowStatBuilder_ == null) {
          flowStat_ = null;
          onChanged();
        } else {
          flowStat_ = null;
          flowStatBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder getFlowStatBuilder() {
        
        onChanged();
        return getFlowStatFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder getFlowStatOrBuilder() {
        if (flowStatBuilder_ != null) {
          return flowStatBuilder_.getMessageOrBuilder();
        } else {
          return flowStat_ == null ?
              greptime.v1.meta.HeartbeatOuterClass.FlowStat.getDefaultInstance() : flowStat_;
        }
      }
      /**
       * <code>.greptime.v1.meta.FlowStat flow_stat = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FlowStat, greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder, greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder> 
          getFlowStatFieldBuilder() {
        if (flowStatBuilder_ == null) {
          flowStatBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.FlowStat, greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder, greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder>(
                  getFlowStat(),
                  getParentForChildren(),
                  isClean());
          flowStat_ = null;
        }
        return flowStatBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder> datanodeBuilder_;
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       * @return Whether the datanode field is set.
       */
      @java.lang.Override
      public boolean hasDatanode() {
        return nodeWorkloadsCase_ == 10;
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       * @return The datanode.
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDatanode() {
        if (datanodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 10) {
            return (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
        } else {
          if (nodeWorkloadsCase_ == 10) {
            return datanodeBuilder_.getMessage();
          }
          return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      public Builder setDatanode(greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads value) {
        if (datanodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeWorkloads_ = value;
          onChanged();
        } else {
          datanodeBuilder_.setMessage(value);
        }
        nodeWorkloadsCase_ = 10;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      public Builder setDatanode(
          greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder builderForValue) {
        if (datanodeBuilder_ == null) {
          nodeWorkloads_ = builderForValue.build();
          onChanged();
        } else {
          datanodeBuilder_.setMessage(builderForValue.build());
        }
        nodeWorkloadsCase_ = 10;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      public Builder mergeDatanode(greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads value) {
        if (datanodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 10 &&
              nodeWorkloads_ != greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance()) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.newBuilder((greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_)
                .mergeFrom(value).buildPartial();
          } else {
            nodeWorkloads_ = value;
          }
          onChanged();
        } else {
          if (nodeWorkloadsCase_ == 10) {
            datanodeBuilder_.mergeFrom(value);
          } else {
            datanodeBuilder_.setMessage(value);
          }
        }
        nodeWorkloadsCase_ = 10;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      public Builder clearDatanode() {
        if (datanodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 10) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
            onChanged();
          }
        } else {
          if (nodeWorkloadsCase_ == 10) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
          }
          datanodeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder getDatanodeBuilder() {
        return getDatanodeFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder getDatanodeOrBuilder() {
        if ((nodeWorkloadsCase_ == 10) && (datanodeBuilder_ != null)) {
          return datanodeBuilder_.getMessageOrBuilder();
        } else {
          if (nodeWorkloadsCase_ == 10) {
            return (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.DatanodeWorkloads datanode = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder> 
          getDatanodeFieldBuilder() {
        if (datanodeBuilder_ == null) {
          if (!(nodeWorkloadsCase_ == 10)) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
          }
          datanodeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder>(
                  (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) nodeWorkloads_,
                  getParentForChildren(),
                  isClean());
          nodeWorkloads_ = null;
        }
        nodeWorkloadsCase_ = 10;
        onChanged();;
        return datanodeBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder> frontendBuilder_;
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       * @return Whether the frontend field is set.
       */
      @java.lang.Override
      public boolean hasFrontend() {
        return nodeWorkloadsCase_ == 11;
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       * @return The frontend.
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getFrontend() {
        if (frontendBuilder_ == null) {
          if (nodeWorkloadsCase_ == 11) {
            return (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
        } else {
          if (nodeWorkloadsCase_ == 11) {
            return frontendBuilder_.getMessage();
          }
          return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      public Builder setFrontend(greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads value) {
        if (frontendBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeWorkloads_ = value;
          onChanged();
        } else {
          frontendBuilder_.setMessage(value);
        }
        nodeWorkloadsCase_ = 11;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      public Builder setFrontend(
          greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder builderForValue) {
        if (frontendBuilder_ == null) {
          nodeWorkloads_ = builderForValue.build();
          onChanged();
        } else {
          frontendBuilder_.setMessage(builderForValue.build());
        }
        nodeWorkloadsCase_ = 11;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      public Builder mergeFrontend(greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads value) {
        if (frontendBuilder_ == null) {
          if (nodeWorkloadsCase_ == 11 &&
              nodeWorkloads_ != greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance()) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.newBuilder((greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_)
                .mergeFrom(value).buildPartial();
          } else {
            nodeWorkloads_ = value;
          }
          onChanged();
        } else {
          if (nodeWorkloadsCase_ == 11) {
            frontendBuilder_.mergeFrom(value);
          } else {
            frontendBuilder_.setMessage(value);
          }
        }
        nodeWorkloadsCase_ = 11;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      public Builder clearFrontend() {
        if (frontendBuilder_ == null) {
          if (nodeWorkloadsCase_ == 11) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
            onChanged();
          }
        } else {
          if (nodeWorkloadsCase_ == 11) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
          }
          frontendBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder getFrontendBuilder() {
        return getFrontendFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder getFrontendOrBuilder() {
        if ((nodeWorkloadsCase_ == 11) && (frontendBuilder_ != null)) {
          return frontendBuilder_.getMessageOrBuilder();
        } else {
          if (nodeWorkloadsCase_ == 11) {
            return (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.FrontendWorkloads frontend = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder> 
          getFrontendFieldBuilder() {
        if (frontendBuilder_ == null) {
          if (!(nodeWorkloadsCase_ == 11)) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
          }
          frontendBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder>(
                  (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) nodeWorkloads_,
                  getParentForChildren(),
                  isClean());
          nodeWorkloads_ = null;
        }
        nodeWorkloadsCase_ = 11;
        onChanged();;
        return frontendBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder> flownodeBuilder_;
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       * @return Whether the flownode field is set.
       */
      @java.lang.Override
      public boolean hasFlownode() {
        return nodeWorkloadsCase_ == 12;
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       * @return The flownode.
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getFlownode() {
        if (flownodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 12) {
            return (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
        } else {
          if (nodeWorkloadsCase_ == 12) {
            return flownodeBuilder_.getMessage();
          }
          return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      public Builder setFlownode(greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads value) {
        if (flownodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          nodeWorkloads_ = value;
          onChanged();
        } else {
          flownodeBuilder_.setMessage(value);
        }
        nodeWorkloadsCase_ = 12;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      public Builder setFlownode(
          greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder builderForValue) {
        if (flownodeBuilder_ == null) {
          nodeWorkloads_ = builderForValue.build();
          onChanged();
        } else {
          flownodeBuilder_.setMessage(builderForValue.build());
        }
        nodeWorkloadsCase_ = 12;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      public Builder mergeFlownode(greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads value) {
        if (flownodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 12 &&
              nodeWorkloads_ != greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance()) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.newBuilder((greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_)
                .mergeFrom(value).buildPartial();
          } else {
            nodeWorkloads_ = value;
          }
          onChanged();
        } else {
          if (nodeWorkloadsCase_ == 12) {
            flownodeBuilder_.mergeFrom(value);
          } else {
            flownodeBuilder_.setMessage(value);
          }
        }
        nodeWorkloadsCase_ = 12;
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      public Builder clearFlownode() {
        if (flownodeBuilder_ == null) {
          if (nodeWorkloadsCase_ == 12) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
            onChanged();
          }
        } else {
          if (nodeWorkloadsCase_ == 12) {
            nodeWorkloadsCase_ = 0;
            nodeWorkloads_ = null;
          }
          flownodeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder getFlownodeBuilder() {
        return getFlownodeFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder getFlownodeOrBuilder() {
        if ((nodeWorkloadsCase_ == 12) && (flownodeBuilder_ != null)) {
          return flownodeBuilder_.getMessageOrBuilder();
        } else {
          if (nodeWorkloadsCase_ == 12) {
            return (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_;
          }
          return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
        }
      }
      /**
       * <code>.greptime.v1.meta.FlownodeWorkloads flownode = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder> 
          getFlownodeFieldBuilder() {
        if (flownodeBuilder_ == null) {
          if (!(nodeWorkloadsCase_ == 12)) {
            nodeWorkloads_ = greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
          }
          flownodeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder>(
                  (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) nodeWorkloads_,
                  getParentForChildren(),
                  isClean());
          nodeWorkloads_ = null;
        }
        nodeWorkloadsCase_ = 12;
        onChanged();;
        return flownodeBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.HeartbeatRequest)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.HeartbeatRequest)
    private static final greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HeartbeatRequest>
        PARSER = new com.google.protobuf.AbstractParser<HeartbeatRequest>() {
      @java.lang.Override
      public HeartbeatRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HeartbeatRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HeartbeatRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HeartbeatRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.HeartbeatRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DatanodeWorkloadsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.DatanodeWorkloads)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    java.util.List<java.lang.Integer> getTypesList();
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    int getTypesCount();
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    int getTypes(int index);
  }
  /**
   * <pre>
   *&#47; The workload types of the datanode.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.meta.DatanodeWorkloads}
   */
  public static final class DatanodeWorkloads extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.DatanodeWorkloads)
      DatanodeWorkloadsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DatanodeWorkloads.newBuilder() to construct.
    private DatanodeWorkloads(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DatanodeWorkloads() {
      types_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DatanodeWorkloads();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DatanodeWorkloads(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              types_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                types_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_DatanodeWorkloads_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder.class);
    }

    public static final int TYPES_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList types_;
    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTypesList() {
      return types_;
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    public int getTypes(int index) {
      return types_.getInt(index);
    }
    private int typesMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTypesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(typesMemoizedSerializedSize);
      }
      for (int i = 0; i < types_.size(); i++) {
        output.writeInt32NoTag(types_.getInt(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(types_.getInt(i));
        }
        size += dataSize;
        if (!getTypesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        typesMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads other = (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) obj;

      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#47; The workload types of the datanode.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.meta.DatanodeWorkloads}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.DatanodeWorkloads)
        greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloadsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_DatanodeWorkloads_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads build() {
        greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads result = new greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.types_ = types_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads.getDefaultInstance()) return this;
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList types_ = emptyIntList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          types_ = mutableCopy(types_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return A list containing the types.
       */
      public java.util.List<java.lang.Integer>
          getTypesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(types_) : types_;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return The count of types.
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index of the element to return.
       * @return The types at the given index.
       */
      public int getTypes(int index) {
        return types_.getInt(index);
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index to set the value at.
       * @param value The types to set.
       * @return This builder for chaining.
       */
      public Builder setTypes(
          int index, int value) {
        ensureTypesIsMutable();
        types_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param value The types to add.
       * @return This builder for chaining.
       */
      public Builder addTypes(int value) {
        ensureTypesIsMutable();
        types_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param values The types to add.
       * @return This builder for chaining.
       */
      public Builder addAllTypes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypes() {
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.DatanodeWorkloads)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.DatanodeWorkloads)
    private static final greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DatanodeWorkloads>
        PARSER = new com.google.protobuf.AbstractParser<DatanodeWorkloads>() {
      @java.lang.Override
      public DatanodeWorkloads parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DatanodeWorkloads(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DatanodeWorkloads> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DatanodeWorkloads> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.DatanodeWorkloads getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FrontendWorkloadsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.FrontendWorkloads)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    java.util.List<java.lang.Integer> getTypesList();
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    int getTypesCount();
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    int getTypes(int index);
  }
  /**
   * <pre>
   *&#47; The workload types of the frontend.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.meta.FrontendWorkloads}
   */
  public static final class FrontendWorkloads extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.FrontendWorkloads)
      FrontendWorkloadsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FrontendWorkloads.newBuilder() to construct.
    private FrontendWorkloads(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FrontendWorkloads() {
      types_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FrontendWorkloads();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FrontendWorkloads(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              types_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                types_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FrontendWorkloads_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FrontendWorkloads_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder.class);
    }

    public static final int TYPES_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList types_;
    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTypesList() {
      return types_;
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    public int getTypes(int index) {
      return types_.getInt(index);
    }
    private int typesMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTypesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(typesMemoizedSerializedSize);
      }
      for (int i = 0; i < types_.size(); i++) {
        output.writeInt32NoTag(types_.getInt(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(types_.getInt(i));
        }
        size += dataSize;
        if (!getTypesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        typesMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads other = (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) obj;

      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#47; The workload types of the frontend.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.meta.FrontendWorkloads}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.FrontendWorkloads)
        greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloadsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FrontendWorkloads_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FrontendWorkloads_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FrontendWorkloads_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads build() {
        greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads result = new greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.types_ = types_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads.getDefaultInstance()) return this;
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList types_ = emptyIntList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          types_ = mutableCopy(types_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return A list containing the types.
       */
      public java.util.List<java.lang.Integer>
          getTypesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(types_) : types_;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return The count of types.
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index of the element to return.
       * @return The types at the given index.
       */
      public int getTypes(int index) {
        return types_.getInt(index);
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index to set the value at.
       * @param value The types to set.
       * @return This builder for chaining.
       */
      public Builder setTypes(
          int index, int value) {
        ensureTypesIsMutable();
        types_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param value The types to add.
       * @return This builder for chaining.
       */
      public Builder addTypes(int value) {
        ensureTypesIsMutable();
        types_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param values The types to add.
       * @return This builder for chaining.
       */
      public Builder addAllTypes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypes() {
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.FrontendWorkloads)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.FrontendWorkloads)
    private static final greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FrontendWorkloads>
        PARSER = new com.google.protobuf.AbstractParser<FrontendWorkloads>() {
      @java.lang.Override
      public FrontendWorkloads parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FrontendWorkloads(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<FrontendWorkloads> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FrontendWorkloads> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FrontendWorkloads getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlownodeWorkloadsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.FlownodeWorkloads)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    java.util.List<java.lang.Integer> getTypesList();
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    int getTypesCount();
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    int getTypes(int index);
  }
  /**
   * <pre>
   *&#47; The workload types of the flownode.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.meta.FlownodeWorkloads}
   */
  public static final class FlownodeWorkloads extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.FlownodeWorkloads)
      FlownodeWorkloadsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlownodeWorkloads.newBuilder() to construct.
    private FlownodeWorkloads(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlownodeWorkloads() {
      types_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlownodeWorkloads();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FlownodeWorkloads(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              types_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                types_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                types_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlownodeWorkloads_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder.class);
    }

    public static final int TYPES_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList types_;
    /**
     * <code>repeated int32 types = 1;</code>
     * @return A list containing the types.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getTypesList() {
      return types_;
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @return The count of types.
     */
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <code>repeated int32 types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    public int getTypes(int index) {
      return types_.getInt(index);
    }
    private int typesMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTypesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(typesMemoizedSerializedSize);
      }
      for (int i = 0; i < types_.size(); i++) {
        output.writeInt32NoTag(types_.getInt(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(types_.getInt(i));
        }
        size += dataSize;
        if (!getTypesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        typesMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads other = (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) obj;

      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#47; The workload types of the flownode.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.meta.FlownodeWorkloads}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.FlownodeWorkloads)
        greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloadsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlownodeWorkloads_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.class, greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads build() {
        greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads result = new greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          types_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.types_ = types_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads.getDefaultInstance()) return this;
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList types_ = emptyIntList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          types_ = mutableCopy(types_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return A list containing the types.
       */
      public java.util.List<java.lang.Integer>
          getTypesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(types_) : types_;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return The count of types.
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index of the element to return.
       * @return The types at the given index.
       */
      public int getTypes(int index) {
        return types_.getInt(index);
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param index The index to set the value at.
       * @param value The types to set.
       * @return This builder for chaining.
       */
      public Builder setTypes(
          int index, int value) {
        ensureTypesIsMutable();
        types_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param value The types to add.
       * @return This builder for chaining.
       */
      public Builder addTypes(int value) {
        ensureTypesIsMutable();
        types_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @param values The types to add.
       * @return This builder for chaining.
       */
      public Builder addAllTypes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, types_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 types = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypes() {
        types_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.FlownodeWorkloads)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.FlownodeWorkloads)
    private static final greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlownodeWorkloads>
        PARSER = new com.google.protobuf.AbstractParser<FlownodeWorkloads>() {
      @java.lang.Override
      public FlownodeWorkloads parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FlownodeWorkloads(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<FlownodeWorkloads> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlownodeWorkloads> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlownodeWorkloads getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.NodeInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The node build version
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <pre>
     * The node build version
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     * The node build git commit hash
     * </pre>
     *
     * <code>string git_commit = 2;</code>
     * @return The gitCommit.
     */
    java.lang.String getGitCommit();
    /**
     * <pre>
     * The node build git commit hash
     * </pre>
     *
     * <code>string git_commit = 2;</code>
     * @return The bytes for gitCommit.
     */
    com.google.protobuf.ByteString
        getGitCommitBytes();

    /**
     * <pre>
     * The node start timestamp
     * </pre>
     *
     * <code>uint64 start_time_ms = 3;</code>
     * @return The startTimeMs.
     */
    long getStartTimeMs();

    /**
     * <pre>
     * The CPU cores number in the node.
     * </pre>
     *
     * <code>uint32 cpus = 4;</code>
     * @return The cpus.
     */
    int getCpus();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.NodeInfo}
   */
  public static final class NodeInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.NodeInfo)
      NodeInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NodeInfo.newBuilder() to construct.
    private NodeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NodeInfo() {
      version_ = "";
      gitCommit_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NodeInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NodeInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              gitCommit_ = s;
              break;
            }
            case 24: {

              startTimeMs_ = input.readUInt64();
              break;
            }
            case 32: {

              cpus_ = input.readUInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_NodeInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_NodeInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.NodeInfo.class, greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private volatile java.lang.Object version_;
    /**
     * <pre>
     * The node build version
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The node build version
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GIT_COMMIT_FIELD_NUMBER = 2;
    private volatile java.lang.Object gitCommit_;
    /**
     * <pre>
     * The node build git commit hash
     * </pre>
     *
     * <code>string git_commit = 2;</code>
     * @return The gitCommit.
     */
    @java.lang.Override
    public java.lang.String getGitCommit() {
      java.lang.Object ref = gitCommit_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        gitCommit_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The node build git commit hash
     * </pre>
     *
     * <code>string git_commit = 2;</code>
     * @return The bytes for gitCommit.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGitCommitBytes() {
      java.lang.Object ref = gitCommit_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        gitCommit_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int START_TIME_MS_FIELD_NUMBER = 3;
    private long startTimeMs_;
    /**
     * <pre>
     * The node start timestamp
     * </pre>
     *
     * <code>uint64 start_time_ms = 3;</code>
     * @return The startTimeMs.
     */
    @java.lang.Override
    public long getStartTimeMs() {
      return startTimeMs_;
    }

    public static final int CPUS_FIELD_NUMBER = 4;
    private int cpus_;
    /**
     * <pre>
     * The CPU cores number in the node.
     * </pre>
     *
     * <code>uint32 cpus = 4;</code>
     * @return The cpus.
     */
    @java.lang.Override
    public int getCpus() {
      return cpus_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gitCommit_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, gitCommit_);
      }
      if (startTimeMs_ != 0L) {
        output.writeUInt64(3, startTimeMs_);
      }
      if (cpus_ != 0) {
        output.writeUInt32(4, cpus_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(gitCommit_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, gitCommit_);
      }
      if (startTimeMs_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, startTimeMs_);
      }
      if (cpus_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, cpus_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.NodeInfo)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.NodeInfo other = (greptime.v1.meta.HeartbeatOuterClass.NodeInfo) obj;

      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getGitCommit()
          .equals(other.getGitCommit())) return false;
      if (getStartTimeMs()
          != other.getStartTimeMs()) return false;
      if (getCpus()
          != other.getCpus()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + GIT_COMMIT_FIELD_NUMBER;
      hash = (53 * hash) + getGitCommit().hashCode();
      hash = (37 * hash) + START_TIME_MS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStartTimeMs());
      hash = (37 * hash) + CPUS_FIELD_NUMBER;
      hash = (53 * hash) + getCpus();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.NodeInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.NodeInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.NodeInfo)
        greptime.v1.meta.HeartbeatOuterClass.NodeInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_NodeInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_NodeInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.NodeInfo.class, greptime.v1.meta.HeartbeatOuterClass.NodeInfo.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.NodeInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = "";

        gitCommit_ = "";

        startTimeMs_ = 0L;

        cpus_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_NodeInfo_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfo getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.NodeInfo.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfo build() {
        greptime.v1.meta.HeartbeatOuterClass.NodeInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.NodeInfo buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.NodeInfo result = new greptime.v1.meta.HeartbeatOuterClass.NodeInfo(this);
        result.version_ = version_;
        result.gitCommit_ = gitCommit_;
        result.startTimeMs_ = startTimeMs_;
        result.cpus_ = cpus_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.NodeInfo) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.NodeInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.NodeInfo other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.NodeInfo.getDefaultInstance()) return this;
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getGitCommit().isEmpty()) {
          gitCommit_ = other.gitCommit_;
          onChanged();
        }
        if (other.getStartTimeMs() != 0L) {
          setStartTimeMs(other.getStartTimeMs());
        }
        if (other.getCpus() != 0) {
          setCpus(other.getCpus());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.NodeInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.NodeInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <pre>
       * The node build version
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The node build version
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The node build version
       * </pre>
       *
       * <code>string version = 1;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node build version
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node build version
       * </pre>
       *
       * <code>string version = 1;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object gitCommit_ = "";
      /**
       * <pre>
       * The node build git commit hash
       * </pre>
       *
       * <code>string git_commit = 2;</code>
       * @return The gitCommit.
       */
      public java.lang.String getGitCommit() {
        java.lang.Object ref = gitCommit_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          gitCommit_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The node build git commit hash
       * </pre>
       *
       * <code>string git_commit = 2;</code>
       * @return The bytes for gitCommit.
       */
      public com.google.protobuf.ByteString
          getGitCommitBytes() {
        java.lang.Object ref = gitCommit_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          gitCommit_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The node build git commit hash
       * </pre>
       *
       * <code>string git_commit = 2;</code>
       * @param value The gitCommit to set.
       * @return This builder for chaining.
       */
      public Builder setGitCommit(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        gitCommit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node build git commit hash
       * </pre>
       *
       * <code>string git_commit = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearGitCommit() {
        
        gitCommit_ = getDefaultInstance().getGitCommit();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node build git commit hash
       * </pre>
       *
       * <code>string git_commit = 2;</code>
       * @param value The bytes for gitCommit to set.
       * @return This builder for chaining.
       */
      public Builder setGitCommitBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        gitCommit_ = value;
        onChanged();
        return this;
      }

      private long startTimeMs_ ;
      /**
       * <pre>
       * The node start timestamp
       * </pre>
       *
       * <code>uint64 start_time_ms = 3;</code>
       * @return The startTimeMs.
       */
      @java.lang.Override
      public long getStartTimeMs() {
        return startTimeMs_;
      }
      /**
       * <pre>
       * The node start timestamp
       * </pre>
       *
       * <code>uint64 start_time_ms = 3;</code>
       * @param value The startTimeMs to set.
       * @return This builder for chaining.
       */
      public Builder setStartTimeMs(long value) {
        
        startTimeMs_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The node start timestamp
       * </pre>
       *
       * <code>uint64 start_time_ms = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartTimeMs() {
        
        startTimeMs_ = 0L;
        onChanged();
        return this;
      }

      private int cpus_ ;
      /**
       * <pre>
       * The CPU cores number in the node.
       * </pre>
       *
       * <code>uint32 cpus = 4;</code>
       * @return The cpus.
       */
      @java.lang.Override
      public int getCpus() {
        return cpus_;
      }
      /**
       * <pre>
       * The CPU cores number in the node.
       * </pre>
       *
       * <code>uint32 cpus = 4;</code>
       * @param value The cpus to set.
       * @return This builder for chaining.
       */
      public Builder setCpus(int value) {
        
        cpus_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CPU cores number in the node.
       * </pre>
       *
       * <code>uint32 cpus = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCpus() {
        
        cpus_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.NodeInfo)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.NodeInfo)
    private static final greptime.v1.meta.HeartbeatOuterClass.NodeInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.NodeInfo();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.NodeInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeInfo>
        PARSER = new com.google.protobuf.AbstractParser<NodeInfo>() {
      @java.lang.Override
      public NodeInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NodeInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<NodeInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.NodeInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RegionStatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.RegionStat)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint64 region_id = 1;</code>
     * @return The regionId.
     */
    long getRegionId();

    /**
     * <pre>
     * The read capacity units during this period
     * </pre>
     *
     * <code>int64 rcus = 2;</code>
     * @return The rcus.
     */
    long getRcus();

    /**
     * <pre>
     * The write capacity units during this period
     * </pre>
     *
     * <code>int64 wcus = 3;</code>
     * @return The wcus.
     */
    long getWcus();

    /**
     * <pre>
     * Approximate bytes of this region
     * </pre>
     *
     * <code>int64 approximate_bytes = 4;</code>
     * @return The approximateBytes.
     */
    long getApproximateBytes();

    /**
     * <pre>
     * Engine name
     * </pre>
     *
     * <code>string engine = 6;</code>
     * @return The engine.
     */
    java.lang.String getEngine();
    /**
     * <pre>
     * Engine name
     * </pre>
     *
     * <code>string engine = 6;</code>
     * @return The bytes for engine.
     */
    com.google.protobuf.ByteString
        getEngineBytes();

    /**
     * <pre>
     * Region role
     * </pre>
     *
     * <code>.greptime.v1.meta.RegionRole role = 7;</code>
     * @return The enum numeric value on the wire for role.
     */
    int getRoleValue();
    /**
     * <pre>
     * Region role
     * </pre>
     *
     * <code>.greptime.v1.meta.RegionRole role = 7;</code>
     * @return The role.
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole();

    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    int getExtensionsCount();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    boolean containsExtensions(
        java.lang.String key);
    /**
     * Use {@link #getExtensionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getExtensions();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getExtensionsMap();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    /* nullable */
com.google.protobuf.ByteString getExtensionsOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue);
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    com.google.protobuf.ByteString getExtensionsOrThrow(
        java.lang.String key);
  }
  /**
   * Protobuf type {@code greptime.v1.meta.RegionStat}
   */
  public static final class RegionStat extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.RegionStat)
      RegionStatOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RegionStat.newBuilder() to construct.
    private RegionStat(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RegionStat() {
      engine_ = "";
      role_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RegionStat();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RegionStat(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              regionId_ = input.readUInt64();
              break;
            }
            case 16: {

              rcus_ = input.readInt64();
              break;
            }
            case 24: {

              wcus_ = input.readInt64();
              break;
            }
            case 32: {

              approximateBytes_ = input.readInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              engine_ = s;
              break;
            }
            case 56: {
              int rawValue = input.readEnum();

              role_ = rawValue;
              break;
            }
            case 794: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                extensions_ = com.google.protobuf.MapField.newMapField(
                    ExtensionsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
              extensions__ = input.readMessage(
                  ExtensionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              extensions_.getMutableMap().put(
                  extensions__.getKey(), extensions__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 99:
          return internalGetExtensions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.RegionStat.class, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder.class);
    }

    public static final int REGION_ID_FIELD_NUMBER = 1;
    private long regionId_;
    /**
     * <code>uint64 region_id = 1;</code>
     * @return The regionId.
     */
    @java.lang.Override
    public long getRegionId() {
      return regionId_;
    }

    public static final int RCUS_FIELD_NUMBER = 2;
    private long rcus_;
    /**
     * <pre>
     * The read capacity units during this period
     * </pre>
     *
     * <code>int64 rcus = 2;</code>
     * @return The rcus.
     */
    @java.lang.Override
    public long getRcus() {
      return rcus_;
    }

    public static final int WCUS_FIELD_NUMBER = 3;
    private long wcus_;
    /**
     * <pre>
     * The write capacity units during this period
     * </pre>
     *
     * <code>int64 wcus = 3;</code>
     * @return The wcus.
     */
    @java.lang.Override
    public long getWcus() {
      return wcus_;
    }

    public static final int APPROXIMATE_BYTES_FIELD_NUMBER = 4;
    private long approximateBytes_;
    /**
     * <pre>
     * Approximate bytes of this region
     * </pre>
     *
     * <code>int64 approximate_bytes = 4;</code>
     * @return The approximateBytes.
     */
    @java.lang.Override
    public long getApproximateBytes() {
      return approximateBytes_;
    }

    public static final int ENGINE_FIELD_NUMBER = 6;
    private volatile java.lang.Object engine_;
    /**
     * <pre>
     * Engine name
     * </pre>
     *
     * <code>string engine = 6;</code>
     * @return The engine.
     */
    @java.lang.Override
    public java.lang.String getEngine() {
      java.lang.Object ref = engine_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        engine_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Engine name
     * </pre>
     *
     * <code>string engine = 6;</code>
     * @return The bytes for engine.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEngineBytes() {
      java.lang.Object ref = engine_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        engine_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ROLE_FIELD_NUMBER = 7;
    private int role_;
    /**
     * <pre>
     * Region role
     * </pre>
     *
     * <code>.greptime.v1.meta.RegionRole role = 7;</code>
     * @return The enum numeric value on the wire for role.
     */
    @java.lang.Override public int getRoleValue() {
      return role_;
    }
    /**
     * <pre>
     * Region role
     * </pre>
     *
     * <code>.greptime.v1.meta.RegionRole role = 7;</code>
     * @return The role.
     */
    @java.lang.Override public greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole() {
      @SuppressWarnings("deprecation")
      greptime.v1.meta.HeartbeatOuterClass.RegionRole result = greptime.v1.meta.HeartbeatOuterClass.RegionRole.valueOf(role_);
      return result == null ? greptime.v1.meta.HeartbeatOuterClass.RegionRole.UNRECOGNIZED : result;
    }

    public static final int EXTENSIONS_FIELD_NUMBER = 99;
    private static final class ExtensionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.google.protobuf.ByteString> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.google.protobuf.ByteString>newDefaultInstance(
                  greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.BYTES,
                  com.google.protobuf.ByteString.EMPTY);
    }
    private com.google.protobuf.MapField<
        java.lang.String, com.google.protobuf.ByteString> extensions_;
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
    internalGetExtensions() {
      if (extensions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ExtensionsDefaultEntryHolder.defaultEntry);
      }
      return extensions_;
    }

    public int getExtensionsCount() {
      return internalGetExtensions().getMap().size();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    @java.lang.Override
    public boolean containsExtensions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetExtensions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getExtensionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensions() {
      return getExtensionsMap();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensionsMap() {
      return internalGetExtensions().getMap();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public com.google.protobuf.ByteString getExtensionsOrDefault(
        java.lang.String key,
        com.google.protobuf.ByteString defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetExtensions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public com.google.protobuf.ByteString getExtensionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetExtensions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (regionId_ != 0L) {
        output.writeUInt64(1, regionId_);
      }
      if (rcus_ != 0L) {
        output.writeInt64(2, rcus_);
      }
      if (wcus_ != 0L) {
        output.writeInt64(3, wcus_);
      }
      if (approximateBytes_ != 0L) {
        output.writeInt64(4, approximateBytes_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(engine_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, engine_);
      }
      if (role_ != greptime.v1.meta.HeartbeatOuterClass.RegionRole.Leader.getNumber()) {
        output.writeEnum(7, role_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetExtensions(),
          ExtensionsDefaultEntryHolder.defaultEntry,
          99);
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (regionId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, regionId_);
      }
      if (rcus_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, rcus_);
      }
      if (wcus_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, wcus_);
      }
      if (approximateBytes_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, approximateBytes_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(engine_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, engine_);
      }
      if (role_ != greptime.v1.meta.HeartbeatOuterClass.RegionRole.Leader.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, role_);
      }
      for (java.util.Map.Entry<java.lang.String, com.google.protobuf.ByteString> entry
           : internalGetExtensions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
        extensions__ = ExtensionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(99, extensions__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.RegionStat)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.RegionStat other = (greptime.v1.meta.HeartbeatOuterClass.RegionStat) obj;

      if (getRegionId()
          != other.getRegionId()) return false;
      if (getRcus()
          != other.getRcus()) return false;
      if (getWcus()
          != other.getWcus()) return false;
      if (getApproximateBytes()
          != other.getApproximateBytes()) return false;
      if (!getEngine()
          .equals(other.getEngine())) return false;
      if (role_ != other.role_) return false;
      if (!internalGetExtensions().equals(
          other.internalGetExtensions())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REGION_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRegionId());
      hash = (37 * hash) + RCUS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRcus());
      hash = (37 * hash) + WCUS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getWcus());
      hash = (37 * hash) + APPROXIMATE_BYTES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getApproximateBytes());
      hash = (37 * hash) + ENGINE_FIELD_NUMBER;
      hash = (53 * hash) + getEngine().hashCode();
      hash = (37 * hash) + ROLE_FIELD_NUMBER;
      hash = (53 * hash) + role_;
      if (!internalGetExtensions().getMap().isEmpty()) {
        hash = (37 * hash) + EXTENSIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetExtensions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.RegionStat prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.RegionStat}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.RegionStat)
        greptime.v1.meta.HeartbeatOuterClass.RegionStatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 99:
            return internalGetExtensions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 99:
            return internalGetMutableExtensions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.RegionStat.class, greptime.v1.meta.HeartbeatOuterClass.RegionStat.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.RegionStat.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        regionId_ = 0L;

        rcus_ = 0L;

        wcus_ = 0L;

        approximateBytes_ = 0L;

        engine_ = "";

        role_ = 0;

        internalGetMutableExtensions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionStat_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.RegionStat.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat build() {
        greptime.v1.meta.HeartbeatOuterClass.RegionStat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionStat buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.RegionStat result = new greptime.v1.meta.HeartbeatOuterClass.RegionStat(this);
        int from_bitField0_ = bitField0_;
        result.regionId_ = regionId_;
        result.rcus_ = rcus_;
        result.wcus_ = wcus_;
        result.approximateBytes_ = approximateBytes_;
        result.engine_ = engine_;
        result.role_ = role_;
        result.extensions_ = internalGetExtensions();
        result.extensions_.makeImmutable();
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.RegionStat) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.RegionStat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.RegionStat other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.RegionStat.getDefaultInstance()) return this;
        if (other.getRegionId() != 0L) {
          setRegionId(other.getRegionId());
        }
        if (other.getRcus() != 0L) {
          setRcus(other.getRcus());
        }
        if (other.getWcus() != 0L) {
          setWcus(other.getWcus());
        }
        if (other.getApproximateBytes() != 0L) {
          setApproximateBytes(other.getApproximateBytes());
        }
        if (!other.getEngine().isEmpty()) {
          engine_ = other.engine_;
          onChanged();
        }
        if (other.role_ != 0) {
          setRoleValue(other.getRoleValue());
        }
        internalGetMutableExtensions().mergeFrom(
            other.internalGetExtensions());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.RegionStat parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.RegionStat) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long regionId_ ;
      /**
       * <code>uint64 region_id = 1;</code>
       * @return The regionId.
       */
      @java.lang.Override
      public long getRegionId() {
        return regionId_;
      }
      /**
       * <code>uint64 region_id = 1;</code>
       * @param value The regionId to set.
       * @return This builder for chaining.
       */
      public Builder setRegionId(long value) {
        
        regionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 region_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegionId() {
        
        regionId_ = 0L;
        onChanged();
        return this;
      }

      private long rcus_ ;
      /**
       * <pre>
       * The read capacity units during this period
       * </pre>
       *
       * <code>int64 rcus = 2;</code>
       * @return The rcus.
       */
      @java.lang.Override
      public long getRcus() {
        return rcus_;
      }
      /**
       * <pre>
       * The read capacity units during this period
       * </pre>
       *
       * <code>int64 rcus = 2;</code>
       * @param value The rcus to set.
       * @return This builder for chaining.
       */
      public Builder setRcus(long value) {
        
        rcus_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The read capacity units during this period
       * </pre>
       *
       * <code>int64 rcus = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRcus() {
        
        rcus_ = 0L;
        onChanged();
        return this;
      }

      private long wcus_ ;
      /**
       * <pre>
       * The write capacity units during this period
       * </pre>
       *
       * <code>int64 wcus = 3;</code>
       * @return The wcus.
       */
      @java.lang.Override
      public long getWcus() {
        return wcus_;
      }
      /**
       * <pre>
       * The write capacity units during this period
       * </pre>
       *
       * <code>int64 wcus = 3;</code>
       * @param value The wcus to set.
       * @return This builder for chaining.
       */
      public Builder setWcus(long value) {
        
        wcus_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The write capacity units during this period
       * </pre>
       *
       * <code>int64 wcus = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearWcus() {
        
        wcus_ = 0L;
        onChanged();
        return this;
      }

      private long approximateBytes_ ;
      /**
       * <pre>
       * Approximate bytes of this region
       * </pre>
       *
       * <code>int64 approximate_bytes = 4;</code>
       * @return The approximateBytes.
       */
      @java.lang.Override
      public long getApproximateBytes() {
        return approximateBytes_;
      }
      /**
       * <pre>
       * Approximate bytes of this region
       * </pre>
       *
       * <code>int64 approximate_bytes = 4;</code>
       * @param value The approximateBytes to set.
       * @return This builder for chaining.
       */
      public Builder setApproximateBytes(long value) {
        
        approximateBytes_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Approximate bytes of this region
       * </pre>
       *
       * <code>int64 approximate_bytes = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearApproximateBytes() {
        
        approximateBytes_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object engine_ = "";
      /**
       * <pre>
       * Engine name
       * </pre>
       *
       * <code>string engine = 6;</code>
       * @return The engine.
       */
      public java.lang.String getEngine() {
        java.lang.Object ref = engine_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          engine_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Engine name
       * </pre>
       *
       * <code>string engine = 6;</code>
       * @return The bytes for engine.
       */
      public com.google.protobuf.ByteString
          getEngineBytes() {
        java.lang.Object ref = engine_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          engine_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Engine name
       * </pre>
       *
       * <code>string engine = 6;</code>
       * @param value The engine to set.
       * @return This builder for chaining.
       */
      public Builder setEngine(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        engine_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Engine name
       * </pre>
       *
       * <code>string engine = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearEngine() {
        
        engine_ = getDefaultInstance().getEngine();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Engine name
       * </pre>
       *
       * <code>string engine = 6;</code>
       * @param value The bytes for engine to set.
       * @return This builder for chaining.
       */
      public Builder setEngineBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        engine_ = value;
        onChanged();
        return this;
      }

      private int role_ = 0;
      /**
       * <pre>
       * Region role
       * </pre>
       *
       * <code>.greptime.v1.meta.RegionRole role = 7;</code>
       * @return The enum numeric value on the wire for role.
       */
      @java.lang.Override public int getRoleValue() {
        return role_;
      }
      /**
       * <pre>
       * Region role
       * </pre>
       *
       * <code>.greptime.v1.meta.RegionRole role = 7;</code>
       * @param value The enum numeric value on the wire for role to set.
       * @return This builder for chaining.
       */
      public Builder setRoleValue(int value) {
        
        role_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Region role
       * </pre>
       *
       * <code>.greptime.v1.meta.RegionRole role = 7;</code>
       * @return The role.
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole() {
        @SuppressWarnings("deprecation")
        greptime.v1.meta.HeartbeatOuterClass.RegionRole result = greptime.v1.meta.HeartbeatOuterClass.RegionRole.valueOf(role_);
        return result == null ? greptime.v1.meta.HeartbeatOuterClass.RegionRole.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Region role
       * </pre>
       *
       * <code>.greptime.v1.meta.RegionRole role = 7;</code>
       * @param value The role to set.
       * @return This builder for chaining.
       */
      public Builder setRole(greptime.v1.meta.HeartbeatOuterClass.RegionRole value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        role_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Region role
       * </pre>
       *
       * <code>.greptime.v1.meta.RegionRole role = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearRole() {
        
        role_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, com.google.protobuf.ByteString> extensions_;
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
      internalGetExtensions() {
        if (extensions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ExtensionsDefaultEntryHolder.defaultEntry);
        }
        return extensions_;
      }
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
      internalGetMutableExtensions() {
        onChanged();;
        if (extensions_ == null) {
          extensions_ = com.google.protobuf.MapField.newMapField(
              ExtensionsDefaultEntryHolder.defaultEntry);
        }
        if (!extensions_.isMutable()) {
          extensions_ = extensions_.copy();
        }
        return extensions_;
      }

      public int getExtensionsCount() {
        return internalGetExtensions().getMap().size();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      @java.lang.Override
      public boolean containsExtensions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetExtensions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getExtensionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensions() {
        return getExtensionsMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensionsMap() {
        return internalGetExtensions().getMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public com.google.protobuf.ByteString getExtensionsOrDefault(
          java.lang.String key,
          com.google.protobuf.ByteString defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetExtensions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public com.google.protobuf.ByteString getExtensionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetExtensions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearExtensions() {
        internalGetMutableExtensions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      public Builder removeExtensions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableExtensions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
      getMutableExtensions() {
        return internalGetMutableExtensions().getMutableMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      public Builder putExtensions(
          java.lang.String key,
          com.google.protobuf.ByteString value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableExtensions().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      public Builder putAllExtensions(
          java.util.Map<java.lang.String, com.google.protobuf.ByteString> values) {
        internalGetMutableExtensions().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.RegionStat)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.RegionStat)
    private static final greptime.v1.meta.HeartbeatOuterClass.RegionStat DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.RegionStat();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.RegionStat getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RegionStat>
        PARSER = new com.google.protobuf.AbstractParser<RegionStat>() {
      @java.lang.Override
      public RegionStat parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RegionStat(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RegionStat> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RegionStat> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionStat getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlowStatOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.FlowStat)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    int getFlowStatSizeCount();
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    boolean containsFlowStatSize(
        int key);
    /**
     * Use {@link #getFlowStatSizeMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Long>
    getFlowStatSize();
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.Long>
    getFlowStatSizeMap();
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */

    long getFlowStatSizeOrDefault(
        int key,
        long defaultValue);
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */

    long getFlowStatSizeOrThrow(
        int key);

    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    int getFlowLastExecTimeMapCount();
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    boolean containsFlowLastExecTimeMap(
        int key);
    /**
     * Use {@link #getFlowLastExecTimeMapMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.Integer, java.lang.Long>
    getFlowLastExecTimeMap();
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    java.util.Map<java.lang.Integer, java.lang.Long>
    getFlowLastExecTimeMapMap();
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */

    long getFlowLastExecTimeMapOrDefault(
        int key,
        long defaultValue);
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */

    long getFlowLastExecTimeMapOrThrow(
        int key);
  }
  /**
   * Protobuf type {@code greptime.v1.meta.FlowStat}
   */
  public static final class FlowStat extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.FlowStat)
      FlowStatOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlowStat.newBuilder() to construct.
    private FlowStat(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlowStat() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlowStat();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FlowStat(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                flowStatSize_ = com.google.protobuf.MapField.newMapField(
                    FlowStatSizeDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Long>
              flowStatSize__ = input.readMessage(
                  FlowStatSizeDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              flowStatSize_.getMutableMap().put(
                  flowStatSize__.getKey(), flowStatSize__.getValue());
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                flowLastExecTimeMap_ = com.google.protobuf.MapField.newMapField(
                    FlowLastExecTimeMapDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000002;
              }
              com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Long>
              flowLastExecTimeMap__ = input.readMessage(
                  FlowLastExecTimeMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              flowLastExecTimeMap_.getMutableMap().put(
                  flowLastExecTimeMap__.getKey(), flowLastExecTimeMap__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetFlowStatSize();
        case 2:
          return internalGetFlowLastExecTimeMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.FlowStat.class, greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder.class);
    }

    public static final int FLOW_STAT_SIZE_FIELD_NUMBER = 1;
    private static final class FlowStatSizeDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.Long> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.Long>newDefaultInstance(
                  greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.UINT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.UINT64,
                  0L);
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.Long> flowStatSize_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
    internalGetFlowStatSize() {
      if (flowStatSize_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            FlowStatSizeDefaultEntryHolder.defaultEntry);
      }
      return flowStatSize_;
    }

    public int getFlowStatSizeCount() {
      return internalGetFlowStatSize().getMap().size();
    }
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */

    @java.lang.Override
    public boolean containsFlowStatSize(
        int key) {
      
      return internalGetFlowStatSize().getMap().containsKey(key);
    }
    /**
     * Use {@link #getFlowStatSizeMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Long> getFlowStatSize() {
      return getFlowStatSizeMap();
    }
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.Integer, java.lang.Long> getFlowStatSizeMap() {
      return internalGetFlowStatSize().getMap();
    }
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    @java.lang.Override

    public long getFlowStatSizeOrDefault(
        int key,
        long defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.Long> map =
          internalGetFlowStatSize().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Each flow's in mem state's size in bytes
     * due to protobuf's key can't be a message, so we use uint32 as the key which
     * is [`FlowId`]'s inner field `id`
     * </pre>
     *
     * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
     */
    @java.lang.Override

    public long getFlowStatSizeOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.Long> map =
          internalGetFlowStatSize().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int FLOW_LAST_EXEC_TIME_MAP_FIELD_NUMBER = 2;
    private static final class FlowLastExecTimeMapDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.Integer, java.lang.Long> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.Integer, java.lang.Long>newDefaultInstance(
                  greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.UINT32,
                  0,
                  com.google.protobuf.WireFormat.FieldType.INT64,
                  0L);
    }
    private com.google.protobuf.MapField<
        java.lang.Integer, java.lang.Long> flowLastExecTimeMap_;
    private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
    internalGetFlowLastExecTimeMap() {
      if (flowLastExecTimeMap_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            FlowLastExecTimeMapDefaultEntryHolder.defaultEntry);
      }
      return flowLastExecTimeMap_;
    }

    public int getFlowLastExecTimeMapCount() {
      return internalGetFlowLastExecTimeMap().getMap().size();
    }
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */

    @java.lang.Override
    public boolean containsFlowLastExecTimeMap(
        int key) {
      
      return internalGetFlowLastExecTimeMap().getMap().containsKey(key);
    }
    /**
     * Use {@link #getFlowLastExecTimeMapMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.Integer, java.lang.Long> getFlowLastExecTimeMap() {
      return getFlowLastExecTimeMapMap();
    }
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.Integer, java.lang.Long> getFlowLastExecTimeMapMap() {
      return internalGetFlowLastExecTimeMap().getMap();
    }
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    @java.lang.Override

    public long getFlowLastExecTimeMapOrDefault(
        int key,
        long defaultValue) {
      
      java.util.Map<java.lang.Integer, java.lang.Long> map =
          internalGetFlowLastExecTimeMap().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
     */
    @java.lang.Override

    public long getFlowLastExecTimeMapOrThrow(
        int key) {
      
      java.util.Map<java.lang.Integer, java.lang.Long> map =
          internalGetFlowLastExecTimeMap().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetFlowStatSize(),
          FlowStatSizeDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessageV3
        .serializeIntegerMapTo(
          output,
          internalGetFlowLastExecTimeMap(),
          FlowLastExecTimeMapDefaultEntryHolder.defaultEntry,
          2);
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Long> entry
           : internalGetFlowStatSize().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Long>
        flowStatSize__ = FlowStatSizeDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, flowStatSize__);
      }
      for (java.util.Map.Entry<java.lang.Integer, java.lang.Long> entry
           : internalGetFlowLastExecTimeMap().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.Integer, java.lang.Long>
        flowLastExecTimeMap__ = FlowLastExecTimeMapDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, flowLastExecTimeMap__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.FlowStat)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.FlowStat other = (greptime.v1.meta.HeartbeatOuterClass.FlowStat) obj;

      if (!internalGetFlowStatSize().equals(
          other.internalGetFlowStatSize())) return false;
      if (!internalGetFlowLastExecTimeMap().equals(
          other.internalGetFlowLastExecTimeMap())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetFlowStatSize().getMap().isEmpty()) {
        hash = (37 * hash) + FLOW_STAT_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetFlowStatSize().hashCode();
      }
      if (!internalGetFlowLastExecTimeMap().getMap().isEmpty()) {
        hash = (37 * hash) + FLOW_LAST_EXEC_TIME_MAP_FIELD_NUMBER;
        hash = (53 * hash) + internalGetFlowLastExecTimeMap().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.FlowStat prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.FlowStat}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.FlowStat)
        greptime.v1.meta.HeartbeatOuterClass.FlowStatOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetFlowStatSize();
          case 2:
            return internalGetFlowLastExecTimeMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableFlowStatSize();
          case 2:
            return internalGetMutableFlowLastExecTimeMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.FlowStat.class, greptime.v1.meta.HeartbeatOuterClass.FlowStat.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.FlowStat.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        internalGetMutableFlowStatSize().clear();
        internalGetMutableFlowLastExecTimeMap().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_FlowStat_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlowStat getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.FlowStat.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlowStat build() {
        greptime.v1.meta.HeartbeatOuterClass.FlowStat result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.FlowStat buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.FlowStat result = new greptime.v1.meta.HeartbeatOuterClass.FlowStat(this);
        int from_bitField0_ = bitField0_;
        result.flowStatSize_ = internalGetFlowStatSize();
        result.flowStatSize_.makeImmutable();
        result.flowLastExecTimeMap_ = internalGetFlowLastExecTimeMap();
        result.flowLastExecTimeMap_.makeImmutable();
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.FlowStat) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.FlowStat)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.FlowStat other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.FlowStat.getDefaultInstance()) return this;
        internalGetMutableFlowStatSize().mergeFrom(
            other.internalGetFlowStatSize());
        internalGetMutableFlowLastExecTimeMap().mergeFrom(
            other.internalGetFlowLastExecTimeMap());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.FlowStat parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.FlowStat) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.Long> flowStatSize_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
      internalGetFlowStatSize() {
        if (flowStatSize_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              FlowStatSizeDefaultEntryHolder.defaultEntry);
        }
        return flowStatSize_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
      internalGetMutableFlowStatSize() {
        onChanged();;
        if (flowStatSize_ == null) {
          flowStatSize_ = com.google.protobuf.MapField.newMapField(
              FlowStatSizeDefaultEntryHolder.defaultEntry);
        }
        if (!flowStatSize_.isMutable()) {
          flowStatSize_ = flowStatSize_.copy();
        }
        return flowStatSize_;
      }

      public int getFlowStatSizeCount() {
        return internalGetFlowStatSize().getMap().size();
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */

      @java.lang.Override
      public boolean containsFlowStatSize(
          int key) {
        
        return internalGetFlowStatSize().getMap().containsKey(key);
      }
      /**
       * Use {@link #getFlowStatSizeMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Long> getFlowStatSize() {
        return getFlowStatSizeMap();
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.Integer, java.lang.Long> getFlowStatSizeMap() {
        return internalGetFlowStatSize().getMap();
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */
      @java.lang.Override

      public long getFlowStatSizeOrDefault(
          int key,
          long defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.Long> map =
            internalGetFlowStatSize().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */
      @java.lang.Override

      public long getFlowStatSizeOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.Long> map =
            internalGetFlowStatSize().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearFlowStatSize() {
        internalGetMutableFlowStatSize().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */

      public Builder removeFlowStatSize(
          int key) {
        
        internalGetMutableFlowStatSize().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Long>
      getMutableFlowStatSize() {
        return internalGetMutableFlowStatSize().getMutableMap();
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */
      public Builder putFlowStatSize(
          int key,
          long value) {
        
        
        internalGetMutableFlowStatSize().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * Each flow's in mem state's size in bytes
       * due to protobuf's key can't be a message, so we use uint32 as the key which
       * is [`FlowId`]'s inner field `id`
       * </pre>
       *
       * <code>map&lt;uint32, uint64&gt; flow_stat_size = 1;</code>
       */

      public Builder putAllFlowStatSize(
          java.util.Map<java.lang.Integer, java.lang.Long> values) {
        internalGetMutableFlowStatSize().getMutableMap()
            .putAll(values);
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.Integer, java.lang.Long> flowLastExecTimeMap_;
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
      internalGetFlowLastExecTimeMap() {
        if (flowLastExecTimeMap_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              FlowLastExecTimeMapDefaultEntryHolder.defaultEntry);
        }
        return flowLastExecTimeMap_;
      }
      private com.google.protobuf.MapField<java.lang.Integer, java.lang.Long>
      internalGetMutableFlowLastExecTimeMap() {
        onChanged();;
        if (flowLastExecTimeMap_ == null) {
          flowLastExecTimeMap_ = com.google.protobuf.MapField.newMapField(
              FlowLastExecTimeMapDefaultEntryHolder.defaultEntry);
        }
        if (!flowLastExecTimeMap_.isMutable()) {
          flowLastExecTimeMap_ = flowLastExecTimeMap_.copy();
        }
        return flowLastExecTimeMap_;
      }

      public int getFlowLastExecTimeMapCount() {
        return internalGetFlowLastExecTimeMap().getMap().size();
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */

      @java.lang.Override
      public boolean containsFlowLastExecTimeMap(
          int key) {
        
        return internalGetFlowLastExecTimeMap().getMap().containsKey(key);
      }
      /**
       * Use {@link #getFlowLastExecTimeMapMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Long> getFlowLastExecTimeMap() {
        return getFlowLastExecTimeMapMap();
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.Integer, java.lang.Long> getFlowLastExecTimeMapMap() {
        return internalGetFlowLastExecTimeMap().getMap();
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */
      @java.lang.Override

      public long getFlowLastExecTimeMapOrDefault(
          int key,
          long defaultValue) {
        
        java.util.Map<java.lang.Integer, java.lang.Long> map =
            internalGetFlowLastExecTimeMap().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */
      @java.lang.Override

      public long getFlowLastExecTimeMapOrThrow(
          int key) {
        
        java.util.Map<java.lang.Integer, java.lang.Long> map =
            internalGetFlowLastExecTimeMap().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearFlowLastExecTimeMap() {
        internalGetMutableFlowLastExecTimeMap().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */

      public Builder removeFlowLastExecTimeMap(
          int key) {
        
        internalGetMutableFlowLastExecTimeMap().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.Integer, java.lang.Long>
      getMutableFlowLastExecTimeMap() {
        return internalGetMutableFlowLastExecTimeMap().getMutableMap();
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */
      public Builder putFlowLastExecTimeMap(
          int key,
          long value) {
        
        
        internalGetMutableFlowLastExecTimeMap().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;uint32, int64&gt; flow_last_exec_time_map = 2;</code>
       */

      public Builder putAllFlowLastExecTimeMap(
          java.util.Map<java.lang.Integer, java.lang.Long> values) {
        internalGetMutableFlowLastExecTimeMap().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.FlowStat)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.FlowStat)
    private static final greptime.v1.meta.HeartbeatOuterClass.FlowStat DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.FlowStat();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.FlowStat getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlowStat>
        PARSER = new com.google.protobuf.AbstractParser<FlowStat>() {
      @java.lang.Override
      public FlowStat parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FlowStat(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<FlowStat> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<FlowStat> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.FlowStat getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HeartbeatResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.HeartbeatResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return The header.
     */
    greptime.v1.meta.Common.ResponseHeader getHeader();
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     */
    greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder();

    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     * @return Whether the mailboxMessage field is set.
     */
    boolean hasMailboxMessage();
    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     * @return The mailboxMessage.
     */
    greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage();
    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder();

    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     * @return Whether the regionLease field is set.
     */
    boolean hasRegionLease();
    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     * @return The regionLease.
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionLease getRegionLease();
    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder getRegionLeaseOrBuilder();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.HeartbeatResponse}
   */
  public static final class HeartbeatResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.HeartbeatResponse)
      HeartbeatResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HeartbeatResponse.newBuilder() to construct.
    private HeartbeatResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HeartbeatResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HeartbeatResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HeartbeatResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              greptime.v1.meta.Common.ResponseHeader.Builder subBuilder = null;
              if (header_ != null) {
                subBuilder = header_.toBuilder();
              }
              header_ = input.readMessage(greptime.v1.meta.Common.ResponseHeader.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(header_);
                header_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder subBuilder = null;
              if (mailboxMessage_ != null) {
                subBuilder = mailboxMessage_.toBuilder();
              }
              mailboxMessage_ = input.readMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(mailboxMessage_);
                mailboxMessage_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder subBuilder = null;
              if (regionLease_ != null) {
                subBuilder = regionLease_.toBuilder();
              }
              regionLease_ = input.readMessage(greptime.v1.meta.HeartbeatOuterClass.RegionLease.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(regionLease_);
                regionLease_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.class, greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.Builder.class);
    }

    public static final int HEADER_FIELD_NUMBER = 1;
    private greptime.v1.meta.Common.ResponseHeader header_;
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return header_ != null;
    }
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return The header.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.ResponseHeader getHeader() {
      return header_ == null ? greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
    }
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder() {
      return getHeader();
    }

    public static final int MAILBOX_MESSAGE_FIELD_NUMBER = 2;
    private greptime.v1.meta.HeartbeatOuterClass.MailboxMessage mailboxMessage_;
    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     * @return Whether the mailboxMessage field is set.
     */
    @java.lang.Override
    public boolean hasMailboxMessage() {
      return mailboxMessage_ != null;
    }
    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     * @return The mailboxMessage.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage() {
      return mailboxMessage_ == null ? greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
    }
    /**
     * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder() {
      return getMailboxMessage();
    }

    public static final int REGION_LEASE_FIELD_NUMBER = 3;
    private greptime.v1.meta.HeartbeatOuterClass.RegionLease regionLease_;
    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     * @return Whether the regionLease field is set.
     */
    @java.lang.Override
    public boolean hasRegionLease() {
      return regionLease_ != null;
    }
    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     * @return The regionLease.
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionLease getRegionLease() {
      return regionLease_ == null ? greptime.v1.meta.HeartbeatOuterClass.RegionLease.getDefaultInstance() : regionLease_;
    }
    /**
     * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder getRegionLeaseOrBuilder() {
      return getRegionLease();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (header_ != null) {
        output.writeMessage(1, getHeader());
      }
      if (mailboxMessage_ != null) {
        output.writeMessage(2, getMailboxMessage());
      }
      if (regionLease_ != null) {
        output.writeMessage(3, getRegionLease());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (header_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getHeader());
      }
      if (mailboxMessage_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getMailboxMessage());
      }
      if (regionLease_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRegionLease());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse other = (greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse) obj;

      if (hasHeader() != other.hasHeader()) return false;
      if (hasHeader()) {
        if (!getHeader()
            .equals(other.getHeader())) return false;
      }
      if (hasMailboxMessage() != other.hasMailboxMessage()) return false;
      if (hasMailboxMessage()) {
        if (!getMailboxMessage()
            .equals(other.getMailboxMessage())) return false;
      }
      if (hasRegionLease() != other.hasRegionLease()) return false;
      if (hasRegionLease()) {
        if (!getRegionLease()
            .equals(other.getRegionLease())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHeader()) {
        hash = (37 * hash) + HEADER_FIELD_NUMBER;
        hash = (53 * hash) + getHeader().hashCode();
      }
      if (hasMailboxMessage()) {
        hash = (37 * hash) + MAILBOX_MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMailboxMessage().hashCode();
      }
      if (hasRegionLease()) {
        hash = (37 * hash) + REGION_LEASE_FIELD_NUMBER;
        hash = (53 * hash) + getRegionLease().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.HeartbeatResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.HeartbeatResponse)
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.class, greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (headerBuilder_ == null) {
          header_ = null;
        } else {
          header_ = null;
          headerBuilder_ = null;
        }
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = null;
        } else {
          mailboxMessage_ = null;
          mailboxMessageBuilder_ = null;
        }
        if (regionLeaseBuilder_ == null) {
          regionLease_ = null;
        } else {
          regionLease_ = null;
          regionLeaseBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_HeartbeatResponse_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse build() {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse result = new greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse(this);
        if (headerBuilder_ == null) {
          result.header_ = header_;
        } else {
          result.header_ = headerBuilder_.build();
        }
        if (mailboxMessageBuilder_ == null) {
          result.mailboxMessage_ = mailboxMessage_;
        } else {
          result.mailboxMessage_ = mailboxMessageBuilder_.build();
        }
        if (regionLeaseBuilder_ == null) {
          result.regionLease_ = regionLease_;
        } else {
          result.regionLease_ = regionLeaseBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse.getDefaultInstance()) return this;
        if (other.hasHeader()) {
          mergeHeader(other.getHeader());
        }
        if (other.hasMailboxMessage()) {
          mergeMailboxMessage(other.getMailboxMessage());
        }
        if (other.hasRegionLease()) {
          mergeRegionLease(other.getRegionLease());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private greptime.v1.meta.Common.ResponseHeader header_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder> headerBuilder_;
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       * @return Whether the header field is set.
       */
      public boolean hasHeader() {
        return headerBuilder_ != null || header_ != null;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       * @return The header.
       */
      public greptime.v1.meta.Common.ResponseHeader getHeader() {
        if (headerBuilder_ == null) {
          return header_ == null ? greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
        } else {
          return headerBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder setHeader(greptime.v1.meta.Common.ResponseHeader value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          header_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder setHeader(
          greptime.v1.meta.Common.ResponseHeader.Builder builderForValue) {
        if (headerBuilder_ == null) {
          header_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder mergeHeader(greptime.v1.meta.Common.ResponseHeader value) {
        if (headerBuilder_ == null) {
          if (header_ != null) {
            header_ =
              greptime.v1.meta.Common.ResponseHeader.newBuilder(header_).mergeFrom(value).buildPartial();
          } else {
            header_ = value;
          }
          onChanged();
        } else {
          headerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          header_ = null;
          onChanged();
        } else {
          header_ = null;
          headerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.ResponseHeader.Builder getHeaderBuilder() {
        
        onChanged();
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder() {
        if (headerBuilder_ != null) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          return header_ == null ?
              greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
        }
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder>(
                  getHeader(),
                  getParentForChildren(),
                  isClean());
          header_ = null;
        }
        return headerBuilder_;
      }

      private greptime.v1.meta.HeartbeatOuterClass.MailboxMessage mailboxMessage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder> mailboxMessageBuilder_;
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       * @return Whether the mailboxMessage field is set.
       */
      public boolean hasMailboxMessage() {
        return mailboxMessageBuilder_ != null || mailboxMessage_ != null;
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       * @return The mailboxMessage.
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getMailboxMessage() {
        if (mailboxMessageBuilder_ == null) {
          return mailboxMessage_ == null ? greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
        } else {
          return mailboxMessageBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public Builder setMailboxMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage value) {
        if (mailboxMessageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          mailboxMessage_ = value;
          onChanged();
        } else {
          mailboxMessageBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public Builder setMailboxMessage(
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder builderForValue) {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = builderForValue.build();
          onChanged();
        } else {
          mailboxMessageBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public Builder mergeMailboxMessage(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage value) {
        if (mailboxMessageBuilder_ == null) {
          if (mailboxMessage_ != null) {
            mailboxMessage_ =
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.newBuilder(mailboxMessage_).mergeFrom(value).buildPartial();
          } else {
            mailboxMessage_ = value;
          }
          onChanged();
        } else {
          mailboxMessageBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public Builder clearMailboxMessage() {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessage_ = null;
          onChanged();
        } else {
          mailboxMessage_ = null;
          mailboxMessageBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder getMailboxMessageBuilder() {
        
        onChanged();
        return getMailboxMessageFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder getMailboxMessageOrBuilder() {
        if (mailboxMessageBuilder_ != null) {
          return mailboxMessageBuilder_.getMessageOrBuilder();
        } else {
          return mailboxMessage_ == null ?
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance() : mailboxMessage_;
        }
      }
      /**
       * <code>.greptime.v1.meta.MailboxMessage mailbox_message = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder> 
          getMailboxMessageFieldBuilder() {
        if (mailboxMessageBuilder_ == null) {
          mailboxMessageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder, greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder>(
                  getMailboxMessage(),
                  getParentForChildren(),
                  isClean());
          mailboxMessage_ = null;
        }
        return mailboxMessageBuilder_;
      }

      private greptime.v1.meta.HeartbeatOuterClass.RegionLease regionLease_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.RegionLease, greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder> regionLeaseBuilder_;
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       * @return Whether the regionLease field is set.
       */
      public boolean hasRegionLease() {
        return regionLeaseBuilder_ != null || regionLease_ != null;
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       * @return The regionLease.
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionLease getRegionLease() {
        if (regionLeaseBuilder_ == null) {
          return regionLease_ == null ? greptime.v1.meta.HeartbeatOuterClass.RegionLease.getDefaultInstance() : regionLease_;
        } else {
          return regionLeaseBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public Builder setRegionLease(greptime.v1.meta.HeartbeatOuterClass.RegionLease value) {
        if (regionLeaseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          regionLease_ = value;
          onChanged();
        } else {
          regionLeaseBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public Builder setRegionLease(
          greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder builderForValue) {
        if (regionLeaseBuilder_ == null) {
          regionLease_ = builderForValue.build();
          onChanged();
        } else {
          regionLeaseBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public Builder mergeRegionLease(greptime.v1.meta.HeartbeatOuterClass.RegionLease value) {
        if (regionLeaseBuilder_ == null) {
          if (regionLease_ != null) {
            regionLease_ =
              greptime.v1.meta.HeartbeatOuterClass.RegionLease.newBuilder(regionLease_).mergeFrom(value).buildPartial();
          } else {
            regionLease_ = value;
          }
          onChanged();
        } else {
          regionLeaseBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public Builder clearRegionLease() {
        if (regionLeaseBuilder_ == null) {
          regionLease_ = null;
          onChanged();
        } else {
          regionLease_ = null;
          regionLeaseBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder getRegionLeaseBuilder() {
        
        onChanged();
        return getRegionLeaseFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder getRegionLeaseOrBuilder() {
        if (regionLeaseBuilder_ != null) {
          return regionLeaseBuilder_.getMessageOrBuilder();
        } else {
          return regionLease_ == null ?
              greptime.v1.meta.HeartbeatOuterClass.RegionLease.getDefaultInstance() : regionLease_;
        }
      }
      /**
       * <code>.greptime.v1.meta.RegionLease region_lease = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.RegionLease, greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder> 
          getRegionLeaseFieldBuilder() {
        if (regionLeaseBuilder_ == null) {
          regionLeaseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.RegionLease, greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder, greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder>(
                  getRegionLease(),
                  getParentForChildren(),
                  isClean());
          regionLease_ = null;
        }
        return regionLeaseBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.HeartbeatResponse)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.HeartbeatResponse)
    private static final greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HeartbeatResponse>
        PARSER = new com.google.protobuf.AbstractParser<HeartbeatResponse>() {
      @java.lang.Override
      public HeartbeatResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HeartbeatResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<HeartbeatResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<HeartbeatResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.HeartbeatResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GrantedRegionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.GrantedRegion)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint64 region_id = 1;</code>
     * @return The regionId.
     */
    long getRegionId();

    /**
     * <code>.greptime.v1.meta.RegionRole role = 2;</code>
     * @return The enum numeric value on the wire for role.
     */
    int getRoleValue();
    /**
     * <code>.greptime.v1.meta.RegionRole role = 2;</code>
     * @return The role.
     */
    greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole();

    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    int getExtensionsCount();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    boolean containsExtensions(
        java.lang.String key);
    /**
     * Use {@link #getExtensionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getExtensions();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    java.util.Map<java.lang.String, com.google.protobuf.ByteString>
    getExtensionsMap();
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    /* nullable */
com.google.protobuf.ByteString getExtensionsOrDefault(
        java.lang.String key,
        /* nullable */
com.google.protobuf.ByteString defaultValue);
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    com.google.protobuf.ByteString getExtensionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * The granted region is the region that the meta server granted leases.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.meta.GrantedRegion}
   */
  public static final class GrantedRegion extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.GrantedRegion)
      GrantedRegionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GrantedRegion.newBuilder() to construct.
    private GrantedRegion(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GrantedRegion() {
      role_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GrantedRegion();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GrantedRegion(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              regionId_ = input.readUInt64();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              role_ = rawValue;
              break;
            }
            case 794: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                extensions_ = com.google.protobuf.MapField.newMapField(
                    ExtensionsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
              extensions__ = input.readMessage(
                  ExtensionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              extensions_.getMutableMap().put(
                  extensions__.getKey(), extensions__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 99:
          return internalGetExtensions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.class, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder.class);
    }

    public static final int REGION_ID_FIELD_NUMBER = 1;
    private long regionId_;
    /**
     * <code>uint64 region_id = 1;</code>
     * @return The regionId.
     */
    @java.lang.Override
    public long getRegionId() {
      return regionId_;
    }

    public static final int ROLE_FIELD_NUMBER = 2;
    private int role_;
    /**
     * <code>.greptime.v1.meta.RegionRole role = 2;</code>
     * @return The enum numeric value on the wire for role.
     */
    @java.lang.Override public int getRoleValue() {
      return role_;
    }
    /**
     * <code>.greptime.v1.meta.RegionRole role = 2;</code>
     * @return The role.
     */
    @java.lang.Override public greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole() {
      @SuppressWarnings("deprecation")
      greptime.v1.meta.HeartbeatOuterClass.RegionRole result = greptime.v1.meta.HeartbeatOuterClass.RegionRole.valueOf(role_);
      return result == null ? greptime.v1.meta.HeartbeatOuterClass.RegionRole.UNRECOGNIZED : result;
    }

    public static final int EXTENSIONS_FIELD_NUMBER = 99;
    private static final class ExtensionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, com.google.protobuf.ByteString> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, com.google.protobuf.ByteString>newDefaultInstance(
                  greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.BYTES,
                  com.google.protobuf.ByteString.EMPTY);
    }
    private com.google.protobuf.MapField<
        java.lang.String, com.google.protobuf.ByteString> extensions_;
    private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
    internalGetExtensions() {
      if (extensions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ExtensionsDefaultEntryHolder.defaultEntry);
      }
      return extensions_;
    }

    public int getExtensionsCount() {
      return internalGetExtensions().getMap().size();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */

    @java.lang.Override
    public boolean containsExtensions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetExtensions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getExtensionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensions() {
      return getExtensionsMap();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensionsMap() {
      return internalGetExtensions().getMap();
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public com.google.protobuf.ByteString getExtensionsOrDefault(
        java.lang.String key,
        com.google.protobuf.ByteString defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetExtensions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, bytes&gt; extensions = 99;</code>
     */
    @java.lang.Override

    public com.google.protobuf.ByteString getExtensionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
          internalGetExtensions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (regionId_ != 0L) {
        output.writeUInt64(1, regionId_);
      }
      if (role_ != greptime.v1.meta.HeartbeatOuterClass.RegionRole.Leader.getNumber()) {
        output.writeEnum(2, role_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetExtensions(),
          ExtensionsDefaultEntryHolder.defaultEntry,
          99);
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (regionId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, regionId_);
      }
      if (role_ != greptime.v1.meta.HeartbeatOuterClass.RegionRole.Leader.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, role_);
      }
      for (java.util.Map.Entry<java.lang.String, com.google.protobuf.ByteString> entry
           : internalGetExtensions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.ByteString>
        extensions__ = ExtensionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(99, extensions__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.GrantedRegion)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.GrantedRegion other = (greptime.v1.meta.HeartbeatOuterClass.GrantedRegion) obj;

      if (getRegionId()
          != other.getRegionId()) return false;
      if (role_ != other.role_) return false;
      if (!internalGetExtensions().equals(
          other.internalGetExtensions())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REGION_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRegionId());
      hash = (37 * hash) + ROLE_FIELD_NUMBER;
      hash = (53 * hash) + role_;
      if (!internalGetExtensions().getMap().isEmpty()) {
        hash = (37 * hash) + EXTENSIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetExtensions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.GrantedRegion prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The granted region is the region that the meta server granted leases.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.meta.GrantedRegion}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.GrantedRegion)
        greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 99:
            return internalGetExtensions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 99:
            return internalGetMutableExtensions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.class, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        regionId_ = 0L;

        role_ = 0;

        internalGetMutableExtensions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_GrantedRegion_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion build() {
        greptime.v1.meta.HeartbeatOuterClass.GrantedRegion result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.GrantedRegion result = new greptime.v1.meta.HeartbeatOuterClass.GrantedRegion(this);
        int from_bitField0_ = bitField0_;
        result.regionId_ = regionId_;
        result.role_ = role_;
        result.extensions_ = internalGetExtensions();
        result.extensions_.makeImmutable();
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.GrantedRegion) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.GrantedRegion)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.GrantedRegion other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.getDefaultInstance()) return this;
        if (other.getRegionId() != 0L) {
          setRegionId(other.getRegionId());
        }
        if (other.role_ != 0) {
          setRoleValue(other.getRoleValue());
        }
        internalGetMutableExtensions().mergeFrom(
            other.internalGetExtensions());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.GrantedRegion parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.GrantedRegion) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long regionId_ ;
      /**
       * <code>uint64 region_id = 1;</code>
       * @return The regionId.
       */
      @java.lang.Override
      public long getRegionId() {
        return regionId_;
      }
      /**
       * <code>uint64 region_id = 1;</code>
       * @param value The regionId to set.
       * @return This builder for chaining.
       */
      public Builder setRegionId(long value) {
        
        regionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 region_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRegionId() {
        
        regionId_ = 0L;
        onChanged();
        return this;
      }

      private int role_ = 0;
      /**
       * <code>.greptime.v1.meta.RegionRole role = 2;</code>
       * @return The enum numeric value on the wire for role.
       */
      @java.lang.Override public int getRoleValue() {
        return role_;
      }
      /**
       * <code>.greptime.v1.meta.RegionRole role = 2;</code>
       * @param value The enum numeric value on the wire for role to set.
       * @return This builder for chaining.
       */
      public Builder setRoleValue(int value) {
        
        role_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionRole role = 2;</code>
       * @return The role.
       */
      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionRole getRole() {
        @SuppressWarnings("deprecation")
        greptime.v1.meta.HeartbeatOuterClass.RegionRole result = greptime.v1.meta.HeartbeatOuterClass.RegionRole.valueOf(role_);
        return result == null ? greptime.v1.meta.HeartbeatOuterClass.RegionRole.UNRECOGNIZED : result;
      }
      /**
       * <code>.greptime.v1.meta.RegionRole role = 2;</code>
       * @param value The role to set.
       * @return This builder for chaining.
       */
      public Builder setRole(greptime.v1.meta.HeartbeatOuterClass.RegionRole value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        role_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.greptime.v1.meta.RegionRole role = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRole() {
        
        role_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, com.google.protobuf.ByteString> extensions_;
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
      internalGetExtensions() {
        if (extensions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ExtensionsDefaultEntryHolder.defaultEntry);
        }
        return extensions_;
      }
      private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.ByteString>
      internalGetMutableExtensions() {
        onChanged();;
        if (extensions_ == null) {
          extensions_ = com.google.protobuf.MapField.newMapField(
              ExtensionsDefaultEntryHolder.defaultEntry);
        }
        if (!extensions_.isMutable()) {
          extensions_ = extensions_.copy();
        }
        return extensions_;
      }

      public int getExtensionsCount() {
        return internalGetExtensions().getMap().size();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      @java.lang.Override
      public boolean containsExtensions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetExtensions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getExtensionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensions() {
        return getExtensionsMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, com.google.protobuf.ByteString> getExtensionsMap() {
        return internalGetExtensions().getMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public com.google.protobuf.ByteString getExtensionsOrDefault(
          java.lang.String key,
          com.google.protobuf.ByteString defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetExtensions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      @java.lang.Override

      public com.google.protobuf.ByteString getExtensionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, com.google.protobuf.ByteString> map =
            internalGetExtensions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearExtensions() {
        internalGetMutableExtensions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      public Builder removeExtensions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableExtensions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, com.google.protobuf.ByteString>
      getMutableExtensions() {
        return internalGetMutableExtensions().getMutableMap();
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */
      public Builder putExtensions(
          java.lang.String key,
          com.google.protobuf.ByteString value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableExtensions().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <code>map&lt;string, bytes&gt; extensions = 99;</code>
       */

      public Builder putAllExtensions(
          java.util.Map<java.lang.String, com.google.protobuf.ByteString> values) {
        internalGetMutableExtensions().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.GrantedRegion)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.GrantedRegion)
    private static final greptime.v1.meta.HeartbeatOuterClass.GrantedRegion DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.GrantedRegion();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GrantedRegion>
        PARSER = new com.google.protobuf.AbstractParser<GrantedRegion>() {
      @java.lang.Override
      public GrantedRegion parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GrantedRegion(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GrantedRegion> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GrantedRegion> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RegionLeaseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.RegionLease)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> 
        getRegionsList();
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getRegions(int index);
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    int getRegionsCount();
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder> 
        getRegionsOrBuilderList();
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder getRegionsOrBuilder(
        int index);

    /**
     * <code>uint64 duration_since_epoch = 2;</code>
     * @return The durationSinceEpoch.
     */
    long getDurationSinceEpoch();

    /**
     * <code>uint64 lease_seconds = 3;</code>
     * @return The leaseSeconds.
     */
    long getLeaseSeconds();

    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @return A list containing the closeableRegionIds.
     */
    java.util.List<java.lang.Long> getCloseableRegionIdsList();
    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @return The count of closeableRegionIds.
     */
    int getCloseableRegionIdsCount();
    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @param index The index of the element to return.
     * @return The closeableRegionIds at the given index.
     */
    long getCloseableRegionIds(int index);
  }
  /**
   * Protobuf type {@code greptime.v1.meta.RegionLease}
   */
  public static final class RegionLease extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.RegionLease)
      RegionLeaseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RegionLease.newBuilder() to construct.
    private RegionLease(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RegionLease() {
      regions_ = java.util.Collections.emptyList();
      closeableRegionIds_ = emptyLongList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RegionLease();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RegionLease(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                regions_ = new java.util.ArrayList<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion>();
                mutable_bitField0_ |= 0x00000001;
              }
              regions_.add(
                  input.readMessage(greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.parser(), extensionRegistry));
              break;
            }
            case 16: {

              durationSinceEpoch_ = input.readUInt64();
              break;
            }
            case 24: {

              leaseSeconds_ = input.readUInt64();
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                closeableRegionIds_ = newLongList();
                mutable_bitField0_ |= 0x00000002;
              }
              closeableRegionIds_.addLong(input.readUInt64());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                closeableRegionIds_ = newLongList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                closeableRegionIds_.addLong(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          regions_ = java.util.Collections.unmodifiableList(regions_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          closeableRegionIds_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionLease_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionLease_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.RegionLease.class, greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder.class);
    }

    public static final int REGIONS_FIELD_NUMBER = 1;
    private java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> regions_;
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> getRegionsList() {
      return regions_;
    }
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder> 
        getRegionsOrBuilderList() {
      return regions_;
    }
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    @java.lang.Override
    public int getRegionsCount() {
      return regions_.size();
    }
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getRegions(int index) {
      return regions_.get(index);
    }
    /**
     * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder getRegionsOrBuilder(
        int index) {
      return regions_.get(index);
    }

    public static final int DURATION_SINCE_EPOCH_FIELD_NUMBER = 2;
    private long durationSinceEpoch_;
    /**
     * <code>uint64 duration_since_epoch = 2;</code>
     * @return The durationSinceEpoch.
     */
    @java.lang.Override
    public long getDurationSinceEpoch() {
      return durationSinceEpoch_;
    }

    public static final int LEASE_SECONDS_FIELD_NUMBER = 3;
    private long leaseSeconds_;
    /**
     * <code>uint64 lease_seconds = 3;</code>
     * @return The leaseSeconds.
     */
    @java.lang.Override
    public long getLeaseSeconds() {
      return leaseSeconds_;
    }

    public static final int CLOSEABLE_REGION_IDS_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.LongList closeableRegionIds_;
    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @return A list containing the closeableRegionIds.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getCloseableRegionIdsList() {
      return closeableRegionIds_;
    }
    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @return The count of closeableRegionIds.
     */
    public int getCloseableRegionIdsCount() {
      return closeableRegionIds_.size();
    }
    /**
     * <code>repeated uint64 closeable_region_ids = 4;</code>
     * @param index The index of the element to return.
     * @return The closeableRegionIds at the given index.
     */
    public long getCloseableRegionIds(int index) {
      return closeableRegionIds_.getLong(index);
    }
    private int closeableRegionIdsMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < regions_.size(); i++) {
        output.writeMessage(1, regions_.get(i));
      }
      if (durationSinceEpoch_ != 0L) {
        output.writeUInt64(2, durationSinceEpoch_);
      }
      if (leaseSeconds_ != 0L) {
        output.writeUInt64(3, leaseSeconds_);
      }
      if (getCloseableRegionIdsList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(closeableRegionIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < closeableRegionIds_.size(); i++) {
        output.writeUInt64NoTag(closeableRegionIds_.getLong(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < regions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, regions_.get(i));
      }
      if (durationSinceEpoch_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, durationSinceEpoch_);
      }
      if (leaseSeconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, leaseSeconds_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < closeableRegionIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(closeableRegionIds_.getLong(i));
        }
        size += dataSize;
        if (!getCloseableRegionIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        closeableRegionIdsMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.RegionLease)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.RegionLease other = (greptime.v1.meta.HeartbeatOuterClass.RegionLease) obj;

      if (!getRegionsList()
          .equals(other.getRegionsList())) return false;
      if (getDurationSinceEpoch()
          != other.getDurationSinceEpoch()) return false;
      if (getLeaseSeconds()
          != other.getLeaseSeconds()) return false;
      if (!getCloseableRegionIdsList()
          .equals(other.getCloseableRegionIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRegionsCount() > 0) {
        hash = (37 * hash) + REGIONS_FIELD_NUMBER;
        hash = (53 * hash) + getRegionsList().hashCode();
      }
      hash = (37 * hash) + DURATION_SINCE_EPOCH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDurationSinceEpoch());
      hash = (37 * hash) + LEASE_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLeaseSeconds());
      if (getCloseableRegionIdsCount() > 0) {
        hash = (37 * hash) + CLOSEABLE_REGION_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getCloseableRegionIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.RegionLease prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.RegionLease}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.RegionLease)
        greptime.v1.meta.HeartbeatOuterClass.RegionLeaseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionLease_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionLease_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.RegionLease.class, greptime.v1.meta.HeartbeatOuterClass.RegionLease.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.RegionLease.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRegionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (regionsBuilder_ == null) {
          regions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          regionsBuilder_.clear();
        }
        durationSinceEpoch_ = 0L;

        leaseSeconds_ = 0L;

        closeableRegionIds_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_RegionLease_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionLease getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.RegionLease.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionLease build() {
        greptime.v1.meta.HeartbeatOuterClass.RegionLease result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.RegionLease buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.RegionLease result = new greptime.v1.meta.HeartbeatOuterClass.RegionLease(this);
        int from_bitField0_ = bitField0_;
        if (regionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            regions_ = java.util.Collections.unmodifiableList(regions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.regions_ = regions_;
        } else {
          result.regions_ = regionsBuilder_.build();
        }
        result.durationSinceEpoch_ = durationSinceEpoch_;
        result.leaseSeconds_ = leaseSeconds_;
        if (((bitField0_ & 0x00000002) != 0)) {
          closeableRegionIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.closeableRegionIds_ = closeableRegionIds_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.RegionLease) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.RegionLease)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.RegionLease other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.RegionLease.getDefaultInstance()) return this;
        if (regionsBuilder_ == null) {
          if (!other.regions_.isEmpty()) {
            if (regions_.isEmpty()) {
              regions_ = other.regions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRegionsIsMutable();
              regions_.addAll(other.regions_);
            }
            onChanged();
          }
        } else {
          if (!other.regions_.isEmpty()) {
            if (regionsBuilder_.isEmpty()) {
              regionsBuilder_.dispose();
              regionsBuilder_ = null;
              regions_ = other.regions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              regionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRegionsFieldBuilder() : null;
            } else {
              regionsBuilder_.addAllMessages(other.regions_);
            }
          }
        }
        if (other.getDurationSinceEpoch() != 0L) {
          setDurationSinceEpoch(other.getDurationSinceEpoch());
        }
        if (other.getLeaseSeconds() != 0L) {
          setLeaseSeconds(other.getLeaseSeconds());
        }
        if (!other.closeableRegionIds_.isEmpty()) {
          if (closeableRegionIds_.isEmpty()) {
            closeableRegionIds_ = other.closeableRegionIds_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureCloseableRegionIdsIsMutable();
            closeableRegionIds_.addAll(other.closeableRegionIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.RegionLease parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.RegionLease) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> regions_ =
        java.util.Collections.emptyList();
      private void ensureRegionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          regions_ = new java.util.ArrayList<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion>(regions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.GrantedRegion, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder, greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder> regionsBuilder_;

      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> getRegionsList() {
        if (regionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(regions_);
        } else {
          return regionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public int getRegionsCount() {
        if (regionsBuilder_ == null) {
          return regions_.size();
        } else {
          return regionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion getRegions(int index) {
        if (regionsBuilder_ == null) {
          return regions_.get(index);
        } else {
          return regionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder setRegions(
          int index, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion value) {
        if (regionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionsIsMutable();
          regions_.set(index, value);
          onChanged();
        } else {
          regionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder setRegions(
          int index, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder builderForValue) {
        if (regionsBuilder_ == null) {
          ensureRegionsIsMutable();
          regions_.set(index, builderForValue.build());
          onChanged();
        } else {
          regionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder addRegions(greptime.v1.meta.HeartbeatOuterClass.GrantedRegion value) {
        if (regionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionsIsMutable();
          regions_.add(value);
          onChanged();
        } else {
          regionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder addRegions(
          int index, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion value) {
        if (regionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRegionsIsMutable();
          regions_.add(index, value);
          onChanged();
        } else {
          regionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder addRegions(
          greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder builderForValue) {
        if (regionsBuilder_ == null) {
          ensureRegionsIsMutable();
          regions_.add(builderForValue.build());
          onChanged();
        } else {
          regionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder addRegions(
          int index, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder builderForValue) {
        if (regionsBuilder_ == null) {
          ensureRegionsIsMutable();
          regions_.add(index, builderForValue.build());
          onChanged();
        } else {
          regionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder addAllRegions(
          java.lang.Iterable<? extends greptime.v1.meta.HeartbeatOuterClass.GrantedRegion> values) {
        if (regionsBuilder_ == null) {
          ensureRegionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, regions_);
          onChanged();
        } else {
          regionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder clearRegions() {
        if (regionsBuilder_ == null) {
          regions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          regionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public Builder removeRegions(int index) {
        if (regionsBuilder_ == null) {
          ensureRegionsIsMutable();
          regions_.remove(index);
          onChanged();
        } else {
          regionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder getRegionsBuilder(
          int index) {
        return getRegionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder getRegionsOrBuilder(
          int index) {
        if (regionsBuilder_ == null) {
          return regions_.get(index);  } else {
          return regionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public java.util.List<? extends greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder> 
           getRegionsOrBuilderList() {
        if (regionsBuilder_ != null) {
          return regionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(regions_);
        }
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder addRegionsBuilder() {
        return getRegionsFieldBuilder().addBuilder(
            greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.getDefaultInstance());
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder addRegionsBuilder(
          int index) {
        return getRegionsFieldBuilder().addBuilder(
            index, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.getDefaultInstance());
      }
      /**
       * <code>repeated .greptime.v1.meta.GrantedRegion regions = 1;</code>
       */
      public java.util.List<greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder> 
           getRegionsBuilderList() {
        return getRegionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          greptime.v1.meta.HeartbeatOuterClass.GrantedRegion, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder, greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder> 
          getRegionsFieldBuilder() {
        if (regionsBuilder_ == null) {
          regionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              greptime.v1.meta.HeartbeatOuterClass.GrantedRegion, greptime.v1.meta.HeartbeatOuterClass.GrantedRegion.Builder, greptime.v1.meta.HeartbeatOuterClass.GrantedRegionOrBuilder>(
                  regions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          regions_ = null;
        }
        return regionsBuilder_;
      }

      private long durationSinceEpoch_ ;
      /**
       * <code>uint64 duration_since_epoch = 2;</code>
       * @return The durationSinceEpoch.
       */
      @java.lang.Override
      public long getDurationSinceEpoch() {
        return durationSinceEpoch_;
      }
      /**
       * <code>uint64 duration_since_epoch = 2;</code>
       * @param value The durationSinceEpoch to set.
       * @return This builder for chaining.
       */
      public Builder setDurationSinceEpoch(long value) {
        
        durationSinceEpoch_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 duration_since_epoch = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDurationSinceEpoch() {
        
        durationSinceEpoch_ = 0L;
        onChanged();
        return this;
      }

      private long leaseSeconds_ ;
      /**
       * <code>uint64 lease_seconds = 3;</code>
       * @return The leaseSeconds.
       */
      @java.lang.Override
      public long getLeaseSeconds() {
        return leaseSeconds_;
      }
      /**
       * <code>uint64 lease_seconds = 3;</code>
       * @param value The leaseSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setLeaseSeconds(long value) {
        
        leaseSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 lease_seconds = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLeaseSeconds() {
        
        leaseSeconds_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.LongList closeableRegionIds_ = emptyLongList();
      private void ensureCloseableRegionIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          closeableRegionIds_ = mutableCopy(closeableRegionIds_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @return A list containing the closeableRegionIds.
       */
      public java.util.List<java.lang.Long>
          getCloseableRegionIdsList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(closeableRegionIds_) : closeableRegionIds_;
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @return The count of closeableRegionIds.
       */
      public int getCloseableRegionIdsCount() {
        return closeableRegionIds_.size();
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @param index The index of the element to return.
       * @return The closeableRegionIds at the given index.
       */
      public long getCloseableRegionIds(int index) {
        return closeableRegionIds_.getLong(index);
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @param index The index to set the value at.
       * @param value The closeableRegionIds to set.
       * @return This builder for chaining.
       */
      public Builder setCloseableRegionIds(
          int index, long value) {
        ensureCloseableRegionIdsIsMutable();
        closeableRegionIds_.setLong(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @param value The closeableRegionIds to add.
       * @return This builder for chaining.
       */
      public Builder addCloseableRegionIds(long value) {
        ensureCloseableRegionIdsIsMutable();
        closeableRegionIds_.addLong(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @param values The closeableRegionIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllCloseableRegionIds(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureCloseableRegionIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, closeableRegionIds_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint64 closeable_region_ids = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCloseableRegionIds() {
        closeableRegionIds_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.RegionLease)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.RegionLease)
    private static final greptime.v1.meta.HeartbeatOuterClass.RegionLease DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.RegionLease();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.RegionLease getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RegionLease>
        PARSER = new com.google.protobuf.AbstractParser<RegionLease>() {
      @java.lang.Override
      public RegionLease parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RegionLease(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RegionLease> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RegionLease> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.RegionLease getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AskLeaderRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.AskLeaderRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return The header.
     */
    greptime.v1.meta.Common.RequestHeader getHeader();
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     */
    greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.AskLeaderRequest}
   */
  public static final class AskLeaderRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.AskLeaderRequest)
      AskLeaderRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AskLeaderRequest.newBuilder() to construct.
    private AskLeaderRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AskLeaderRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AskLeaderRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AskLeaderRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              greptime.v1.meta.Common.RequestHeader.Builder subBuilder = null;
              if (header_ != null) {
                subBuilder = header_.toBuilder();
              }
              header_ = input.readMessage(greptime.v1.meta.Common.RequestHeader.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(header_);
                header_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.class, greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.Builder.class);
    }

    public static final int HEADER_FIELD_NUMBER = 1;
    private greptime.v1.meta.Common.RequestHeader header_;
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return header_ != null;
    }
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     * @return The header.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.RequestHeader getHeader() {
      return header_ == null ? greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
    }
    /**
     * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder() {
      return getHeader();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (header_ != null) {
        output.writeMessage(1, getHeader());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (header_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getHeader());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest other = (greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest) obj;

      if (hasHeader() != other.hasHeader()) return false;
      if (hasHeader()) {
        if (!getHeader()
            .equals(other.getHeader())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHeader()) {
        hash = (37 * hash) + HEADER_FIELD_NUMBER;
        hash = (53 * hash) + getHeader().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.AskLeaderRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.AskLeaderRequest)
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.class, greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (headerBuilder_ == null) {
          header_ = null;
        } else {
          header_ = null;
          headerBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderRequest_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest build() {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest result = new greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest(this);
        if (headerBuilder_ == null) {
          result.header_ = header_;
        } else {
          result.header_ = headerBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest.getDefaultInstance()) return this;
        if (other.hasHeader()) {
          mergeHeader(other.getHeader());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private greptime.v1.meta.Common.RequestHeader header_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder> headerBuilder_;
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       * @return Whether the header field is set.
       */
      public boolean hasHeader() {
        return headerBuilder_ != null || header_ != null;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       * @return The header.
       */
      public greptime.v1.meta.Common.RequestHeader getHeader() {
        if (headerBuilder_ == null) {
          return header_ == null ? greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
        } else {
          return headerBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder setHeader(greptime.v1.meta.Common.RequestHeader value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          header_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder setHeader(
          greptime.v1.meta.Common.RequestHeader.Builder builderForValue) {
        if (headerBuilder_ == null) {
          header_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder mergeHeader(greptime.v1.meta.Common.RequestHeader value) {
        if (headerBuilder_ == null) {
          if (header_ != null) {
            header_ =
              greptime.v1.meta.Common.RequestHeader.newBuilder(header_).mergeFrom(value).buildPartial();
          } else {
            header_ = value;
          }
          onChanged();
        } else {
          headerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          header_ = null;
          onChanged();
        } else {
          header_ = null;
          headerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.RequestHeader.Builder getHeaderBuilder() {
        
        onChanged();
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.RequestHeaderOrBuilder getHeaderOrBuilder() {
        if (headerBuilder_ != null) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          return header_ == null ?
              greptime.v1.meta.Common.RequestHeader.getDefaultInstance() : header_;
        }
      }
      /**
       * <code>.greptime.v1.meta.RequestHeader header = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.RequestHeader, greptime.v1.meta.Common.RequestHeader.Builder, greptime.v1.meta.Common.RequestHeaderOrBuilder>(
                  getHeader(),
                  getParentForChildren(),
                  isClean());
          header_ = null;
        }
        return headerBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.AskLeaderRequest)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.AskLeaderRequest)
    private static final greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AskLeaderRequest>
        PARSER = new com.google.protobuf.AbstractParser<AskLeaderRequest>() {
      @java.lang.Override
      public AskLeaderRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AskLeaderRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AskLeaderRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AskLeaderRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.AskLeaderRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AskLeaderResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.AskLeaderResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return The header.
     */
    greptime.v1.meta.Common.ResponseHeader getHeader();
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     */
    greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder();

    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     * @return Whether the leader field is set.
     */
    boolean hasLeader();
    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     * @return The leader.
     */
    greptime.v1.meta.Common.Peer getLeader();
    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     */
    greptime.v1.meta.Common.PeerOrBuilder getLeaderOrBuilder();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.AskLeaderResponse}
   */
  public static final class AskLeaderResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.AskLeaderResponse)
      AskLeaderResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AskLeaderResponse.newBuilder() to construct.
    private AskLeaderResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AskLeaderResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AskLeaderResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AskLeaderResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              greptime.v1.meta.Common.ResponseHeader.Builder subBuilder = null;
              if (header_ != null) {
                subBuilder = header_.toBuilder();
              }
              header_ = input.readMessage(greptime.v1.meta.Common.ResponseHeader.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(header_);
                header_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              greptime.v1.meta.Common.Peer.Builder subBuilder = null;
              if (leader_ != null) {
                subBuilder = leader_.toBuilder();
              }
              leader_ = input.readMessage(greptime.v1.meta.Common.Peer.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(leader_);
                leader_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.class, greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.Builder.class);
    }

    public static final int HEADER_FIELD_NUMBER = 1;
    private greptime.v1.meta.Common.ResponseHeader header_;
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return header_ != null;
    }
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     * @return The header.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.ResponseHeader getHeader() {
      return header_ == null ? greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
    }
    /**
     * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder() {
      return getHeader();
    }

    public static final int LEADER_FIELD_NUMBER = 2;
    private greptime.v1.meta.Common.Peer leader_;
    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     * @return Whether the leader field is set.
     */
    @java.lang.Override
    public boolean hasLeader() {
      return leader_ != null;
    }
    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     * @return The leader.
     */
    @java.lang.Override
    public greptime.v1.meta.Common.Peer getLeader() {
      return leader_ == null ? greptime.v1.meta.Common.Peer.getDefaultInstance() : leader_;
    }
    /**
     * <code>.greptime.v1.meta.Peer leader = 2;</code>
     */
    @java.lang.Override
    public greptime.v1.meta.Common.PeerOrBuilder getLeaderOrBuilder() {
      return getLeader();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (header_ != null) {
        output.writeMessage(1, getHeader());
      }
      if (leader_ != null) {
        output.writeMessage(2, getLeader());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (header_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getHeader());
      }
      if (leader_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getLeader());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse other = (greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse) obj;

      if (hasHeader() != other.hasHeader()) return false;
      if (hasHeader()) {
        if (!getHeader()
            .equals(other.getHeader())) return false;
      }
      if (hasLeader() != other.hasLeader()) return false;
      if (hasLeader()) {
        if (!getLeader()
            .equals(other.getLeader())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHeader()) {
        hash = (37 * hash) + HEADER_FIELD_NUMBER;
        hash = (53 * hash) + getHeader().hashCode();
      }
      if (hasLeader()) {
        hash = (37 * hash) + LEADER_FIELD_NUMBER;
        hash = (53 * hash) + getLeader().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.AskLeaderResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.AskLeaderResponse)
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.class, greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (headerBuilder_ == null) {
          header_ = null;
        } else {
          header_ = null;
          headerBuilder_ = null;
        }
        if (leaderBuilder_ == null) {
          leader_ = null;
        } else {
          leader_ = null;
          leaderBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_AskLeaderResponse_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse build() {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse result = new greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse(this);
        if (headerBuilder_ == null) {
          result.header_ = header_;
        } else {
          result.header_ = headerBuilder_.build();
        }
        if (leaderBuilder_ == null) {
          result.leader_ = leader_;
        } else {
          result.leader_ = leaderBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse.getDefaultInstance()) return this;
        if (other.hasHeader()) {
          mergeHeader(other.getHeader());
        }
        if (other.hasLeader()) {
          mergeLeader(other.getLeader());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private greptime.v1.meta.Common.ResponseHeader header_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder> headerBuilder_;
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       * @return Whether the header field is set.
       */
      public boolean hasHeader() {
        return headerBuilder_ != null || header_ != null;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       * @return The header.
       */
      public greptime.v1.meta.Common.ResponseHeader getHeader() {
        if (headerBuilder_ == null) {
          return header_ == null ? greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
        } else {
          return headerBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder setHeader(greptime.v1.meta.Common.ResponseHeader value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          header_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder setHeader(
          greptime.v1.meta.Common.ResponseHeader.Builder builderForValue) {
        if (headerBuilder_ == null) {
          header_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder mergeHeader(greptime.v1.meta.Common.ResponseHeader value) {
        if (headerBuilder_ == null) {
          if (header_ != null) {
            header_ =
              greptime.v1.meta.Common.ResponseHeader.newBuilder(header_).mergeFrom(value).buildPartial();
          } else {
            header_ = value;
          }
          onChanged();
        } else {
          headerBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          header_ = null;
          onChanged();
        } else {
          header_ = null;
          headerBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.ResponseHeader.Builder getHeaderBuilder() {
        
        onChanged();
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      public greptime.v1.meta.Common.ResponseHeaderOrBuilder getHeaderOrBuilder() {
        if (headerBuilder_ != null) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          return header_ == null ?
              greptime.v1.meta.Common.ResponseHeader.getDefaultInstance() : header_;
        }
      }
      /**
       * <code>.greptime.v1.meta.ResponseHeader header = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.ResponseHeader, greptime.v1.meta.Common.ResponseHeader.Builder, greptime.v1.meta.Common.ResponseHeaderOrBuilder>(
                  getHeader(),
                  getParentForChildren(),
                  isClean());
          header_ = null;
        }
        return headerBuilder_;
      }

      private greptime.v1.meta.Common.Peer leader_;
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder> leaderBuilder_;
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       * @return Whether the leader field is set.
       */
      public boolean hasLeader() {
        return leaderBuilder_ != null || leader_ != null;
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       * @return The leader.
       */
      public greptime.v1.meta.Common.Peer getLeader() {
        if (leaderBuilder_ == null) {
          return leader_ == null ? greptime.v1.meta.Common.Peer.getDefaultInstance() : leader_;
        } else {
          return leaderBuilder_.getMessage();
        }
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public Builder setLeader(greptime.v1.meta.Common.Peer value) {
        if (leaderBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          leader_ = value;
          onChanged();
        } else {
          leaderBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public Builder setLeader(
          greptime.v1.meta.Common.Peer.Builder builderForValue) {
        if (leaderBuilder_ == null) {
          leader_ = builderForValue.build();
          onChanged();
        } else {
          leaderBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public Builder mergeLeader(greptime.v1.meta.Common.Peer value) {
        if (leaderBuilder_ == null) {
          if (leader_ != null) {
            leader_ =
              greptime.v1.meta.Common.Peer.newBuilder(leader_).mergeFrom(value).buildPartial();
          } else {
            leader_ = value;
          }
          onChanged();
        } else {
          leaderBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public Builder clearLeader() {
        if (leaderBuilder_ == null) {
          leader_ = null;
          onChanged();
        } else {
          leader_ = null;
          leaderBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public greptime.v1.meta.Common.Peer.Builder getLeaderBuilder() {
        
        onChanged();
        return getLeaderFieldBuilder().getBuilder();
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      public greptime.v1.meta.Common.PeerOrBuilder getLeaderOrBuilder() {
        if (leaderBuilder_ != null) {
          return leaderBuilder_.getMessageOrBuilder();
        } else {
          return leader_ == null ?
              greptime.v1.meta.Common.Peer.getDefaultInstance() : leader_;
        }
      }
      /**
       * <code>.greptime.v1.meta.Peer leader = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder> 
          getLeaderFieldBuilder() {
        if (leaderBuilder_ == null) {
          leaderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              greptime.v1.meta.Common.Peer, greptime.v1.meta.Common.Peer.Builder, greptime.v1.meta.Common.PeerOrBuilder>(
                  getLeader(),
                  getParentForChildren(),
                  isClean());
          leader_ = null;
        }
        return leaderBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.AskLeaderResponse)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.AskLeaderResponse)
    private static final greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AskLeaderResponse>
        PARSER = new com.google.protobuf.AbstractParser<AskLeaderResponse>() {
      @java.lang.Override
      public AskLeaderResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AskLeaderResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AskLeaderResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AskLeaderResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.AskLeaderResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MailboxMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.meta.MailboxMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The id is used to associate request and response.
     * </pre>
     *
     * <code>uint64 id = 1;</code>
     * @return The id.
     */
    long getId();

    /**
     * <pre>
     * The following information plays a bigger role in making messages traceable
     * and facilitating debugging.
     * </pre>
     *
     * <code>string subject = 2;</code>
     * @return The subject.
     */
    java.lang.String getSubject();
    /**
     * <pre>
     * The following information plays a bigger role in making messages traceable
     * and facilitating debugging.
     * </pre>
     *
     * <code>string subject = 2;</code>
     * @return The bytes for subject.
     */
    com.google.protobuf.ByteString
        getSubjectBytes();

    /**
     * <code>string from = 3;</code>
     * @return The from.
     */
    java.lang.String getFrom();
    /**
     * <code>string from = 3;</code>
     * @return The bytes for from.
     */
    com.google.protobuf.ByteString
        getFromBytes();

    /**
     * <code>string to = 4;</code>
     * @return The to.
     */
    java.lang.String getTo();
    /**
     * <code>string to = 4;</code>
     * @return The bytes for to.
     */
    com.google.protobuf.ByteString
        getToBytes();

    /**
     * <pre>
     * The unix timestamp in milliseconds.
     * </pre>
     *
     * <code>int64 timestamp_millis = 5;</code>
     * @return The timestampMillis.
     */
    long getTimestampMillis();

    /**
     * <code>string json = 6;</code>
     * @return Whether the json field is set.
     */
    boolean hasJson();
    /**
     * <code>string json = 6;</code>
     * @return The json.
     */
    java.lang.String getJson();
    /**
     * <code>string json = 6;</code>
     * @return The bytes for json.
     */
    com.google.protobuf.ByteString
        getJsonBytes();

    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.PayloadCase getPayloadCase();
  }
  /**
   * Protobuf type {@code greptime.v1.meta.MailboxMessage}
   */
  public static final class MailboxMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.meta.MailboxMessage)
      MailboxMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MailboxMessage.newBuilder() to construct.
    private MailboxMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MailboxMessage() {
      subject_ = "";
      from_ = "";
      to_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MailboxMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MailboxMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              id_ = input.readUInt64();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              subject_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              from_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              to_ = s;
              break;
            }
            case 40: {

              timestampMillis_ = input.readInt64();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              payloadCase_ = 6;
              payload_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_MailboxMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_MailboxMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.class, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder.class);
    }

    private int payloadCase_ = 0;
    private java.lang.Object payload_;
    public enum PayloadCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      JSON(6),
      PAYLOAD_NOT_SET(0);
      private final int value;
      private PayloadCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PayloadCase valueOf(int value) {
        return forNumber(value);
      }

      public static PayloadCase forNumber(int value) {
        switch (value) {
          case 6: return JSON;
          case 0: return PAYLOAD_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public PayloadCase
    getPayloadCase() {
      return PayloadCase.forNumber(
          payloadCase_);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private long id_;
    /**
     * <pre>
     * The id is used to associate request and response.
     * </pre>
     *
     * <code>uint64 id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int SUBJECT_FIELD_NUMBER = 2;
    private volatile java.lang.Object subject_;
    /**
     * <pre>
     * The following information plays a bigger role in making messages traceable
     * and facilitating debugging.
     * </pre>
     *
     * <code>string subject = 2;</code>
     * @return The subject.
     */
    @java.lang.Override
    public java.lang.String getSubject() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        subject_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The following information plays a bigger role in making messages traceable
     * and facilitating debugging.
     * </pre>
     *
     * <code>string subject = 2;</code>
     * @return The bytes for subject.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSubjectBytes() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subject_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FROM_FIELD_NUMBER = 3;
    private volatile java.lang.Object from_;
    /**
     * <code>string from = 3;</code>
     * @return The from.
     */
    @java.lang.Override
    public java.lang.String getFrom() {
      java.lang.Object ref = from_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        from_ = s;
        return s;
      }
    }
    /**
     * <code>string from = 3;</code>
     * @return The bytes for from.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFromBytes() {
      java.lang.Object ref = from_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        from_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_FIELD_NUMBER = 4;
    private volatile java.lang.Object to_;
    /**
     * <code>string to = 4;</code>
     * @return The to.
     */
    @java.lang.Override
    public java.lang.String getTo() {
      java.lang.Object ref = to_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        to_ = s;
        return s;
      }
    }
    /**
     * <code>string to = 4;</code>
     * @return The bytes for to.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getToBytes() {
      java.lang.Object ref = to_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        to_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_MILLIS_FIELD_NUMBER = 5;
    private long timestampMillis_;
    /**
     * <pre>
     * The unix timestamp in milliseconds.
     * </pre>
     *
     * <code>int64 timestamp_millis = 5;</code>
     * @return The timestampMillis.
     */
    @java.lang.Override
    public long getTimestampMillis() {
      return timestampMillis_;
    }

    public static final int JSON_FIELD_NUMBER = 6;
    /**
     * <code>string json = 6;</code>
     * @return Whether the json field is set.
     */
    public boolean hasJson() {
      return payloadCase_ == 6;
    }
    /**
     * <code>string json = 6;</code>
     * @return The json.
     */
    public java.lang.String getJson() {
      java.lang.Object ref = "";
      if (payloadCase_ == 6) {
        ref = payload_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (payloadCase_ == 6) {
          payload_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string json = 6;</code>
     * @return The bytes for json.
     */
    public com.google.protobuf.ByteString
        getJsonBytes() {
      java.lang.Object ref = "";
      if (payloadCase_ == 6) {
        ref = payload_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (payloadCase_ == 6) {
          payload_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0L) {
        output.writeUInt64(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(subject_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, subject_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, from_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(to_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, to_);
      }
      if (timestampMillis_ != 0L) {
        output.writeInt64(5, timestampMillis_);
      }
      if (payloadCase_ == 6) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, payload_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(subject_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, subject_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(from_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, from_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(to_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, to_);
      }
      if (timestampMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestampMillis_);
      }
      if (payloadCase_ == 6) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, payload_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof greptime.v1.meta.HeartbeatOuterClass.MailboxMessage)) {
        return super.equals(obj);
      }
      greptime.v1.meta.HeartbeatOuterClass.MailboxMessage other = (greptime.v1.meta.HeartbeatOuterClass.MailboxMessage) obj;

      if (getId()
          != other.getId()) return false;
      if (!getSubject()
          .equals(other.getSubject())) return false;
      if (!getFrom()
          .equals(other.getFrom())) return false;
      if (!getTo()
          .equals(other.getTo())) return false;
      if (getTimestampMillis()
          != other.getTimestampMillis()) return false;
      if (!getPayloadCase().equals(other.getPayloadCase())) return false;
      switch (payloadCase_) {
        case 6:
          if (!getJson()
              .equals(other.getJson())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
      hash = (37 * hash) + SUBJECT_FIELD_NUMBER;
      hash = (53 * hash) + getSubject().hashCode();
      hash = (37 * hash) + FROM_FIELD_NUMBER;
      hash = (53 * hash) + getFrom().hashCode();
      hash = (37 * hash) + TO_FIELD_NUMBER;
      hash = (53 * hash) + getTo().hashCode();
      hash = (37 * hash) + TIMESTAMP_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestampMillis());
      switch (payloadCase_) {
        case 6:
          hash = (37 * hash) + JSON_FIELD_NUMBER;
          hash = (53 * hash) + getJson().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code greptime.v1.meta.MailboxMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.meta.MailboxMessage)
        greptime.v1.meta.HeartbeatOuterClass.MailboxMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_MailboxMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_MailboxMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.class, greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.Builder.class);
      }

      // Construct using greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = 0L;

        subject_ = "";

        from_ = "";

        to_ = "";

        timestampMillis_ = 0L;

        payloadCase_ = 0;
        payload_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return greptime.v1.meta.HeartbeatOuterClass.internal_static_greptime_v1_meta_MailboxMessage_descriptor;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getDefaultInstanceForType() {
        return greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance();
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage build() {
        greptime.v1.meta.HeartbeatOuterClass.MailboxMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage buildPartial() {
        greptime.v1.meta.HeartbeatOuterClass.MailboxMessage result = new greptime.v1.meta.HeartbeatOuterClass.MailboxMessage(this);
        result.id_ = id_;
        result.subject_ = subject_;
        result.from_ = from_;
        result.to_ = to_;
        result.timestampMillis_ = timestampMillis_;
        if (payloadCase_ == 6) {
          result.payload_ = payload_;
        }
        result.payloadCase_ = payloadCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof greptime.v1.meta.HeartbeatOuterClass.MailboxMessage) {
          return mergeFrom((greptime.v1.meta.HeartbeatOuterClass.MailboxMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(greptime.v1.meta.HeartbeatOuterClass.MailboxMessage other) {
        if (other == greptime.v1.meta.HeartbeatOuterClass.MailboxMessage.getDefaultInstance()) return this;
        if (other.getId() != 0L) {
          setId(other.getId());
        }
        if (!other.getSubject().isEmpty()) {
          subject_ = other.subject_;
          onChanged();
        }
        if (!other.getFrom().isEmpty()) {
          from_ = other.from_;
          onChanged();
        }
        if (!other.getTo().isEmpty()) {
          to_ = other.to_;
          onChanged();
        }
        if (other.getTimestampMillis() != 0L) {
          setTimestampMillis(other.getTimestampMillis());
        }
        switch (other.getPayloadCase()) {
          case JSON: {
            payloadCase_ = 6;
            payload_ = other.payload_;
            onChanged();
            break;
          }
          case PAYLOAD_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        greptime.v1.meta.HeartbeatOuterClass.MailboxMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (greptime.v1.meta.HeartbeatOuterClass.MailboxMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int payloadCase_ = 0;
      private java.lang.Object payload_;
      public PayloadCase
          getPayloadCase() {
        return PayloadCase.forNumber(
            payloadCase_);
      }

      public Builder clearPayload() {
        payloadCase_ = 0;
        payload_ = null;
        onChanged();
        return this;
      }


      private long id_ ;
      /**
       * <pre>
       * The id is used to associate request and response.
       * </pre>
       *
       * <code>uint64 id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <pre>
       * The id is used to associate request and response.
       * </pre>
       *
       * <code>uint64 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The id is used to associate request and response.
       * </pre>
       *
       * <code>uint64 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object subject_ = "";
      /**
       * <pre>
       * The following information plays a bigger role in making messages traceable
       * and facilitating debugging.
       * </pre>
       *
       * <code>string subject = 2;</code>
       * @return The subject.
       */
      public java.lang.String getSubject() {
        java.lang.Object ref = subject_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          subject_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The following information plays a bigger role in making messages traceable
       * and facilitating debugging.
       * </pre>
       *
       * <code>string subject = 2;</code>
       * @return The bytes for subject.
       */
      public com.google.protobuf.ByteString
          getSubjectBytes() {
        java.lang.Object ref = subject_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subject_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The following information plays a bigger role in making messages traceable
       * and facilitating debugging.
       * </pre>
       *
       * <code>string subject = 2;</code>
       * @param value The subject to set.
       * @return This builder for chaining.
       */
      public Builder setSubject(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        subject_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The following information plays a bigger role in making messages traceable
       * and facilitating debugging.
       * </pre>
       *
       * <code>string subject = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSubject() {
        
        subject_ = getDefaultInstance().getSubject();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The following information plays a bigger role in making messages traceable
       * and facilitating debugging.
       * </pre>
       *
       * <code>string subject = 2;</code>
       * @param value The bytes for subject to set.
       * @return This builder for chaining.
       */
      public Builder setSubjectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        subject_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object from_ = "";
      /**
       * <code>string from = 3;</code>
       * @return The from.
       */
      public java.lang.String getFrom() {
        java.lang.Object ref = from_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          from_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string from = 3;</code>
       * @return The bytes for from.
       */
      public com.google.protobuf.ByteString
          getFromBytes() {
        java.lang.Object ref = from_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          from_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string from = 3;</code>
       * @param value The from to set.
       * @return This builder for chaining.
       */
      public Builder setFrom(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        from_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string from = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFrom() {
        
        from_ = getDefaultInstance().getFrom();
        onChanged();
        return this;
      }
      /**
       * <code>string from = 3;</code>
       * @param value The bytes for from to set.
       * @return This builder for chaining.
       */
      public Builder setFromBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        from_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object to_ = "";
      /**
       * <code>string to = 4;</code>
       * @return The to.
       */
      public java.lang.String getTo() {
        java.lang.Object ref = to_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          to_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string to = 4;</code>
       * @return The bytes for to.
       */
      public com.google.protobuf.ByteString
          getToBytes() {
        java.lang.Object ref = to_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          to_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string to = 4;</code>
       * @param value The to to set.
       * @return This builder for chaining.
       */
      public Builder setTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        to_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string to = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTo() {
        
        to_ = getDefaultInstance().getTo();
        onChanged();
        return this;
      }
      /**
       * <code>string to = 4;</code>
       * @param value The bytes for to to set.
       * @return This builder for chaining.
       */
      public Builder setToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        to_ = value;
        onChanged();
        return this;
      }

      private long timestampMillis_ ;
      /**
       * <pre>
       * The unix timestamp in milliseconds.
       * </pre>
       *
       * <code>int64 timestamp_millis = 5;</code>
       * @return The timestampMillis.
       */
      @java.lang.Override
      public long getTimestampMillis() {
        return timestampMillis_;
      }
      /**
       * <pre>
       * The unix timestamp in milliseconds.
       * </pre>
       *
       * <code>int64 timestamp_millis = 5;</code>
       * @param value The timestampMillis to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampMillis(long value) {
        
        timestampMillis_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The unix timestamp in milliseconds.
       * </pre>
       *
       * <code>int64 timestamp_millis = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampMillis() {
        
        timestampMillis_ = 0L;
        onChanged();
        return this;
      }

      /**
       * <code>string json = 6;</code>
       * @return Whether the json field is set.
       */
      @java.lang.Override
      public boolean hasJson() {
        return payloadCase_ == 6;
      }
      /**
       * <code>string json = 6;</code>
       * @return The json.
       */
      @java.lang.Override
      public java.lang.String getJson() {
        java.lang.Object ref = "";
        if (payloadCase_ == 6) {
          ref = payload_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (payloadCase_ == 6) {
            payload_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string json = 6;</code>
       * @return The bytes for json.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getJsonBytes() {
        java.lang.Object ref = "";
        if (payloadCase_ == 6) {
          ref = payload_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (payloadCase_ == 6) {
            payload_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string json = 6;</code>
       * @param value The json to set.
       * @return This builder for chaining.
       */
      public Builder setJson(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  payloadCase_ = 6;
        payload_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string json = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearJson() {
        if (payloadCase_ == 6) {
          payloadCase_ = 0;
          payload_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string json = 6;</code>
       * @param value The bytes for json to set.
       * @return This builder for chaining.
       */
      public Builder setJsonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        payloadCase_ = 6;
        payload_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:greptime.v1.meta.MailboxMessage)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.meta.MailboxMessage)
    private static final greptime.v1.meta.HeartbeatOuterClass.MailboxMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new greptime.v1.meta.HeartbeatOuterClass.MailboxMessage();
    }

    public static greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MailboxMessage>
        PARSER = new com.google.protobuf.AbstractParser<MailboxMessage>() {
      @java.lang.Override
      public MailboxMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new MailboxMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<MailboxMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MailboxMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public greptime.v1.meta.HeartbeatOuterClass.MailboxMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_HeartbeatRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_HeartbeatRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_DatanodeWorkloads_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_FrontendWorkloads_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_FrontendWorkloads_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_FlownodeWorkloads_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_NodeInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_NodeInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_RegionStat_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_RegionStat_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_FlowStat_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_FlowStat_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_HeartbeatResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_HeartbeatResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_GrantedRegion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_GrantedRegion_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_RegionLease_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_RegionLease_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_AskLeaderRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_AskLeaderRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_AskLeaderResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_AskLeaderResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_meta_MailboxMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_meta_MailboxMessage_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n greptime/v1/meta/heartbeat.proto\022\020grep" +
      "time.v1.meta\032\035greptime/v1/meta/common.pr" +
      "oto\"\331\004\n\020HeartbeatRequest\022/\n\006header\030\001 \001(\013" +
      "2\037.greptime.v1.meta.RequestHeader\022$\n\004pee" +
      "r\030\002 \001(\0132\026.greptime.v1.meta.Peer\0227\n\017repor" +
      "t_interval\030\003 \001(\0132\036.greptime.v1.meta.Time" +
      "Interval\0222\n\014region_stats\030\004 \003(\0132\034.greptim" +
      "e.v1.meta.RegionStat\0229\n\017mailbox_message\030" +
      "\005 \001(\0132 .greptime.v1.meta.MailboxMessage\022" +
      "\034\n\024duration_since_epoch\030\006 \001(\004\022\022\n\nnode_ep" +
      "och\030\007 \001(\004\022(\n\004info\030\010 \001(\0132\032.greptime.v1.me" +
      "ta.NodeInfo\022-\n\tflow_stat\030\t \001(\0132\032.greptim" +
      "e.v1.meta.FlowStat\0227\n\010datanode\030\n \001(\0132#.g" +
      "reptime.v1.meta.DatanodeWorkloadsH\000\0227\n\010f" +
      "rontend\030\013 \001(\0132#.greptime.v1.meta.Fronten" +
      "dWorkloadsH\000\0227\n\010flownode\030\014 \001(\0132#.greptim" +
      "e.v1.meta.FlownodeWorkloadsH\000B\020\n\016node_wo" +
      "rkloads\"\"\n\021DatanodeWorkloads\022\r\n\005types\030\001 " +
      "\003(\005\"\"\n\021FrontendWorkloads\022\r\n\005types\030\001 \003(\005\"" +
      "\"\n\021FlownodeWorkloads\022\r\n\005types\030\001 \003(\005\"T\n\010N" +
      "odeInfo\022\017\n\007version\030\001 \001(\t\022\022\n\ngit_commit\030\002" +
      " \001(\t\022\025\n\rstart_time_ms\030\003 \001(\004\022\014\n\004cpus\030\004 \001(" +
      "\r\"\207\002\n\nRegionStat\022\021\n\tregion_id\030\001 \001(\004\022\014\n\004r" +
      "cus\030\002 \001(\003\022\014\n\004wcus\030\003 \001(\003\022\031\n\021approximate_b" +
      "ytes\030\004 \001(\003\022\016\n\006engine\030\006 \001(\t\022*\n\004role\030\007 \001(\016" +
      "2\034.greptime.v1.meta.RegionRole\022@\n\nextens" +
      "ions\030c \003(\0132,.greptime.v1.meta.RegionStat" +
      ".ExtensionsEntry\0321\n\017ExtensionsEntry\022\013\n\003k" +
      "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\014:\0028\001\"\227\002\n\010FlowStat" +
      "\022D\n\016flow_stat_size\030\001 \003(\0132,.greptime.v1.m" +
      "eta.FlowStat.FlowStatSizeEntry\022T\n\027flow_l" +
      "ast_exec_time_map\030\002 \003(\01323.greptime.v1.me" +
      "ta.FlowStat.FlowLastExecTimeMapEntry\0323\n\021" +
      "FlowStatSizeEntry\022\013\n\003key\030\001 \001(\r\022\r\n\005value\030" +
      "\002 \001(\004:\0028\001\032:\n\030FlowLastExecTimeMapEntry\022\013\n" +
      "\003key\030\001 \001(\r\022\r\n\005value\030\002 \001(\003:\0028\001\"\265\001\n\021Heartb" +
      "eatResponse\0220\n\006header\030\001 \001(\0132 .greptime.v" +
      "1.meta.ResponseHeader\0229\n\017mailbox_message" +
      "\030\002 \001(\0132 .greptime.v1.meta.MailboxMessage" +
      "\0223\n\014region_lease\030\003 \001(\0132\035.greptime.v1.met" +
      "a.RegionLease\"\306\001\n\rGrantedRegion\022\021\n\tregio" +
      "n_id\030\001 \001(\004\022*\n\004role\030\002 \001(\0162\034.greptime.v1.m" +
      "eta.RegionRole\022C\n\nextensions\030c \003(\0132/.gre" +
      "ptime.v1.meta.GrantedRegion.ExtensionsEn" +
      "try\0321\n\017ExtensionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005v" +
      "alue\030\002 \001(\014:\0028\001\"\222\001\n\013RegionLease\0220\n\007region" +
      "s\030\001 \003(\0132\037.greptime.v1.meta.GrantedRegion" +
      "\022\034\n\024duration_since_epoch\030\002 \001(\004\022\025\n\rlease_" +
      "seconds\030\003 \001(\004\022\034\n\024closeable_region_ids\030\004 " +
      "\003(\004\"C\n\020AskLeaderRequest\022/\n\006header\030\001 \001(\0132" +
      "\037.greptime.v1.meta.RequestHeader\"m\n\021AskL" +
      "eaderResponse\0220\n\006header\030\001 \001(\0132 .greptime" +
      ".v1.meta.ResponseHeader\022&\n\006leader\030\002 \001(\0132" +
      "\026.greptime.v1.meta.Peer\"|\n\016MailboxMessag" +
      "e\022\n\n\002id\030\001 \001(\004\022\017\n\007subject\030\002 \001(\t\022\014\n\004from\030\003" +
      " \001(\t\022\n\n\002to\030\004 \001(\t\022\030\n\020timestamp_millis\030\005 \001" +
      "(\003\022\016\n\004json\030\006 \001(\tH\000B\t\n\007payload*=\n\nRegionR" +
      "ole\022\n\n\006Leader\020\000\022\014\n\010Follower\020\001\022\025\n\021Downgra" +
      "dingLeader\020\0022\277\001\n\tHeartbeat\022Z\n\tHeartbeat\022" +
      "\".greptime.v1.meta.HeartbeatRequest\032#.gr" +
      "eptime.v1.meta.HeartbeatResponse\"\000(\0010\001\022V" +
      "\n\tAskLeader\022\".greptime.v1.meta.AskLeader" +
      "Request\032#.greptime.v1.meta.AskLeaderResp" +
      "onse\"\000B<Z:github.com/GreptimeTeam/grepti" +
      "me-proto/go/greptime/v1/metab\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          greptime.v1.meta.Common.getDescriptor(),
        });
    internal_static_greptime_v1_meta_HeartbeatRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_greptime_v1_meta_HeartbeatRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_HeartbeatRequest_descriptor,
        new java.lang.String[] { "Header", "Peer", "ReportInterval", "RegionStats", "MailboxMessage", "DurationSinceEpoch", "NodeEpoch", "Info", "FlowStat", "Datanode", "Frontend", "Flownode", "NodeWorkloads", });
    internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_greptime_v1_meta_DatanodeWorkloads_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_DatanodeWorkloads_descriptor,
        new java.lang.String[] { "Types", });
    internal_static_greptime_v1_meta_FrontendWorkloads_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_greptime_v1_meta_FrontendWorkloads_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_FrontendWorkloads_descriptor,
        new java.lang.String[] { "Types", });
    internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_greptime_v1_meta_FlownodeWorkloads_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_FlownodeWorkloads_descriptor,
        new java.lang.String[] { "Types", });
    internal_static_greptime_v1_meta_NodeInfo_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_greptime_v1_meta_NodeInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_NodeInfo_descriptor,
        new java.lang.String[] { "Version", "GitCommit", "StartTimeMs", "Cpus", });
    internal_static_greptime_v1_meta_RegionStat_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_greptime_v1_meta_RegionStat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_RegionStat_descriptor,
        new java.lang.String[] { "RegionId", "Rcus", "Wcus", "ApproximateBytes", "Engine", "Role", "Extensions", });
    internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_descriptor =
      internal_static_greptime_v1_meta_RegionStat_descriptor.getNestedTypes().get(0);
    internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_RegionStat_ExtensionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_greptime_v1_meta_FlowStat_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_greptime_v1_meta_FlowStat_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_FlowStat_descriptor,
        new java.lang.String[] { "FlowStatSize", "FlowLastExecTimeMap", });
    internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_descriptor =
      internal_static_greptime_v1_meta_FlowStat_descriptor.getNestedTypes().get(0);
    internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_FlowStat_FlowStatSizeEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_descriptor =
      internal_static_greptime_v1_meta_FlowStat_descriptor.getNestedTypes().get(1);
    internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_FlowStat_FlowLastExecTimeMapEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_greptime_v1_meta_HeartbeatResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_greptime_v1_meta_HeartbeatResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_HeartbeatResponse_descriptor,
        new java.lang.String[] { "Header", "MailboxMessage", "RegionLease", });
    internal_static_greptime_v1_meta_GrantedRegion_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_greptime_v1_meta_GrantedRegion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_GrantedRegion_descriptor,
        new java.lang.String[] { "RegionId", "Role", "Extensions", });
    internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_descriptor =
      internal_static_greptime_v1_meta_GrantedRegion_descriptor.getNestedTypes().get(0);
    internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_GrantedRegion_ExtensionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_greptime_v1_meta_RegionLease_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_greptime_v1_meta_RegionLease_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_RegionLease_descriptor,
        new java.lang.String[] { "Regions", "DurationSinceEpoch", "LeaseSeconds", "CloseableRegionIds", });
    internal_static_greptime_v1_meta_AskLeaderRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_greptime_v1_meta_AskLeaderRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_AskLeaderRequest_descriptor,
        new java.lang.String[] { "Header", });
    internal_static_greptime_v1_meta_AskLeaderResponse_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_greptime_v1_meta_AskLeaderResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_AskLeaderResponse_descriptor,
        new java.lang.String[] { "Header", "Leader", });
    internal_static_greptime_v1_meta_MailboxMessage_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_greptime_v1_meta_MailboxMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_meta_MailboxMessage_descriptor,
        new java.lang.String[] { "Id", "Subject", "From", "To", "TimestampMillis", "Json", "Payload", });
    greptime.v1.meta.Common.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
