‘xugp 3 лет назад
Родитель
Сommit
c21296d2b0

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/bridge/test/ReadGolden.java

@@ -2,7 +2,7 @@ package com.gyee.edge.gateway.bridge.test;
 
 
 import com.gyee.edge.common.utils.ByteUtil;
-import com.gyee.edge.loader.protobuf.UserProto;
+import com.gyee.edge.gateway.protobuf.UserProto;
 
 import java.io.UnsupportedEncodingException;
 import java.util.*;

+ 1455 - 0
gateway/src/main/java/com/gyee/edge/gateway/protobuf/UserProto.java

@@ -0,0 +1,1455 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: user.proto
+
+package com.gyee.edge.gateway.protobuf;
+
+public final class UserProto {
+  private UserProto() {}
+  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 UserOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:com.gyee.edge.gateway.protobuf.User)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    int getMapCount();
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    boolean containsMap(
+        java.lang.String key);
+    /**
+     * Use {@link #getMapMap()} instead.
+     */
+    @java.lang.Deprecated
+    java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+    getMap();
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+    getMapMap();
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+
+    /* nullable */
+com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrDefault(
+        java.lang.String key,
+        /* nullable */
+com.gyee.edge.gateway.protobuf.UserProto.User.Datas defaultValue);
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+
+    com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrThrow(
+        java.lang.String key);
+  }
+  /**
+   * <pre>
+   *创建一个 User 对象
+   * </pre>
+   *
+   * Protobuf type {@code com.gyee.edge.gateway.protobuf.User}
+   */
+  public static final class User extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:com.gyee.edge.gateway.protobuf.User)
+      UserOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use User.newBuilder() to construct.
+    private User(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private User() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new User();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private User(
+        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 66: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                map_ = com.google.protobuf.MapField.newMapField(
+                    MapDefaultEntryHolder.defaultEntry);
+                mutable_bitField0_ |= 0x00000001;
+              }
+              com.google.protobuf.MapEntry<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+              map__ = input.readMessage(
+                  MapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+              map_.getMutableMap().put(
+                  map__.getKey(), map__.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 com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_descriptor;
+    }
+
+    @SuppressWarnings({"rawtypes"})
+    @java.lang.Override
+    protected com.google.protobuf.MapField internalGetMapField(
+        int number) {
+      switch (number) {
+        case 8:
+          return internalGetMap();
+        default:
+          throw new RuntimeException(
+              "Invalid map field number: " + number);
+      }
+    }
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.gyee.edge.gateway.protobuf.UserProto.User.class, com.gyee.edge.gateway.protobuf.UserProto.User.Builder.class);
+    }
+
+    public interface DatasOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:com.gyee.edge.gateway.protobuf.User.Datas)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>int64 ts = 1;</code>
+       * @return The ts.
+       */
+      long getTs();
+
+      /**
+       * <code>double value = 2;</code>
+       * @return The value.
+       */
+      double getValue();
+    }
+    /**
+     * Protobuf type {@code com.gyee.edge.gateway.protobuf.User.Datas}
+     */
+    public static final class Datas extends
+        com.google.protobuf.GeneratedMessageV3 implements
+        // @@protoc_insertion_point(message_implements:com.gyee.edge.gateway.protobuf.User.Datas)
+        DatasOrBuilder {
+    private static final long serialVersionUID = 0L;
+      // Use Datas.newBuilder() to construct.
+      private Datas(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+      private Datas() {
+      }
+
+      @java.lang.Override
+      @SuppressWarnings({"unused"})
+      protected java.lang.Object newInstance(
+          UnusedPrivateParameter unused) {
+        return new Datas();
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+      getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Datas(
+          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: {
+
+                ts_ = input.readInt64();
+                break;
+              }
+              case 17: {
+
+                value_ = input.readDouble();
+                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 com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_Datas_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.gyee.edge.gateway.protobuf.UserProto.User.Datas.class, com.gyee.edge.gateway.protobuf.UserProto.User.Datas.Builder.class);
+      }
+
+      public static final int TS_FIELD_NUMBER = 1;
+      private long ts_;
+      /**
+       * <code>int64 ts = 1;</code>
+       * @return The ts.
+       */
+      @java.lang.Override
+      public long getTs() {
+        return ts_;
+      }
+
+      public static final int VALUE_FIELD_NUMBER = 2;
+      private double value_;
+      /**
+       * <code>double value = 2;</code>
+       * @return The value.
+       */
+      @java.lang.Override
+      public double getValue() {
+        return value_;
+      }
+
+      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 (ts_ != 0L) {
+          output.writeInt64(1, ts_);
+        }
+        if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
+          output.writeDouble(2, value_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (ts_ != 0L) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt64Size(1, ts_);
+        }
+        if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeDoubleSize(2, value_);
+        }
+        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 com.gyee.edge.gateway.protobuf.UserProto.User.Datas)) {
+          return super.equals(obj);
+        }
+        com.gyee.edge.gateway.protobuf.UserProto.User.Datas other = (com.gyee.edge.gateway.protobuf.UserProto.User.Datas) obj;
+
+        if (getTs()
+            != other.getTs()) return false;
+        if (java.lang.Double.doubleToLongBits(getValue())
+            != java.lang.Double.doubleToLongBits(
+                other.getValue())) 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) + TS_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTs());
+        hash = (37 * hash) + VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            java.lang.Double.doubleToLongBits(getValue()));
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          java.nio.ByteBuffer data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          java.nio.ByteBuffer data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas 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 com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseDelimitedWithIOException(PARSER, input);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas 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 com.gyee.edge.gateway.protobuf.UserProto.User.Datas parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3
+            .parseWithIOException(PARSER, input);
+      }
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas 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(com.gyee.edge.gateway.protobuf.UserProto.User.Datas 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 com.gyee.edge.gateway.protobuf.User.Datas}
+       */
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:com.gyee.edge.gateway.protobuf.User.Datas)
+          com.gyee.edge.gateway.protobuf.UserProto.User.DatasOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor
+            getDescriptor() {
+          return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_Datas_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.gyee.edge.gateway.protobuf.UserProto.User.Datas.class, com.gyee.edge.gateway.protobuf.UserProto.User.Datas.Builder.class);
+        }
+
+        // Construct using com.gyee.edge.gateway.protobuf.UserProto.User.Datas.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();
+          ts_ = 0L;
+
+          value_ = 0D;
+
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor;
+        }
+
+        @java.lang.Override
+        public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getDefaultInstanceForType() {
+          return com.gyee.edge.gateway.protobuf.UserProto.User.Datas.getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public com.gyee.edge.gateway.protobuf.UserProto.User.Datas build() {
+          com.gyee.edge.gateway.protobuf.UserProto.User.Datas result = buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public com.gyee.edge.gateway.protobuf.UserProto.User.Datas buildPartial() {
+          com.gyee.edge.gateway.protobuf.UserProto.User.Datas result = new com.gyee.edge.gateway.protobuf.UserProto.User.Datas(this);
+          result.ts_ = ts_;
+          result.value_ = value_;
+          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 com.gyee.edge.gateway.protobuf.UserProto.User.Datas) {
+            return mergeFrom((com.gyee.edge.gateway.protobuf.UserProto.User.Datas)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(com.gyee.edge.gateway.protobuf.UserProto.User.Datas other) {
+          if (other == com.gyee.edge.gateway.protobuf.UserProto.User.Datas.getDefaultInstance()) return this;
+          if (other.getTs() != 0L) {
+            setTs(other.getTs());
+          }
+          if (other.getValue() != 0D) {
+            setValue(other.getValue());
+          }
+          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 {
+          com.gyee.edge.gateway.protobuf.UserProto.User.Datas parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (com.gyee.edge.gateway.protobuf.UserProto.User.Datas) e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        private long ts_ ;
+        /**
+         * <code>int64 ts = 1;</code>
+         * @return The ts.
+         */
+        @java.lang.Override
+        public long getTs() {
+          return ts_;
+        }
+        /**
+         * <code>int64 ts = 1;</code>
+         * @param value The ts to set.
+         * @return This builder for chaining.
+         */
+        public Builder setTs(long value) {
+          
+          ts_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>int64 ts = 1;</code>
+         * @return This builder for chaining.
+         */
+        public Builder clearTs() {
+          
+          ts_ = 0L;
+          onChanged();
+          return this;
+        }
+
+        private double value_ ;
+        /**
+         * <code>double value = 2;</code>
+         * @return The value.
+         */
+        @java.lang.Override
+        public double getValue() {
+          return value_;
+        }
+        /**
+         * <code>double value = 2;</code>
+         * @param value The value to set.
+         * @return This builder for chaining.
+         */
+        public Builder setValue(double value) {
+          
+          value_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         * <code>double value = 2;</code>
+         * @return This builder for chaining.
+         */
+        public Builder clearValue() {
+          
+          value_ = 0D;
+          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:com.gyee.edge.gateway.protobuf.User.Datas)
+      }
+
+      // @@protoc_insertion_point(class_scope:com.gyee.edge.gateway.protobuf.User.Datas)
+      private static final com.gyee.edge.gateway.protobuf.UserProto.User.Datas DEFAULT_INSTANCE;
+      static {
+        DEFAULT_INSTANCE = new com.gyee.edge.gateway.protobuf.UserProto.User.Datas();
+      }
+
+      public static com.gyee.edge.gateway.protobuf.UserProto.User.Datas getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      private static final com.google.protobuf.Parser<Datas>
+          PARSER = new com.google.protobuf.AbstractParser<Datas>() {
+        @java.lang.Override
+        public Datas parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Datas(input, extensionRegistry);
+        }
+      };
+
+      public static com.google.protobuf.Parser<Datas> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Datas> getParserForType() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
+
+    }
+
+    public static final int MAP_FIELD_NUMBER = 8;
+    private static final class MapDefaultEntryHolder {
+      static final com.google.protobuf.MapEntry<
+          java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> defaultEntry =
+              com.google.protobuf.MapEntry
+              .<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>newDefaultInstance(
+                  com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_descriptor, 
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "",
+                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
+                  com.gyee.edge.gateway.protobuf.UserProto.User.Datas.getDefaultInstance());
+    }
+    private com.google.protobuf.MapField<
+        java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map_;
+    private com.google.protobuf.MapField<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+    internalGetMap() {
+      if (map_ == null) {
+        return com.google.protobuf.MapField.emptyMapField(
+            MapDefaultEntryHolder.defaultEntry);
+      }
+      return map_;
+    }
+
+    public int getMapCount() {
+      return internalGetMap().getMap().size();
+    }
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+
+    @java.lang.Override
+    public boolean containsMap(
+        java.lang.String key) {
+      if (key == null) { throw new NullPointerException("map key"); }
+      return internalGetMap().getMap().containsKey(key);
+    }
+    /**
+     * Use {@link #getMapMap()} instead.
+     */
+    @java.lang.Override
+    @java.lang.Deprecated
+    public java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> getMap() {
+      return getMapMap();
+    }
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    @java.lang.Override
+
+    public java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> getMapMap() {
+      return internalGetMap().getMap();
+    }
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    @java.lang.Override
+
+    public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrDefault(
+        java.lang.String key,
+        com.gyee.edge.gateway.protobuf.UserProto.User.Datas defaultValue) {
+      if (key == null) { throw new NullPointerException("map key"); }
+      java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map =
+          internalGetMap().getMap();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+    /**
+     * <pre>
+     * 定义简单的 Map string
+     * </pre>
+     *
+     * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+     */
+    @java.lang.Override
+
+    public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrThrow(
+        java.lang.String key) {
+      if (key == null) { throw new NullPointerException("map key"); }
+      java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map =
+          internalGetMap().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
+        .serializeStringMapTo(
+          output,
+          internalGetMap(),
+          MapDefaultEntryHolder.defaultEntry,
+          8);
+      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.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> entry
+           : internalGetMap().getMap().entrySet()) {
+        com.google.protobuf.MapEntry<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+        map__ = MapDefaultEntryHolder.defaultEntry.newBuilderForType()
+            .setKey(entry.getKey())
+            .setValue(entry.getValue())
+            .build();
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(8, map__);
+      }
+      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 com.gyee.edge.gateway.protobuf.UserProto.User)) {
+        return super.equals(obj);
+      }
+      com.gyee.edge.gateway.protobuf.UserProto.User other = (com.gyee.edge.gateway.protobuf.UserProto.User) obj;
+
+      if (!internalGetMap().equals(
+          other.internalGetMap())) 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 (!internalGetMap().getMap().isEmpty()) {
+        hash = (37 * hash) + MAP_FIELD_NUMBER;
+        hash = (53 * hash) + internalGetMap().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User 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 com.gyee.edge.gateway.protobuf.UserProto.User parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User 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 com.gyee.edge.gateway.protobuf.UserProto.User parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.gyee.edge.gateway.protobuf.UserProto.User 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(com.gyee.edge.gateway.protobuf.UserProto.User 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>
+     *创建一个 User 对象
+     * </pre>
+     *
+     * Protobuf type {@code com.gyee.edge.gateway.protobuf.User}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:com.gyee.edge.gateway.protobuf.User)
+        com.gyee.edge.gateway.protobuf.UserProto.UserOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_descriptor;
+      }
+
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMapField(
+          int number) {
+        switch (number) {
+          case 8:
+            return internalGetMap();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMutableMapField(
+          int number) {
+        switch (number) {
+          case 8:
+            return internalGetMutableMap();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.gyee.edge.gateway.protobuf.UserProto.User.class, com.gyee.edge.gateway.protobuf.UserProto.User.Builder.class);
+      }
+
+      // Construct using com.gyee.edge.gateway.protobuf.UserProto.User.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();
+        internalGetMutableMap().clear();
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.gyee.edge.gateway.protobuf.UserProto.internal_static_com_gyee_edge_gateway_protobuf_User_descriptor;
+      }
+
+      @java.lang.Override
+      public com.gyee.edge.gateway.protobuf.UserProto.User getDefaultInstanceForType() {
+        return com.gyee.edge.gateway.protobuf.UserProto.User.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public com.gyee.edge.gateway.protobuf.UserProto.User build() {
+        com.gyee.edge.gateway.protobuf.UserProto.User result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public com.gyee.edge.gateway.protobuf.UserProto.User buildPartial() {
+        com.gyee.edge.gateway.protobuf.UserProto.User result = new com.gyee.edge.gateway.protobuf.UserProto.User(this);
+        int from_bitField0_ = bitField0_;
+        result.map_ = internalGetMap();
+        result.map_.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 com.gyee.edge.gateway.protobuf.UserProto.User) {
+          return mergeFrom((com.gyee.edge.gateway.protobuf.UserProto.User)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.gyee.edge.gateway.protobuf.UserProto.User other) {
+        if (other == com.gyee.edge.gateway.protobuf.UserProto.User.getDefaultInstance()) return this;
+        internalGetMutableMap().mergeFrom(
+            other.internalGetMap());
+        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 {
+        com.gyee.edge.gateway.protobuf.UserProto.User parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.gyee.edge.gateway.protobuf.UserProto.User) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private com.google.protobuf.MapField<
+          java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map_;
+      private com.google.protobuf.MapField<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+      internalGetMap() {
+        if (map_ == null) {
+          return com.google.protobuf.MapField.emptyMapField(
+              MapDefaultEntryHolder.defaultEntry);
+        }
+        return map_;
+      }
+      private com.google.protobuf.MapField<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+      internalGetMutableMap() {
+        onChanged();;
+        if (map_ == null) {
+          map_ = com.google.protobuf.MapField.newMapField(
+              MapDefaultEntryHolder.defaultEntry);
+        }
+        if (!map_.isMutable()) {
+          map_ = map_.copy();
+        }
+        return map_;
+      }
+
+      public int getMapCount() {
+        return internalGetMap().getMap().size();
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+
+      @java.lang.Override
+      public boolean containsMap(
+          java.lang.String key) {
+        if (key == null) { throw new NullPointerException("map key"); }
+        return internalGetMap().getMap().containsKey(key);
+      }
+      /**
+       * Use {@link #getMapMap()} instead.
+       */
+      @java.lang.Override
+      @java.lang.Deprecated
+      public java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> getMap() {
+        return getMapMap();
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+      @java.lang.Override
+
+      public java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> getMapMap() {
+        return internalGetMap().getMap();
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+      @java.lang.Override
+
+      public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrDefault(
+          java.lang.String key,
+          com.gyee.edge.gateway.protobuf.UserProto.User.Datas defaultValue) {
+        if (key == null) { throw new NullPointerException("map key"); }
+        java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map =
+            internalGetMap().getMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+      @java.lang.Override
+
+      public com.gyee.edge.gateway.protobuf.UserProto.User.Datas getMapOrThrow(
+          java.lang.String key) {
+        if (key == null) { throw new NullPointerException("map key"); }
+        java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> map =
+            internalGetMap().getMap();
+        if (!map.containsKey(key)) {
+          throw new java.lang.IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+
+      public Builder clearMap() {
+        internalGetMutableMap().getMutableMap()
+            .clear();
+        return this;
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+
+      public Builder removeMap(
+          java.lang.String key) {
+        if (key == null) { throw new NullPointerException("map key"); }
+        internalGetMutableMap().getMutableMap()
+            .remove(key);
+        return this;
+      }
+      /**
+       * Use alternate mutation accessors instead.
+       */
+      @java.lang.Deprecated
+      public java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas>
+      getMutableMap() {
+        return internalGetMutableMap().getMutableMap();
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+      public Builder putMap(
+          java.lang.String key,
+          com.gyee.edge.gateway.protobuf.UserProto.User.Datas value) {
+        if (key == null) { throw new NullPointerException("map key"); }
+        if (value == null) {
+  throw new NullPointerException("map value");
+}
+
+        internalGetMutableMap().getMutableMap()
+            .put(key, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * 定义简单的 Map string
+       * </pre>
+       *
+       * <code>map&lt;string, .com.gyee.edge.gateway.protobuf.User.Datas&gt; map = 8;</code>
+       */
+
+      public Builder putAllMap(
+          java.util.Map<java.lang.String, com.gyee.edge.gateway.protobuf.UserProto.User.Datas> values) {
+        internalGetMutableMap().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:com.gyee.edge.gateway.protobuf.User)
+    }
+
+    // @@protoc_insertion_point(class_scope:com.gyee.edge.gateway.protobuf.User)
+    private static final com.gyee.edge.gateway.protobuf.UserProto.User DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new com.gyee.edge.gateway.protobuf.UserProto.User();
+    }
+
+    public static com.gyee.edge.gateway.protobuf.UserProto.User getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<User>
+        PARSER = new com.google.protobuf.AbstractParser<User>() {
+      @java.lang.Override
+      public User parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new User(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<User> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<User> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.gyee.edge.gateway.protobuf.UserProto.User getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_gyee_edge_gateway_protobuf_User_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_gyee_edge_gateway_protobuf_User_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_com_gyee_edge_gateway_protobuf_User_Datas_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\nuser.proto\022\036com.gyee.edge.gateway.prot" +
+      "obuf\"\276\001\n\004User\022:\n\003map\030\010 \003(\0132-.com.gyee.ed" +
+      "ge.gateway.protobuf.User.MapEntry\032V\n\010Map" +
+      "Entry\022\013\n\003key\030\001 \001(\t\0229\n\005value\030\002 \001(\0132*.com." +
+      "gyee.edge.gateway.protobuf.User.Datas:\0028" +
+      "\001\032\"\n\005Datas\022\n\n\002ts\030\001 \001(\003\022\r\n\005value\030\002 \001(\001B+\n" +
+      "\036com.gyee.edge.gateway.protobufB\tUserPro" +
+      "tob\006proto3"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_com_gyee_edge_gateway_protobuf_User_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_com_gyee_edge_gateway_protobuf_User_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_gyee_edge_gateway_protobuf_User_descriptor,
+        new java.lang.String[] { "Map", });
+    internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_descriptor =
+      internal_static_com_gyee_edge_gateway_protobuf_User_descriptor.getNestedTypes().get(0);
+    internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_gyee_edge_gateway_protobuf_User_MapEntry_descriptor,
+        new java.lang.String[] { "Key", "Value", });
+    internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor =
+      internal_static_com_gyee_edge_gateway_protobuf_User_descriptor.getNestedTypes().get(1);
+    internal_static_com_gyee_edge_gateway_protobuf_User_Datas_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_com_gyee_edge_gateway_protobuf_User_Datas_descriptor,
+        new java.lang.String[] { "Ts", "Value", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}

+ 16 - 0
loader/src/main/java/com/gyee/edge/loader/Bootstrap.java

@@ -0,0 +1,16 @@
+
+package com.gyee.edge.loader;
+
+
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+
+@SpringBootApplication()
+public class Bootstrap {
+
+    public static void main(String[] args) {
+        new SpringApplicationBuilder(Bootstrap.class).web(WebApplicationType.NONE).run(args);
+    }
+
+}