// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: msg.proto
// Protobuf Java Version: 4.30.2

package com.seer.teach.netty.common.proto;

public final class MessageProtobuf {
  private MessageProtobuf() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 30,
      /* patch= */ 2,
      /* suffix= */ "",
      MessageProtobuf.class.getName());
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface MsgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Msg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     * @return Whether the head field is set.
     */
    boolean hasHead();
    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     * @return The head.
     */
    Head getHead();
    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     */
    HeadOrBuilder getHeadOrBuilder();

    /**
     * <pre>
     * 消息体
     * </pre>
     *
     * <code>string body = 2;</code>
     * @return The body.
     */
    String getBody();
    /**
     * <pre>
     * 消息体
     * </pre>
     *
     * <code>string body = 2;</code>
     * @return The bytes for body.
     */
    com.google.protobuf.ByteString
        getBodyBytes();
  }
  /**
   * Protobuf type {@code Msg}
   */
  public static final class Msg extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:Msg)
      MsgOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 30,
        /* patch= */ 2,
        /* suffix= */ "",
        Msg.class.getName());
    }
    // Use Msg.newBuilder() to construct.
    private Msg(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Msg() {
      body_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return MessageProtobuf.internal_static_Msg_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return MessageProtobuf.internal_static_Msg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Msg.class, Builder.class);
    }

    private int bitField0_;
    public static final int HEAD_FIELD_NUMBER = 1;
    private Head head_;
    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     * @return Whether the head field is set.
     */
    @Override
    public boolean hasHead() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     * @return The head.
     */
    @Override
    public Head getHead() {
      return head_ == null ? Head.getDefaultInstance() : head_;
    }
    /**
     * <pre>
     * 消息头
     * </pre>
     *
     * <code>.Head head = 1;</code>
     */
    @Override
    public HeadOrBuilder getHeadOrBuilder() {
      return head_ == null ? Head.getDefaultInstance() : head_;
    }

    public static final int BODY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile Object body_ = "";
    /**
     * <pre>
     * 消息体
     * </pre>
     *
     * <code>string body = 2;</code>
     * @return The body.
     */
    @Override
    public String getBody() {
      Object ref = body_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        body_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息体
     * </pre>
     *
     * <code>string body = 2;</code>
     * @return The bytes for body.
     */
    @Override
    public com.google.protobuf.ByteString
        getBodyBytes() {
      Object ref = body_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        body_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getHead());
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(body_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, body_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getHead());
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(body_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, body_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Msg)) {
        return super.equals(obj);
      }
      Msg other = (Msg) obj;

      if (hasHead() != other.hasHead()) return false;
      if (hasHead()) {
        if (!getHead()
            .equals(other.getHead())) return false;
      }
      if (!getBody()
          .equals(other.getBody())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasHead()) {
        hash = (37 * hash) + HEAD_FIELD_NUMBER;
        hash = (53 * hash) + getHead().hashCode();
      }
      hash = (37 * hash) + BODY_FIELD_NUMBER;
      hash = (53 * hash) + getBody().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Msg parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Msg parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Msg parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Msg parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Msg parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Msg parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Msg parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static Msg parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static Msg parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static Msg parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Msg parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static Msg parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Msg prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Msg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Msg)
        MsgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return MessageProtobuf.internal_static_Msg_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return MessageProtobuf.internal_static_Msg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Msg.class, Builder.class);
      }

      // Construct using com.seer.teach.netty.common.proto.MessageProtobuf.Msg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          internalGetHeadFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        head_ = null;
        if (headBuilder_ != null) {
          headBuilder_.dispose();
          headBuilder_ = null;
        }
        body_ = "";
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return MessageProtobuf.internal_static_Msg_descriptor;
      }

      @Override
      public Msg getDefaultInstanceForType() {
        return Msg.getDefaultInstance();
      }

      @Override
      public Msg build() {
        Msg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public Msg buildPartial() {
        Msg result = new Msg(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(Msg result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.head_ = headBuilder_ == null
              ? head_
              : headBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.body_ = body_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Msg) {
          return mergeFrom((Msg)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Msg other) {
        if (other == Msg.getDefaultInstance()) return this;
        if (other.hasHead()) {
          mergeHead(other.getHead());
        }
        if (!other.getBody().isEmpty()) {
          body_ = other.body_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    internalGetHeadFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                body_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private Head head_;
      private com.google.protobuf.SingleFieldBuilder<
          Head, Head.Builder, HeadOrBuilder> headBuilder_;
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       * @return Whether the head field is set.
       */
      public boolean hasHead() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       * @return The head.
       */
      public Head getHead() {
        if (headBuilder_ == null) {
          return head_ == null ? Head.getDefaultInstance() : head_;
        } else {
          return headBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public Builder setHead(Head value) {
        if (headBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          head_ = value;
        } else {
          headBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public Builder setHead(
          Head.Builder builderForValue) {
        if (headBuilder_ == null) {
          head_ = builderForValue.build();
        } else {
          headBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public Builder mergeHead(Head value) {
        if (headBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            head_ != null &&
            head_ != Head.getDefaultInstance()) {
            getHeadBuilder().mergeFrom(value);
          } else {
            head_ = value;
          }
        } else {
          headBuilder_.mergeFrom(value);
        }
        if (head_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public Builder clearHead() {
        bitField0_ = (bitField0_ & ~0x00000001);
        head_ = null;
        if (headBuilder_ != null) {
          headBuilder_.dispose();
          headBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public Head.Builder getHeadBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return internalGetHeadFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      public HeadOrBuilder getHeadOrBuilder() {
        if (headBuilder_ != null) {
          return headBuilder_.getMessageOrBuilder();
        } else {
          return head_ == null ?
              Head.getDefaultInstance() : head_;
        }
      }
      /**
       * <pre>
       * 消息头
       * </pre>
       *
       * <code>.Head head = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          Head, Head.Builder, HeadOrBuilder>
          internalGetHeadFieldBuilder() {
        if (headBuilder_ == null) {
          headBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              Head, Head.Builder, HeadOrBuilder>(
                  getHead(),
                  getParentForChildren(),
                  isClean());
          head_ = null;
        }
        return headBuilder_;
      }

      private Object body_ = "";
      /**
       * <pre>
       * 消息体
       * </pre>
       *
       * <code>string body = 2;</code>
       * @return The body.
       */
      public String getBody() {
        Object ref = body_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          body_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 消息体
       * </pre>
       *
       * <code>string body = 2;</code>
       * @return The bytes for body.
       */
      public com.google.protobuf.ByteString
          getBodyBytes() {
        Object ref = body_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          body_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息体
       * </pre>
       *
       * <code>string body = 2;</code>
       * @param value The body to set.
       * @return This builder for chaining.
       */
      public Builder setBody(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        body_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息体
       * </pre>
       *
       * <code>string body = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBody() {
        body_ = getDefaultInstance().getBody();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息体
       * </pre>
       *
       * <code>string body = 2;</code>
       * @param value The bytes for body to set.
       * @return This builder for chaining.
       */
      public Builder setBodyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        body_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Msg)
    }

    // @@protoc_insertion_point(class_scope:Msg)
    private static final Msg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Msg();
    }

    public static Msg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Msg>
        PARSER = new com.google.protobuf.AbstractParser<Msg>() {
      @Override
      public Msg parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @Override
    public Msg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HeadOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Head)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 消息id
     * </pre>
     *
     * <code>string msgId = 1;</code>
     * @return The msgId.
     */
    String getMsgId();
    /**
     * <pre>
     * 消息id
     * </pre>
     *
     * <code>string msgId = 1;</code>
     * @return The bytes for msgId.
     */
    com.google.protobuf.ByteString
        getMsgIdBytes();

    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>int32 msgType = 2;</code>
     * @return The msgType.
     */
    int getMsgType();

    /**
     * <pre>
     * 消息内容类型
     * </pre>
     *
     * <code>int32 msgContentType = 3;</code>
     * @return The msgContentType.
     */
    int getMsgContentType();

    /**
     * <pre>
     * 设备id
     * </pre>
     *
     * <code>string device = 4;</code>
     * @return The device.
     */
    String getDevice();
    /**
     * <pre>
     * 设备id
     * </pre>
     *
     * <code>string device = 4;</code>
     * @return The bytes for device.
     */
    com.google.protobuf.ByteString
        getDeviceBytes();

    /**
     * <pre>
     * 消息发送者id
     * </pre>
     *
     * <code>string fromId = 5;</code>
     * @return The fromId.
     */
    String getFromId();
    /**
     * <pre>
     * 消息发送者id
     * </pre>
     *
     * <code>string fromId = 5;</code>
     * @return The bytes for fromId.
     */
    com.google.protobuf.ByteString
        getFromIdBytes();

    /**
     * <pre>
     * 消息接收者id
     * </pre>
     *
     * <code>string toId = 6;</code>
     * @return The toId.
     */
    String getToId();
    /**
     * <pre>
     * 消息接收者id
     * </pre>
     *
     * <code>string toId = 6;</code>
     * @return The bytes for toId.
     */
    com.google.protobuf.ByteString
        getToIdBytes();

    /**
     * <pre>
     * 消息时间戳
     * </pre>
     *
     * <code>int64 timestamp = 7;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * 状态报告
     * </pre>
     *
     * <code>int32 statusReport = 8;</code>
     * @return The statusReport.
     */
    int getStatusReport();

    /**
     * <pre>
     * cup使用率
     * </pre>
     *
     * <code>string cpuUsage = 9;</code>
     * @return The cpuUsage.
     */
    String getCpuUsage();
    /**
     * <pre>
     * cup使用率
     * </pre>
     *
     * <code>string cpuUsage = 9;</code>
     * @return The bytes for cpuUsage.
     */
    com.google.protobuf.ByteString
        getCpuUsageBytes();

    /**
     * <pre>
     * 内存占比
     * </pre>
     *
     * <code>string memoryUsage = 10;</code>
     * @return The memoryUsage.
     */
    String getMemoryUsage();
    /**
     * <pre>
     * 内存占比
     * </pre>
     *
     * <code>string memoryUsage = 10;</code>
     * @return The bytes for memoryUsage.
     */
    com.google.protobuf.ByteString
        getMemoryUsageBytes();

    /**
     * <pre>
     * 扩展字段，以key/value形式存放的json
     * </pre>
     *
     * <code>string extend = 11;</code>
     * @return The extend.
     */
    String getExtend();
    /**
     * <pre>
     * 扩展字段，以key/value形式存放的json
     * </pre>
     *
     * <code>string extend = 11;</code>
     * @return The bytes for extend.
     */
    com.google.protobuf.ByteString
        getExtendBytes();
  }
  /**
   * Protobuf type {@code Head}
   */
  public static final class Head extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:Head)
      HeadOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 30,
        /* patch= */ 2,
        /* suffix= */ "",
        Head.class.getName());
    }
    // Use Head.newBuilder() to construct.
    private Head(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private Head() {
      msgId_ = "";
      device_ = "";
      fromId_ = "";
      toId_ = "";
      cpuUsage_ = "";
      memoryUsage_ = "";
      extend_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return MessageProtobuf.internal_static_Head_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return MessageProtobuf.internal_static_Head_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Head.class, Builder.class);
    }

    public static final int MSGID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile Object msgId_ = "";
    /**
     * <pre>
     * 消息id
     * </pre>
     *
     * <code>string msgId = 1;</code>
     * @return The msgId.
     */
    @Override
    public String getMsgId() {
      Object ref = msgId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        msgId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息id
     * </pre>
     *
     * <code>string msgId = 1;</code>
     * @return The bytes for msgId.
     */
    @Override
    public com.google.protobuf.ByteString
        getMsgIdBytes() {
      Object ref = msgId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        msgId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MSGTYPE_FIELD_NUMBER = 2;
    private int msgType_ = 0;
    /**
     * <pre>
     * 消息类型
     * </pre>
     *
     * <code>int32 msgType = 2;</code>
     * @return The msgType.
     */
    @Override
    public int getMsgType() {
      return msgType_;
    }

    public static final int MSGCONTENTTYPE_FIELD_NUMBER = 3;
    private int msgContentType_ = 0;
    /**
     * <pre>
     * 消息内容类型
     * </pre>
     *
     * <code>int32 msgContentType = 3;</code>
     * @return The msgContentType.
     */
    @Override
    public int getMsgContentType() {
      return msgContentType_;
    }

    public static final int DEVICE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile Object device_ = "";
    /**
     * <pre>
     * 设备id
     * </pre>
     *
     * <code>string device = 4;</code>
     * @return The device.
     */
    @Override
    public String getDevice() {
      Object ref = device_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        device_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 设备id
     * </pre>
     *
     * <code>string device = 4;</code>
     * @return The bytes for device.
     */
    @Override
    public com.google.protobuf.ByteString
        getDeviceBytes() {
      Object ref = device_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        device_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FROMID_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile Object fromId_ = "";
    /**
     * <pre>
     * 消息发送者id
     * </pre>
     *
     * <code>string fromId = 5;</code>
     * @return The fromId.
     */
    @Override
    public String getFromId() {
      Object ref = fromId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        fromId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息发送者id
     * </pre>
     *
     * <code>string fromId = 5;</code>
     * @return The bytes for fromId.
     */
    @Override
    public com.google.protobuf.ByteString
        getFromIdBytes() {
      Object ref = fromId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        fromId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TOID_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile Object toId_ = "";
    /**
     * <pre>
     * 消息接收者id
     * </pre>
     *
     * <code>string toId = 6;</code>
     * @return The toId.
     */
    @Override
    public String getToId() {
      Object ref = toId_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        toId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 消息接收者id
     * </pre>
     *
     * <code>string toId = 6;</code>
     * @return The bytes for toId.
     */
    @Override
    public com.google.protobuf.ByteString
        getToIdBytes() {
      Object ref = toId_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        toId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 7;
    private long timestamp_ = 0L;
    /**
     * <pre>
     * 消息时间戳
     * </pre>
     *
     * <code>int64 timestamp = 7;</code>
     * @return The timestamp.
     */
    @Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int STATUSREPORT_FIELD_NUMBER = 8;
    private int statusReport_ = 0;
    /**
     * <pre>
     * 状态报告
     * </pre>
     *
     * <code>int32 statusReport = 8;</code>
     * @return The statusReport.
     */
    @Override
    public int getStatusReport() {
      return statusReport_;
    }

    public static final int CPUUSAGE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile Object cpuUsage_ = "";
    /**
     * <pre>
     * cup使用率
     * </pre>
     *
     * <code>string cpuUsage = 9;</code>
     * @return The cpuUsage.
     */
    @Override
    public String getCpuUsage() {
      Object ref = cpuUsage_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        cpuUsage_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * cup使用率
     * </pre>
     *
     * <code>string cpuUsage = 9;</code>
     * @return The bytes for cpuUsage.
     */
    @Override
    public com.google.protobuf.ByteString
        getCpuUsageBytes() {
      Object ref = cpuUsage_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        cpuUsage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MEMORYUSAGE_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile Object memoryUsage_ = "";
    /**
     * <pre>
     * 内存占比
     * </pre>
     *
     * <code>string memoryUsage = 10;</code>
     * @return The memoryUsage.
     */
    @Override
    public String getMemoryUsage() {
      Object ref = memoryUsage_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        memoryUsage_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 内存占比
     * </pre>
     *
     * <code>string memoryUsage = 10;</code>
     * @return The bytes for memoryUsage.
     */
    @Override
    public com.google.protobuf.ByteString
        getMemoryUsageBytes() {
      Object ref = memoryUsage_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        memoryUsage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTEND_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private volatile Object extend_ = "";
    /**
     * <pre>
     * 扩展字段，以key/value形式存放的json
     * </pre>
     *
     * <code>string extend = 11;</code>
     * @return The extend.
     */
    @Override
    public String getExtend() {
      Object ref = extend_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        extend_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * 扩展字段，以key/value形式存放的json
     * </pre>
     *
     * <code>string extend = 11;</code>
     * @return The bytes for extend.
     */
    @Override
    public com.google.protobuf.ByteString
        getExtendBytes() {
      Object ref = extend_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        extend_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, msgId_);
      }
      if (msgType_ != 0) {
        output.writeInt32(2, msgType_);
      }
      if (msgContentType_ != 0) {
        output.writeInt32(3, msgContentType_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(device_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, device_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fromId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, fromId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(toId_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, toId_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(7, timestamp_);
      }
      if (statusReport_ != 0) {
        output.writeInt32(8, statusReport_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(cpuUsage_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 9, cpuUsage_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(memoryUsage_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 10, memoryUsage_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(extend_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 11, extend_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(msgId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, msgId_);
      }
      if (msgType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, msgType_);
      }
      if (msgContentType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, msgContentType_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(device_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, device_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(fromId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, fromId_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(toId_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, toId_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, timestamp_);
      }
      if (statusReport_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, statusReport_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(cpuUsage_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(9, cpuUsage_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(memoryUsage_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(10, memoryUsage_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(extend_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(11, extend_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Head)) {
        return super.equals(obj);
      }
      Head other = (Head) obj;

      if (!getMsgId()
          .equals(other.getMsgId())) return false;
      if (getMsgType()
          != other.getMsgType()) return false;
      if (getMsgContentType()
          != other.getMsgContentType()) return false;
      if (!getDevice()
          .equals(other.getDevice())) return false;
      if (!getFromId()
          .equals(other.getFromId())) return false;
      if (!getToId()
          .equals(other.getToId())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (getStatusReport()
          != other.getStatusReport()) return false;
      if (!getCpuUsage()
          .equals(other.getCpuUsage())) return false;
      if (!getMemoryUsage()
          .equals(other.getMemoryUsage())) return false;
      if (!getExtend()
          .equals(other.getExtend())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MSGID_FIELD_NUMBER;
      hash = (53 * hash) + getMsgId().hashCode();
      hash = (37 * hash) + MSGTYPE_FIELD_NUMBER;
      hash = (53 * hash) + getMsgType();
      hash = (37 * hash) + MSGCONTENTTYPE_FIELD_NUMBER;
      hash = (53 * hash) + getMsgContentType();
      hash = (37 * hash) + DEVICE_FIELD_NUMBER;
      hash = (53 * hash) + getDevice().hashCode();
      hash = (37 * hash) + FROMID_FIELD_NUMBER;
      hash = (53 * hash) + getFromId().hashCode();
      hash = (37 * hash) + TOID_FIELD_NUMBER;
      hash = (53 * hash) + getToId().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + STATUSREPORT_FIELD_NUMBER;
      hash = (53 * hash) + getStatusReport();
      hash = (37 * hash) + CPUUSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getCpuUsage().hashCode();
      hash = (37 * hash) + MEMORYUSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMemoryUsage().hashCode();
      hash = (37 * hash) + EXTEND_FIELD_NUMBER;
      hash = (53 * hash) + getExtend().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static Head parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Head parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Head parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Head parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Head parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Head parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Head parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static Head parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static Head parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static Head parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static Head parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static Head parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Head prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Head}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Head)
        HeadOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return MessageProtobuf.internal_static_Head_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return MessageProtobuf.internal_static_Head_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Head.class, Builder.class);
      }

      // Construct using com.seer.teach.netty.common.proto.MessageProtobuf.Head.newBuilder()
      private Builder() {

      }

      private Builder(
          BuilderParent parent) {
        super(parent);

      }
      @Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        msgId_ = "";
        msgType_ = 0;
        msgContentType_ = 0;
        device_ = "";
        fromId_ = "";
        toId_ = "";
        timestamp_ = 0L;
        statusReport_ = 0;
        cpuUsage_ = "";
        memoryUsage_ = "";
        extend_ = "";
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return MessageProtobuf.internal_static_Head_descriptor;
      }

      @Override
      public Head getDefaultInstanceForType() {
        return Head.getDefaultInstance();
      }

      @Override
      public Head build() {
        Head result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public Head buildPartial() {
        Head result = new Head(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(Head result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.msgId_ = msgId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.msgType_ = msgType_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.msgContentType_ = msgContentType_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.device_ = device_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.fromId_ = fromId_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.toId_ = toId_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.timestamp_ = timestamp_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.statusReport_ = statusReport_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.cpuUsage_ = cpuUsage_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.memoryUsage_ = memoryUsage_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.extend_ = extend_;
        }
      }

      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Head) {
          return mergeFrom((Head)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Head other) {
        if (other == Head.getDefaultInstance()) return this;
        if (!other.getMsgId().isEmpty()) {
          msgId_ = other.msgId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.getMsgType() != 0) {
          setMsgType(other.getMsgType());
        }
        if (other.getMsgContentType() != 0) {
          setMsgContentType(other.getMsgContentType());
        }
        if (!other.getDevice().isEmpty()) {
          device_ = other.device_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getFromId().isEmpty()) {
          fromId_ = other.fromId_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.getToId().isEmpty()) {
          toId_ = other.toId_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.getStatusReport() != 0) {
          setStatusReport(other.getStatusReport());
        }
        if (!other.getCpuUsage().isEmpty()) {
          cpuUsage_ = other.cpuUsage_;
          bitField0_ |= 0x00000100;
          onChanged();
        }
        if (!other.getMemoryUsage().isEmpty()) {
          memoryUsage_ = other.memoryUsage_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (!other.getExtend().isEmpty()) {
          extend_ = other.extend_;
          bitField0_ |= 0x00000400;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                msgId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                msgType_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                msgContentType_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                device_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                fromId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                toId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 56: {
                timestamp_ = input.readInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 64: {
                statusReport_ = input.readInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 74: {
                cpuUsage_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                memoryUsage_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                extend_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private Object msgId_ = "";
      /**
       * <pre>
       * 消息id
       * </pre>
       *
       * <code>string msgId = 1;</code>
       * @return The msgId.
       */
      public String getMsgId() {
        Object ref = msgId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          msgId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 消息id
       * </pre>
       *
       * <code>string msgId = 1;</code>
       * @return The bytes for msgId.
       */
      public com.google.protobuf.ByteString
          getMsgIdBytes() {
        Object ref = msgId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          msgId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息id
       * </pre>
       *
       * <code>string msgId = 1;</code>
       * @param value The msgId to set.
       * @return This builder for chaining.
       */
      public Builder setMsgId(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        msgId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息id
       * </pre>
       *
       * <code>string msgId = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsgId() {
        msgId_ = getDefaultInstance().getMsgId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息id
       * </pre>
       *
       * <code>string msgId = 1;</code>
       * @param value The bytes for msgId to set.
       * @return This builder for chaining.
       */
      public Builder setMsgIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        msgId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int msgType_ ;
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 msgType = 2;</code>
       * @return The msgType.
       */
      @Override
      public int getMsgType() {
        return msgType_;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 msgType = 2;</code>
       * @param value The msgType to set.
       * @return This builder for chaining.
       */
      public Builder setMsgType(int value) {

        msgType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息类型
       * </pre>
       *
       * <code>int32 msgType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsgType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        msgType_ = 0;
        onChanged();
        return this;
      }

      private int msgContentType_ ;
      /**
       * <pre>
       * 消息内容类型
       * </pre>
       *
       * <code>int32 msgContentType = 3;</code>
       * @return The msgContentType.
       */
      @Override
      public int getMsgContentType() {
        return msgContentType_;
      }
      /**
       * <pre>
       * 消息内容类型
       * </pre>
       *
       * <code>int32 msgContentType = 3;</code>
       * @param value The msgContentType to set.
       * @return This builder for chaining.
       */
      public Builder setMsgContentType(int value) {

        msgContentType_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息内容类型
       * </pre>
       *
       * <code>int32 msgContentType = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMsgContentType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        msgContentType_ = 0;
        onChanged();
        return this;
      }

      private Object device_ = "";
      /**
       * <pre>
       * 设备id
       * </pre>
       *
       * <code>string device = 4;</code>
       * @return The device.
       */
      public String getDevice() {
        Object ref = device_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          device_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 设备id
       * </pre>
       *
       * <code>string device = 4;</code>
       * @return The bytes for device.
       */
      public com.google.protobuf.ByteString
          getDeviceBytes() {
        Object ref = device_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          device_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 设备id
       * </pre>
       *
       * <code>string device = 4;</code>
       * @param value The device to set.
       * @return This builder for chaining.
       */
      public Builder setDevice(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        device_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 设备id
       * </pre>
       *
       * <code>string device = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevice() {
        device_ = getDefaultInstance().getDevice();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 设备id
       * </pre>
       *
       * <code>string device = 4;</code>
       * @param value The bytes for device to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        device_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private Object fromId_ = "";
      /**
       * <pre>
       * 消息发送者id
       * </pre>
       *
       * <code>string fromId = 5;</code>
       * @return The fromId.
       */
      public String getFromId() {
        Object ref = fromId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          fromId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 消息发送者id
       * </pre>
       *
       * <code>string fromId = 5;</code>
       * @return The bytes for fromId.
       */
      public com.google.protobuf.ByteString
          getFromIdBytes() {
        Object ref = fromId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          fromId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息发送者id
       * </pre>
       *
       * <code>string fromId = 5;</code>
       * @param value The fromId to set.
       * @return This builder for chaining.
       */
      public Builder setFromId(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        fromId_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息发送者id
       * </pre>
       *
       * <code>string fromId = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFromId() {
        fromId_ = getDefaultInstance().getFromId();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息发送者id
       * </pre>
       *
       * <code>string fromId = 5;</code>
       * @param value The bytes for fromId to set.
       * @return This builder for chaining.
       */
      public Builder setFromIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fromId_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private Object toId_ = "";
      /**
       * <pre>
       * 消息接收者id
       * </pre>
       *
       * <code>string toId = 6;</code>
       * @return The toId.
       */
      public String getToId() {
        Object ref = toId_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          toId_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 消息接收者id
       * </pre>
       *
       * <code>string toId = 6;</code>
       * @return The bytes for toId.
       */
      public com.google.protobuf.ByteString
          getToIdBytes() {
        Object ref = toId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          toId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 消息接收者id
       * </pre>
       *
       * <code>string toId = 6;</code>
       * @param value The toId to set.
       * @return This builder for chaining.
       */
      public Builder setToId(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        toId_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收者id
       * </pre>
       *
       * <code>string toId = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearToId() {
        toId_ = getDefaultInstance().getToId();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息接收者id
       * </pre>
       *
       * <code>string toId = 6;</code>
       * @param value The bytes for toId to set.
       * @return This builder for chaining.
       */
      public Builder setToIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        toId_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * 消息时间戳
       * </pre>
       *
       * <code>int64 timestamp = 7;</code>
       * @return The timestamp.
       */
      @Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * 消息时间戳
       * </pre>
       *
       * <code>int64 timestamp = 7;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {

        timestamp_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 消息时间戳
       * </pre>
       *
       * <code>int64 timestamp = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000040);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private int statusReport_ ;
      /**
       * <pre>
       * 状态报告
       * </pre>
       *
       * <code>int32 statusReport = 8;</code>
       * @return The statusReport.
       */
      @Override
      public int getStatusReport() {
        return statusReport_;
      }
      /**
       * <pre>
       * 状态报告
       * </pre>
       *
       * <code>int32 statusReport = 8;</code>
       * @param value The statusReport to set.
       * @return This builder for chaining.
       */
      public Builder setStatusReport(int value) {

        statusReport_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 状态报告
       * </pre>
       *
       * <code>int32 statusReport = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatusReport() {
        bitField0_ = (bitField0_ & ~0x00000080);
        statusReport_ = 0;
        onChanged();
        return this;
      }

      private Object cpuUsage_ = "";
      /**
       * <pre>
       * cup使用率
       * </pre>
       *
       * <code>string cpuUsage = 9;</code>
       * @return The cpuUsage.
       */
      public String getCpuUsage() {
        Object ref = cpuUsage_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          cpuUsage_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * cup使用率
       * </pre>
       *
       * <code>string cpuUsage = 9;</code>
       * @return The bytes for cpuUsage.
       */
      public com.google.protobuf.ByteString
          getCpuUsageBytes() {
        Object ref = cpuUsage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          cpuUsage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * cup使用率
       * </pre>
       *
       * <code>string cpuUsage = 9;</code>
       * @param value The cpuUsage to set.
       * @return This builder for chaining.
       */
      public Builder setCpuUsage(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        cpuUsage_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cup使用率
       * </pre>
       *
       * <code>string cpuUsage = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearCpuUsage() {
        cpuUsage_ = getDefaultInstance().getCpuUsage();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * cup使用率
       * </pre>
       *
       * <code>string cpuUsage = 9;</code>
       * @param value The bytes for cpuUsage to set.
       * @return This builder for chaining.
       */
      public Builder setCpuUsageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        cpuUsage_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }

      private Object memoryUsage_ = "";
      /**
       * <pre>
       * 内存占比
       * </pre>
       *
       * <code>string memoryUsage = 10;</code>
       * @return The memoryUsage.
       */
      public String getMemoryUsage() {
        Object ref = memoryUsage_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          memoryUsage_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 内存占比
       * </pre>
       *
       * <code>string memoryUsage = 10;</code>
       * @return The bytes for memoryUsage.
       */
      public com.google.protobuf.ByteString
          getMemoryUsageBytes() {
        Object ref = memoryUsage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          memoryUsage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 内存占比
       * </pre>
       *
       * <code>string memoryUsage = 10;</code>
       * @param value The memoryUsage to set.
       * @return This builder for chaining.
       */
      public Builder setMemoryUsage(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        memoryUsage_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 内存占比
       * </pre>
       *
       * <code>string memoryUsage = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearMemoryUsage() {
        memoryUsage_ = getDefaultInstance().getMemoryUsage();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 内存占比
       * </pre>
       *
       * <code>string memoryUsage = 10;</code>
       * @param value The bytes for memoryUsage to set.
       * @return This builder for chaining.
       */
      public Builder setMemoryUsageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        memoryUsage_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private Object extend_ = "";
      /**
       * <pre>
       * 扩展字段，以key/value形式存放的json
       * </pre>
       *
       * <code>string extend = 11;</code>
       * @return The extend.
       */
      public String getExtend() {
        Object ref = extend_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          extend_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * 扩展字段，以key/value形式存放的json
       * </pre>
       *
       * <code>string extend = 11;</code>
       * @return The bytes for extend.
       */
      public com.google.protobuf.ByteString
          getExtendBytes() {
        Object ref = extend_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          extend_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * 扩展字段，以key/value形式存放的json
       * </pre>
       *
       * <code>string extend = 11;</code>
       * @param value The extend to set.
       * @return This builder for chaining.
       */
      public Builder setExtend(
          String value) {
        if (value == null) { throw new NullPointerException(); }
        extend_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 扩展字段，以key/value形式存放的json
       * </pre>
       *
       * <code>string extend = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtend() {
        extend_ = getDefaultInstance().getExtend();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 扩展字段，以key/value形式存放的json
       * </pre>
       *
       * <code>string extend = 11;</code>
       * @param value The bytes for extend to set.
       * @return This builder for chaining.
       */
      public Builder setExtendBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        extend_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Head)
    }

    // @@protoc_insertion_point(class_scope:Head)
    private static final Head DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Head();
    }

    public static Head getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Head>
        PARSER = new com.google.protobuf.AbstractParser<Head>() {
      @Override
      public Head parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @Override
    public Head getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Msg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Msg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Head_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Head_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\tmsg.proto\"(\n\003Msg\022\023\n\004head\030\001 \001(\0132\005.Head\022" +
      "\014\n\004body\030\002 \001(\t\"\314\001\n\004Head\022\r\n\005msgId\030\001 \001(\t\022\017\n" +
      "\007msgType\030\002 \001(\005\022\026\n\016msgContentType\030\003 \001(\005\022\016" +
      "\n\006device\030\004 \001(\t\022\016\n\006fromId\030\005 \001(\t\022\014\n\004toId\030\006" +
      " \001(\t\022\021\n\ttimestamp\030\007 \001(\003\022\024\n\014statusReport\030" +
      "\010 \001(\005\022\020\n\010cpuUsage\030\t \001(\t\022\023\n\013memoryUsage\030\n" +
      " \001(\t\022\016\n\006extend\030\013 \001(\tB4\n!com.seer.teach.n" +
      "etty.common.protoB\017MessageProtobufb\006prot" +
      "o3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_Msg_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Msg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_Msg_descriptor,
        new String[] { "Head", "Body", });
    internal_static_Head_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_Head_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_Head_descriptor,
        new String[] { "MsgId", "MsgType", "MsgContentType", "Device", "FromId", "ToId", "Timestamp", "StatusReport", "CpuUsage", "MemoryUsage", "Extend", });
    descriptor.resolveAllFeaturesImmutable();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
