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

package src.main.proto;

public final class GrpcService {
  private GrpcService() {}
  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 updateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:src.main.proto.updateRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string addressFamilyID = 1;</code>
     */
    java.lang.String getAddressFamilyID();
    /**
     * <code>string addressFamilyID = 1;</code>
     */
    com.google.protobuf.ByteString
        getAddressFamilyIDBytes();

    /**
     * <code>string nextHop = 2;</code>
     */
    java.lang.String getNextHop();
    /**
     * <code>string nextHop = 2;</code>
     */
    com.google.protobuf.ByteString
        getNextHopBytes();

    /**
     * <code>string asPathSegment = 3;</code>
     */
    java.lang.String getAsPathSegment();
    /**
     * <code>string asPathSegment = 3;</code>
     */
    com.google.protobuf.ByteString
        getAsPathSegmentBytes();

    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    java.util.List<src.main.proto.GrpcService.nodeInfo> 
        getNodeList();
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    src.main.proto.GrpcService.nodeInfo getNode(int index);
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    int getNodeCount();
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> 
        getNodeOrBuilderList();
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder(
        int index);

    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    java.util.List<src.main.proto.GrpcService.linkInfo> 
        getLinkList();
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    src.main.proto.GrpcService.linkInfo getLink(int index);
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    int getLinkCount();
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> 
        getLinkOrBuilderList();
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code src.main.proto.updateRequest}
   */
  public  static final class updateRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:src.main.proto.updateRequest)
      updateRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use updateRequest.newBuilder() to construct.
    private updateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private updateRequest() {
      addressFamilyID_ = "";
      nextHop_ = "";
      asPathSegment_ = "";
      node_ = java.util.Collections.emptyList();
      link_ = java.util.Collections.emptyList();
    }

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

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

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

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

              asPathSegment_ = s;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                node_ = new java.util.ArrayList<src.main.proto.GrpcService.nodeInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              node_.add(
                  input.readMessage(src.main.proto.GrpcService.nodeInfo.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                link_ = new java.util.ArrayList<src.main.proto.GrpcService.linkInfo>();
                mutable_bitField0_ |= 0x00000002;
              }
              link_.add(
                  input.readMessage(src.main.proto.GrpcService.linkInfo.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          node_ = java.util.Collections.unmodifiableList(node_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          link_ = java.util.Collections.unmodifiableList(link_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              src.main.proto.GrpcService.updateRequest.class, src.main.proto.GrpcService.updateRequest.Builder.class);
    }

    public static final int ADDRESSFAMILYID_FIELD_NUMBER = 1;
    private volatile java.lang.Object addressFamilyID_;
    /**
     * <code>string addressFamilyID = 1;</code>
     */
    public java.lang.String getAddressFamilyID() {
      java.lang.Object ref = addressFamilyID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        addressFamilyID_ = s;
        return s;
      }
    }
    /**
     * <code>string addressFamilyID = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAddressFamilyIDBytes() {
      java.lang.Object ref = addressFamilyID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        addressFamilyID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NEXTHOP_FIELD_NUMBER = 2;
    private volatile java.lang.Object nextHop_;
    /**
     * <code>string nextHop = 2;</code>
     */
    public java.lang.String getNextHop() {
      java.lang.Object ref = nextHop_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nextHop_ = s;
        return s;
      }
    }
    /**
     * <code>string nextHop = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNextHopBytes() {
      java.lang.Object ref = nextHop_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nextHop_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ASPATHSEGMENT_FIELD_NUMBER = 3;
    private volatile java.lang.Object asPathSegment_;
    /**
     * <code>string asPathSegment = 3;</code>
     */
    public java.lang.String getAsPathSegment() {
      java.lang.Object ref = asPathSegment_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        asPathSegment_ = s;
        return s;
      }
    }
    /**
     * <code>string asPathSegment = 3;</code>
     */
    public com.google.protobuf.ByteString
        getAsPathSegmentBytes() {
      java.lang.Object ref = asPathSegment_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        asPathSegment_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NODE_FIELD_NUMBER = 4;
    private java.util.List<src.main.proto.GrpcService.nodeInfo> node_;
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    public java.util.List<src.main.proto.GrpcService.nodeInfo> getNodeList() {
      return node_;
    }
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    public java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> 
        getNodeOrBuilderList() {
      return node_;
    }
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    public int getNodeCount() {
      return node_.size();
    }
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    public src.main.proto.GrpcService.nodeInfo getNode(int index) {
      return node_.get(index);
    }
    /**
     * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
     */
    public src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder(
        int index) {
      return node_.get(index);
    }

    public static final int LINK_FIELD_NUMBER = 5;
    private java.util.List<src.main.proto.GrpcService.linkInfo> link_;
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    public java.util.List<src.main.proto.GrpcService.linkInfo> getLinkList() {
      return link_;
    }
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    public java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> 
        getLinkOrBuilderList() {
      return link_;
    }
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    public int getLinkCount() {
      return link_.size();
    }
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    public src.main.proto.GrpcService.linkInfo getLink(int index) {
      return link_.get(index);
    }
    /**
     * <pre>
     * repeated : se da la posibilidad de mandar 0 o varios
     * </pre>
     *
     * <code>repeated .src.main.proto.linkInfo link = 5;</code>
     */
    public src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder(
        int index) {
      return link_.get(index);
    }

    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 (!getAddressFamilyIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, addressFamilyID_);
      }
      if (!getNextHopBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nextHop_);
      }
      if (!getAsPathSegmentBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, asPathSegment_);
      }
      for (int i = 0; i < node_.size(); i++) {
        output.writeMessage(4, node_.get(i));
      }
      for (int i = 0; i < link_.size(); i++) {
        output.writeMessage(5, link_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getAddressFamilyIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, addressFamilyID_);
      }
      if (!getNextHopBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nextHop_);
      }
      if (!getAsPathSegmentBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, asPathSegment_);
      }
      for (int i = 0; i < node_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, node_.get(i));
      }
      for (int i = 0; i < link_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, link_.get(i));
      }
      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 src.main.proto.GrpcService.updateRequest)) {
        return super.equals(obj);
      }
      src.main.proto.GrpcService.updateRequest other = (src.main.proto.GrpcService.updateRequest) obj;

      if (!getAddressFamilyID()
          .equals(other.getAddressFamilyID())) return false;
      if (!getNextHop()
          .equals(other.getNextHop())) return false;
      if (!getAsPathSegment()
          .equals(other.getAsPathSegment())) return false;
      if (!getNodeList()
          .equals(other.getNodeList())) return false;
      if (!getLinkList()
          .equals(other.getLinkList())) 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) + ADDRESSFAMILYID_FIELD_NUMBER;
      hash = (53 * hash) + getAddressFamilyID().hashCode();
      hash = (37 * hash) + NEXTHOP_FIELD_NUMBER;
      hash = (53 * hash) + getNextHop().hashCode();
      hash = (37 * hash) + ASPATHSEGMENT_FIELD_NUMBER;
      hash = (53 * hash) + getAsPathSegment().hashCode();
      if (getNodeCount() > 0) {
        hash = (37 * hash) + NODE_FIELD_NUMBER;
        hash = (53 * hash) + getNodeList().hashCode();
      }
      if (getLinkCount() > 0) {
        hash = (37 * hash) + LINK_FIELD_NUMBER;
        hash = (53 * hash) + getLinkList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static src.main.proto.GrpcService.updateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateRequest 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 src.main.proto.GrpcService.updateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateRequest 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 src.main.proto.GrpcService.updateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateRequest 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(src.main.proto.GrpcService.updateRequest 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 src.main.proto.updateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:src.main.proto.updateRequest)
        src.main.proto.GrpcService.updateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                src.main.proto.GrpcService.updateRequest.class, src.main.proto.GrpcService.updateRequest.Builder.class);
      }

      // Construct using src.main.proto.GrpcService.updateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        nextHop_ = "";

        asPathSegment_ = "";

        if (nodeBuilder_ == null) {
          node_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          nodeBuilder_.clear();
        }
        if (linkBuilder_ == null) {
          link_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          linkBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateRequest_descriptor;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateRequest getDefaultInstanceForType() {
        return src.main.proto.GrpcService.updateRequest.getDefaultInstance();
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateRequest build() {
        src.main.proto.GrpcService.updateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateRequest buildPartial() {
        src.main.proto.GrpcService.updateRequest result = new src.main.proto.GrpcService.updateRequest(this);
        int from_bitField0_ = bitField0_;
        result.addressFamilyID_ = addressFamilyID_;
        result.nextHop_ = nextHop_;
        result.asPathSegment_ = asPathSegment_;
        if (nodeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            node_ = java.util.Collections.unmodifiableList(node_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.node_ = node_;
        } else {
          result.node_ = nodeBuilder_.build();
        }
        if (linkBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            link_ = java.util.Collections.unmodifiableList(link_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.link_ = link_;
        } else {
          result.link_ = linkBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(src.main.proto.GrpcService.updateRequest other) {
        if (other == src.main.proto.GrpcService.updateRequest.getDefaultInstance()) return this;
        if (!other.getAddressFamilyID().isEmpty()) {
          addressFamilyID_ = other.addressFamilyID_;
          onChanged();
        }
        if (!other.getNextHop().isEmpty()) {
          nextHop_ = other.nextHop_;
          onChanged();
        }
        if (!other.getAsPathSegment().isEmpty()) {
          asPathSegment_ = other.asPathSegment_;
          onChanged();
        }
        if (nodeBuilder_ == null) {
          if (!other.node_.isEmpty()) {
            if (node_.isEmpty()) {
              node_ = other.node_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodeIsMutable();
              node_.addAll(other.node_);
            }
            onChanged();
          }
        } else {
          if (!other.node_.isEmpty()) {
            if (nodeBuilder_.isEmpty()) {
              nodeBuilder_.dispose();
              nodeBuilder_ = null;
              node_ = other.node_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNodeFieldBuilder() : null;
            } else {
              nodeBuilder_.addAllMessages(other.node_);
            }
          }
        }
        if (linkBuilder_ == null) {
          if (!other.link_.isEmpty()) {
            if (link_.isEmpty()) {
              link_ = other.link_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLinkIsMutable();
              link_.addAll(other.link_);
            }
            onChanged();
          }
        } else {
          if (!other.link_.isEmpty()) {
            if (linkBuilder_.isEmpty()) {
              linkBuilder_.dispose();
              linkBuilder_ = null;
              link_ = other.link_;
              bitField0_ = (bitField0_ & ~0x00000002);
              linkBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLinkFieldBuilder() : null;
            } else {
              linkBuilder_.addAllMessages(other.link_);
            }
          }
        }
        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 {
        src.main.proto.GrpcService.updateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (src.main.proto.GrpcService.updateRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object addressFamilyID_ = "";
      /**
       * <code>string addressFamilyID = 1;</code>
       */
      public java.lang.String getAddressFamilyID() {
        java.lang.Object ref = addressFamilyID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          addressFamilyID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string addressFamilyID = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAddressFamilyIDBytes() {
        java.lang.Object ref = addressFamilyID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          addressFamilyID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string addressFamilyID = 1;</code>
       */
      public Builder setAddressFamilyID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        addressFamilyID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string addressFamilyID = 1;</code>
       */
      public Builder clearAddressFamilyID() {
        
        addressFamilyID_ = getDefaultInstance().getAddressFamilyID();
        onChanged();
        return this;
      }
      /**
       * <code>string addressFamilyID = 1;</code>
       */
      public Builder setAddressFamilyIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        addressFamilyID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object nextHop_ = "";
      /**
       * <code>string nextHop = 2;</code>
       */
      public java.lang.String getNextHop() {
        java.lang.Object ref = nextHop_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          nextHop_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string nextHop = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNextHopBytes() {
        java.lang.Object ref = nextHop_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nextHop_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string nextHop = 2;</code>
       */
      public Builder setNextHop(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nextHop_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string nextHop = 2;</code>
       */
      public Builder clearNextHop() {
        
        nextHop_ = getDefaultInstance().getNextHop();
        onChanged();
        return this;
      }
      /**
       * <code>string nextHop = 2;</code>
       */
      public Builder setNextHopBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nextHop_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object asPathSegment_ = "";
      /**
       * <code>string asPathSegment = 3;</code>
       */
      public java.lang.String getAsPathSegment() {
        java.lang.Object ref = asPathSegment_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          asPathSegment_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string asPathSegment = 3;</code>
       */
      public com.google.protobuf.ByteString
          getAsPathSegmentBytes() {
        java.lang.Object ref = asPathSegment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          asPathSegment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string asPathSegment = 3;</code>
       */
      public Builder setAsPathSegment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        asPathSegment_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string asPathSegment = 3;</code>
       */
      public Builder clearAsPathSegment() {
        
        asPathSegment_ = getDefaultInstance().getAsPathSegment();
        onChanged();
        return this;
      }
      /**
       * <code>string asPathSegment = 3;</code>
       */
      public Builder setAsPathSegmentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        asPathSegment_ = value;
        onChanged();
        return this;
      }

      private java.util.List<src.main.proto.GrpcService.nodeInfo> node_ =
        java.util.Collections.emptyList();
      private void ensureNodeIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          node_ = new java.util.ArrayList<src.main.proto.GrpcService.nodeInfo>(node_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder> nodeBuilder_;

      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public java.util.List<src.main.proto.GrpcService.nodeInfo> getNodeList() {
        if (nodeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(node_);
        } else {
          return nodeBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public int getNodeCount() {
        if (nodeBuilder_ == null) {
          return node_.size();
        } else {
          return nodeBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public src.main.proto.GrpcService.nodeInfo getNode(int index) {
        if (nodeBuilder_ == null) {
          return node_.get(index);
        } else {
          return nodeBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder setNode(
          int index, src.main.proto.GrpcService.nodeInfo value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.set(index, value);
          onChanged();
        } else {
          nodeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder setNode(
          int index, src.main.proto.GrpcService.nodeInfo.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder addNode(src.main.proto.GrpcService.nodeInfo value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.add(value);
          onChanged();
        } else {
          nodeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder addNode(
          int index, src.main.proto.GrpcService.nodeInfo value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeIsMutable();
          node_.add(index, value);
          onChanged();
        } else {
          nodeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder addNode(
          src.main.proto.GrpcService.nodeInfo.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.add(builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder addNode(
          int index, src.main.proto.GrpcService.nodeInfo.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder addAllNode(
          java.lang.Iterable<? extends src.main.proto.GrpcService.nodeInfo> values) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, node_);
          onChanged();
        } else {
          nodeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder clearNode() {
        if (nodeBuilder_ == null) {
          node_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public Builder removeNode(int index) {
        if (nodeBuilder_ == null) {
          ensureNodeIsMutable();
          node_.remove(index);
          onChanged();
        } else {
          nodeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public src.main.proto.GrpcService.nodeInfo.Builder getNodeBuilder(
          int index) {
        return getNodeFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public src.main.proto.GrpcService.nodeInfoOrBuilder getNodeOrBuilder(
          int index) {
        if (nodeBuilder_ == null) {
          return node_.get(index);  } else {
          return nodeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public java.util.List<? extends src.main.proto.GrpcService.nodeInfoOrBuilder> 
           getNodeOrBuilderList() {
        if (nodeBuilder_ != null) {
          return nodeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(node_);
        }
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public src.main.proto.GrpcService.nodeInfo.Builder addNodeBuilder() {
        return getNodeFieldBuilder().addBuilder(
            src.main.proto.GrpcService.nodeInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public src.main.proto.GrpcService.nodeInfo.Builder addNodeBuilder(
          int index) {
        return getNodeFieldBuilder().addBuilder(
            index, src.main.proto.GrpcService.nodeInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .src.main.proto.nodeInfo node = 4;</code>
       */
      public java.util.List<src.main.proto.GrpcService.nodeInfo.Builder> 
           getNodeBuilderList() {
        return getNodeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder> 
          getNodeFieldBuilder() {
        if (nodeBuilder_ == null) {
          nodeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              src.main.proto.GrpcService.nodeInfo, src.main.proto.GrpcService.nodeInfo.Builder, src.main.proto.GrpcService.nodeInfoOrBuilder>(
                  node_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          node_ = null;
        }
        return nodeBuilder_;
      }

      private java.util.List<src.main.proto.GrpcService.linkInfo> link_ =
        java.util.Collections.emptyList();
      private void ensureLinkIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          link_ = new java.util.ArrayList<src.main.proto.GrpcService.linkInfo>(link_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder> linkBuilder_;

      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public java.util.List<src.main.proto.GrpcService.linkInfo> getLinkList() {
        if (linkBuilder_ == null) {
          return java.util.Collections.unmodifiableList(link_);
        } else {
          return linkBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public int getLinkCount() {
        if (linkBuilder_ == null) {
          return link_.size();
        } else {
          return linkBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public src.main.proto.GrpcService.linkInfo getLink(int index) {
        if (linkBuilder_ == null) {
          return link_.get(index);
        } else {
          return linkBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder setLink(
          int index, src.main.proto.GrpcService.linkInfo value) {
        if (linkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIsMutable();
          link_.set(index, value);
          onChanged();
        } else {
          linkBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder setLink(
          int index, src.main.proto.GrpcService.linkInfo.Builder builderForValue) {
        if (linkBuilder_ == null) {
          ensureLinkIsMutable();
          link_.set(index, builderForValue.build());
          onChanged();
        } else {
          linkBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder addLink(src.main.proto.GrpcService.linkInfo value) {
        if (linkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIsMutable();
          link_.add(value);
          onChanged();
        } else {
          linkBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder addLink(
          int index, src.main.proto.GrpcService.linkInfo value) {
        if (linkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLinkIsMutable();
          link_.add(index, value);
          onChanged();
        } else {
          linkBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder addLink(
          src.main.proto.GrpcService.linkInfo.Builder builderForValue) {
        if (linkBuilder_ == null) {
          ensureLinkIsMutable();
          link_.add(builderForValue.build());
          onChanged();
        } else {
          linkBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder addLink(
          int index, src.main.proto.GrpcService.linkInfo.Builder builderForValue) {
        if (linkBuilder_ == null) {
          ensureLinkIsMutable();
          link_.add(index, builderForValue.build());
          onChanged();
        } else {
          linkBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder addAllLink(
          java.lang.Iterable<? extends src.main.proto.GrpcService.linkInfo> values) {
        if (linkBuilder_ == null) {
          ensureLinkIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, link_);
          onChanged();
        } else {
          linkBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder clearLink() {
        if (linkBuilder_ == null) {
          link_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          linkBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public Builder removeLink(int index) {
        if (linkBuilder_ == null) {
          ensureLinkIsMutable();
          link_.remove(index);
          onChanged();
        } else {
          linkBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public src.main.proto.GrpcService.linkInfo.Builder getLinkBuilder(
          int index) {
        return getLinkFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public src.main.proto.GrpcService.linkInfoOrBuilder getLinkOrBuilder(
          int index) {
        if (linkBuilder_ == null) {
          return link_.get(index);  } else {
          return linkBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public java.util.List<? extends src.main.proto.GrpcService.linkInfoOrBuilder> 
           getLinkOrBuilderList() {
        if (linkBuilder_ != null) {
          return linkBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(link_);
        }
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public src.main.proto.GrpcService.linkInfo.Builder addLinkBuilder() {
        return getLinkFieldBuilder().addBuilder(
            src.main.proto.GrpcService.linkInfo.getDefaultInstance());
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public src.main.proto.GrpcService.linkInfo.Builder addLinkBuilder(
          int index) {
        return getLinkFieldBuilder().addBuilder(
            index, src.main.proto.GrpcService.linkInfo.getDefaultInstance());
      }
      /**
       * <pre>
       * repeated : se da la posibilidad de mandar 0 o varios
       * </pre>
       *
       * <code>repeated .src.main.proto.linkInfo link = 5;</code>
       */
      public java.util.List<src.main.proto.GrpcService.linkInfo.Builder> 
           getLinkBuilderList() {
        return getLinkFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder> 
          getLinkFieldBuilder() {
        if (linkBuilder_ == null) {
          linkBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              src.main.proto.GrpcService.linkInfo, src.main.proto.GrpcService.linkInfo.Builder, src.main.proto.GrpcService.linkInfoOrBuilder>(
                  link_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          link_ = null;
        }
        return linkBuilder_;
      }
      @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:src.main.proto.updateRequest)
    }

    // @@protoc_insertion_point(class_scope:src.main.proto.updateRequest)
    private static final src.main.proto.GrpcService.updateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new src.main.proto.GrpcService.updateRequest();
    }

    public static src.main.proto.GrpcService.updateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public src.main.proto.GrpcService.updateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface nodeInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:src.main.proto.nodeInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string nodeName = 1;</code>
     */
    java.lang.String getNodeName();
    /**
     * <code>string nodeName = 1;</code>
     */
    com.google.protobuf.ByteString
        getNodeNameBytes();

    /**
     * <code>string igpID = 2;</code>
     */
    java.lang.String getIgpID();
    /**
     * <code>string igpID = 2;</code>
     */
    com.google.protobuf.ByteString
        getIgpIDBytes();

    /**
     * <code>string bgplsID = 3;</code>
     */
    java.lang.String getBgplsID();
    /**
     * <code>string bgplsID = 3;</code>
     */
    com.google.protobuf.ByteString
        getBgplsIDBytes();

    /**
     * <code>int32 asID = 4;</code>
     */
    int getAsID();

    /**
     * <code>string learntFrom = 5;</code>
     */
    java.lang.String getLearntFrom();
    /**
     * <code>string learntFrom = 5;</code>
     */
    com.google.protobuf.ByteString
        getLearntFromBytes();
  }
  /**
   * Protobuf type {@code src.main.proto.nodeInfo}
   */
  public  static final class nodeInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:src.main.proto.nodeInfo)
      nodeInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use nodeInfo.newBuilder() to construct.
    private nodeInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private nodeInfo() {
      nodeName_ = "";
      igpID_ = "";
      bgplsID_ = "";
      learntFrom_ = "";
    }

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

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

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

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

              bgplsID_ = s;
              break;
            }
            case 32: {

              asID_ = input.readInt32();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              learntFrom_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.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 src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              src.main.proto.GrpcService.nodeInfo.class, src.main.proto.GrpcService.nodeInfo.Builder.class);
    }

    public static final int NODENAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object nodeName_;
    /**
     * <code>string nodeName = 1;</code>
     */
    public java.lang.String getNodeName() {
      java.lang.Object ref = nodeName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nodeName_ = s;
        return s;
      }
    }
    /**
     * <code>string nodeName = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNodeNameBytes() {
      java.lang.Object ref = nodeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IGPID_FIELD_NUMBER = 2;
    private volatile java.lang.Object igpID_;
    /**
     * <code>string igpID = 2;</code>
     */
    public java.lang.String getIgpID() {
      java.lang.Object ref = igpID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        igpID_ = s;
        return s;
      }
    }
    /**
     * <code>string igpID = 2;</code>
     */
    public com.google.protobuf.ByteString
        getIgpIDBytes() {
      java.lang.Object ref = igpID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        igpID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BGPLSID_FIELD_NUMBER = 3;
    private volatile java.lang.Object bgplsID_;
    /**
     * <code>string bgplsID = 3;</code>
     */
    public java.lang.String getBgplsID() {
      java.lang.Object ref = bgplsID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        bgplsID_ = s;
        return s;
      }
    }
    /**
     * <code>string bgplsID = 3;</code>
     */
    public com.google.protobuf.ByteString
        getBgplsIDBytes() {
      java.lang.Object ref = bgplsID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bgplsID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ASID_FIELD_NUMBER = 4;
    private int asID_;
    /**
     * <code>int32 asID = 4;</code>
     */
    public int getAsID() {
      return asID_;
    }

    public static final int LEARNTFROM_FIELD_NUMBER = 5;
    private volatile java.lang.Object learntFrom_;
    /**
     * <code>string learntFrom = 5;</code>
     */
    public java.lang.String getLearntFrom() {
      java.lang.Object ref = learntFrom_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        learntFrom_ = s;
        return s;
      }
    }
    /**
     * <code>string learntFrom = 5;</code>
     */
    public com.google.protobuf.ByteString
        getLearntFromBytes() {
      java.lang.Object ref = learntFrom_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        learntFrom_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNodeNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, nodeName_);
      }
      if (!getIgpIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, igpID_);
      }
      if (!getBgplsIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, bgplsID_);
      }
      if (asID_ != 0) {
        output.writeInt32(4, asID_);
      }
      if (!getLearntFromBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, learntFrom_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getNodeNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, nodeName_);
      }
      if (!getIgpIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, igpID_);
      }
      if (!getBgplsIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, bgplsID_);
      }
      if (asID_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, asID_);
      }
      if (!getLearntFromBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, learntFrom_);
      }
      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 src.main.proto.GrpcService.nodeInfo)) {
        return super.equals(obj);
      }
      src.main.proto.GrpcService.nodeInfo other = (src.main.proto.GrpcService.nodeInfo) obj;

      if (!getNodeName()
          .equals(other.getNodeName())) return false;
      if (!getIgpID()
          .equals(other.getIgpID())) return false;
      if (!getBgplsID()
          .equals(other.getBgplsID())) return false;
      if (getAsID()
          != other.getAsID()) return false;
      if (!getLearntFrom()
          .equals(other.getLearntFrom())) 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) + NODENAME_FIELD_NUMBER;
      hash = (53 * hash) + getNodeName().hashCode();
      hash = (37 * hash) + IGPID_FIELD_NUMBER;
      hash = (53 * hash) + getIgpID().hashCode();
      hash = (37 * hash) + BGPLSID_FIELD_NUMBER;
      hash = (53 * hash) + getBgplsID().hashCode();
      hash = (37 * hash) + ASID_FIELD_NUMBER;
      hash = (53 * hash) + getAsID();
      hash = (37 * hash) + LEARNTFROM_FIELD_NUMBER;
      hash = (53 * hash) + getLearntFrom().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static src.main.proto.GrpcService.nodeInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.nodeInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.nodeInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(src.main.proto.GrpcService.nodeInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code src.main.proto.nodeInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:src.main.proto.nodeInfo)
        src.main.proto.GrpcService.nodeInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                src.main.proto.GrpcService.nodeInfo.class, src.main.proto.GrpcService.nodeInfo.Builder.class);
      }

      // Construct using src.main.proto.GrpcService.nodeInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        igpID_ = "";

        bgplsID_ = "";

        asID_ = 0;

        learntFrom_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_nodeInfo_descriptor;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.nodeInfo getDefaultInstanceForType() {
        return src.main.proto.GrpcService.nodeInfo.getDefaultInstance();
      }

      @java.lang.Override
      public src.main.proto.GrpcService.nodeInfo build() {
        src.main.proto.GrpcService.nodeInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.nodeInfo buildPartial() {
        src.main.proto.GrpcService.nodeInfo result = new src.main.proto.GrpcService.nodeInfo(this);
        result.nodeName_ = nodeName_;
        result.igpID_ = igpID_;
        result.bgplsID_ = bgplsID_;
        result.asID_ = asID_;
        result.learntFrom_ = learntFrom_;
        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 src.main.proto.GrpcService.nodeInfo) {
          return mergeFrom((src.main.proto.GrpcService.nodeInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(src.main.proto.GrpcService.nodeInfo other) {
        if (other == src.main.proto.GrpcService.nodeInfo.getDefaultInstance()) return this;
        if (!other.getNodeName().isEmpty()) {
          nodeName_ = other.nodeName_;
          onChanged();
        }
        if (!other.getIgpID().isEmpty()) {
          igpID_ = other.igpID_;
          onChanged();
        }
        if (!other.getBgplsID().isEmpty()) {
          bgplsID_ = other.bgplsID_;
          onChanged();
        }
        if (other.getAsID() != 0) {
          setAsID(other.getAsID());
        }
        if (!other.getLearntFrom().isEmpty()) {
          learntFrom_ = other.learntFrom_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object nodeName_ = "";
      /**
       * <code>string nodeName = 1;</code>
       */
      public java.lang.String getNodeName() {
        java.lang.Object ref = nodeName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          nodeName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string nodeName = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNodeNameBytes() {
        java.lang.Object ref = nodeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string nodeName = 1;</code>
       */
      public Builder setNodeName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nodeName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string nodeName = 1;</code>
       */
      public Builder clearNodeName() {
        
        nodeName_ = getDefaultInstance().getNodeName();
        onChanged();
        return this;
      }
      /**
       * <code>string nodeName = 1;</code>
       */
      public Builder setNodeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nodeName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object igpID_ = "";
      /**
       * <code>string igpID = 2;</code>
       */
      public java.lang.String getIgpID() {
        java.lang.Object ref = igpID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          igpID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string igpID = 2;</code>
       */
      public com.google.protobuf.ByteString
          getIgpIDBytes() {
        java.lang.Object ref = igpID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          igpID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string igpID = 2;</code>
       */
      public Builder setIgpID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        igpID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string igpID = 2;</code>
       */
      public Builder clearIgpID() {
        
        igpID_ = getDefaultInstance().getIgpID();
        onChanged();
        return this;
      }
      /**
       * <code>string igpID = 2;</code>
       */
      public Builder setIgpIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        igpID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object bgplsID_ = "";
      /**
       * <code>string bgplsID = 3;</code>
       */
      public java.lang.String getBgplsID() {
        java.lang.Object ref = bgplsID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bgplsID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string bgplsID = 3;</code>
       */
      public com.google.protobuf.ByteString
          getBgplsIDBytes() {
        java.lang.Object ref = bgplsID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bgplsID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string bgplsID = 3;</code>
       */
      public Builder setBgplsID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bgplsID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string bgplsID = 3;</code>
       */
      public Builder clearBgplsID() {
        
        bgplsID_ = getDefaultInstance().getBgplsID();
        onChanged();
        return this;
      }
      /**
       * <code>string bgplsID = 3;</code>
       */
      public Builder setBgplsIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bgplsID_ = value;
        onChanged();
        return this;
      }

      private int asID_ ;
      /**
       * <code>int32 asID = 4;</code>
       */
      public int getAsID() {
        return asID_;
      }
      /**
       * <code>int32 asID = 4;</code>
       */
      public Builder setAsID(int value) {
        
        asID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 asID = 4;</code>
       */
      public Builder clearAsID() {
        
        asID_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object learntFrom_ = "";
      /**
       * <code>string learntFrom = 5;</code>
       */
      public java.lang.String getLearntFrom() {
        java.lang.Object ref = learntFrom_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          learntFrom_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string learntFrom = 5;</code>
       */
      public com.google.protobuf.ByteString
          getLearntFromBytes() {
        java.lang.Object ref = learntFrom_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          learntFrom_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string learntFrom = 5;</code>
       */
      public Builder setLearntFrom(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        learntFrom_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string learntFrom = 5;</code>
       */
      public Builder clearLearntFrom() {
        
        learntFrom_ = getDefaultInstance().getLearntFrom();
        onChanged();
        return this;
      }
      /**
       * <code>string learntFrom = 5;</code>
       */
      public Builder setLearntFromBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        learntFrom_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:src.main.proto.nodeInfo)
    }

    // @@protoc_insertion_point(class_scope:src.main.proto.nodeInfo)
    private static final src.main.proto.GrpcService.nodeInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new src.main.proto.GrpcService.nodeInfo();
    }

    public static src.main.proto.GrpcService.nodeInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public src.main.proto.GrpcService.nodeInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface linkInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:src.main.proto.linkInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string remoteID = 1;</code>
     */
    java.lang.String getRemoteID();
    /**
     * <code>string remoteID = 1;</code>
     */
    com.google.protobuf.ByteString
        getRemoteIDBytes();

    /**
     * <code>string localID = 2;</code>
     */
    java.lang.String getLocalID();
    /**
     * <code>string localID = 2;</code>
     */
    com.google.protobuf.ByteString
        getLocalIDBytes();

    /**
     * <code>string remoteIPv4ID = 3;</code>
     */
    java.lang.String getRemoteIPv4ID();
    /**
     * <code>string remoteIPv4ID = 3;</code>
     */
    com.google.protobuf.ByteString
        getRemoteIPv4IDBytes();

    /**
     * <code>string localIPv4ID = 4;</code>
     */
    java.lang.String getLocalIPv4ID();
    /**
     * <code>string localIPv4ID = 4;</code>
     */
    com.google.protobuf.ByteString
        getLocalIPv4IDBytes();

    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    boolean hasLocal();
    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    src.main.proto.GrpcService.NodeDescriptors getLocal();
    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder();

    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    boolean hasRemote();
    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    src.main.proto.GrpcService.NodeDescriptors getRemote();
    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder();

    /**
     * <code>float availableBw = 7;</code>
     */
    float getAvailableBw();

    /**
     * <code>float residualBw = 8;</code>
     */
    float getResidualBw();

    /**
     * <code>float utilized = 9;</code>
     */
    float getUtilized();

    /**
     * <code>float maxLinkDelay = 10;</code>
     */
    float getMaxLinkDelay();

    /**
     * <code>float minLinkDelay = 11;</code>
     */
    float getMinLinkDelay();

    /**
     * <code>float delayVariation = 12;</code>
     */
    float getDelayVariation();

    /**
     * <code>float delay = 13;</code>
     */
    float getDelay();

    /**
     * <code>int32 TEDefaultMetric = 14;</code>
     */
    int getTEDefaultMetric();

    /**
     * <code>string adjacencySid = 15;</code>
     */
    java.lang.String getAdjacencySid();
    /**
     * <code>string adjacencySid = 15;</code>
     */
    com.google.protobuf.ByteString
        getAdjacencySidBytes();

    /**
     * <code>string learntFrom = 16;</code>
     */
    java.lang.String getLearntFrom();
    /**
     * <code>string learntFrom = 16;</code>
     */
    com.google.protobuf.ByteString
        getLearntFromBytes();
  }
  /**
   * Protobuf type {@code src.main.proto.linkInfo}
   */
  public  static final class linkInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:src.main.proto.linkInfo)
      linkInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use linkInfo.newBuilder() to construct.
    private linkInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private linkInfo() {
      remoteID_ = "";
      localID_ = "";
      remoteIPv4ID_ = "";
      localIPv4ID_ = "";
      adjacencySid_ = "";
      learntFrom_ = "";
    }

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

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

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

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

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

              localIPv4ID_ = s;
              break;
            }
            case 42: {
              src.main.proto.GrpcService.NodeDescriptors.Builder subBuilder = null;
              if (local_ != null) {
                subBuilder = local_.toBuilder();
              }
              local_ = input.readMessage(src.main.proto.GrpcService.NodeDescriptors.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(local_);
                local_ = subBuilder.buildPartial();
              }

              break;
            }
            case 50: {
              src.main.proto.GrpcService.NodeDescriptors.Builder subBuilder = null;
              if (remote_ != null) {
                subBuilder = remote_.toBuilder();
              }
              remote_ = input.readMessage(src.main.proto.GrpcService.NodeDescriptors.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(remote_);
                remote_ = subBuilder.buildPartial();
              }

              break;
            }
            case 61: {

              availableBw_ = input.readFloat();
              break;
            }
            case 69: {

              residualBw_ = input.readFloat();
              break;
            }
            case 77: {

              utilized_ = input.readFloat();
              break;
            }
            case 85: {

              maxLinkDelay_ = input.readFloat();
              break;
            }
            case 93: {

              minLinkDelay_ = input.readFloat();
              break;
            }
            case 101: {

              delayVariation_ = input.readFloat();
              break;
            }
            case 109: {

              delay_ = input.readFloat();
              break;
            }
            case 112: {

              tEDefaultMetric_ = input.readInt32();
              break;
            }
            case 122: {
              java.lang.String s = input.readStringRequireUtf8();

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

              learntFrom_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.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 src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              src.main.proto.GrpcService.linkInfo.class, src.main.proto.GrpcService.linkInfo.Builder.class);
    }

    public static final int REMOTEID_FIELD_NUMBER = 1;
    private volatile java.lang.Object remoteID_;
    /**
     * <code>string remoteID = 1;</code>
     */
    public java.lang.String getRemoteID() {
      java.lang.Object ref = remoteID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        remoteID_ = s;
        return s;
      }
    }
    /**
     * <code>string remoteID = 1;</code>
     */
    public com.google.protobuf.ByteString
        getRemoteIDBytes() {
      java.lang.Object ref = remoteID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        remoteID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCALID_FIELD_NUMBER = 2;
    private volatile java.lang.Object localID_;
    /**
     * <code>string localID = 2;</code>
     */
    public java.lang.String getLocalID() {
      java.lang.Object ref = localID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        localID_ = s;
        return s;
      }
    }
    /**
     * <code>string localID = 2;</code>
     */
    public com.google.protobuf.ByteString
        getLocalIDBytes() {
      java.lang.Object ref = localID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        localID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REMOTEIPV4ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object remoteIPv4ID_;
    /**
     * <code>string remoteIPv4ID = 3;</code>
     */
    public java.lang.String getRemoteIPv4ID() {
      java.lang.Object ref = remoteIPv4ID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        remoteIPv4ID_ = s;
        return s;
      }
    }
    /**
     * <code>string remoteIPv4ID = 3;</code>
     */
    public com.google.protobuf.ByteString
        getRemoteIPv4IDBytes() {
      java.lang.Object ref = remoteIPv4ID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        remoteIPv4ID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCALIPV4ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object localIPv4ID_;
    /**
     * <code>string localIPv4ID = 4;</code>
     */
    public java.lang.String getLocalIPv4ID() {
      java.lang.Object ref = localIPv4ID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        localIPv4ID_ = s;
        return s;
      }
    }
    /**
     * <code>string localIPv4ID = 4;</code>
     */
    public com.google.protobuf.ByteString
        getLocalIPv4IDBytes() {
      java.lang.Object ref = localIPv4ID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        localIPv4ID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCAL_FIELD_NUMBER = 5;
    private src.main.proto.GrpcService.NodeDescriptors local_;
    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    public boolean hasLocal() {
      return local_ != null;
    }
    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    public src.main.proto.GrpcService.NodeDescriptors getLocal() {
      return local_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_;
    }
    /**
     * <code>.src.main.proto.NodeDescriptors local = 5;</code>
     */
    public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder() {
      return getLocal();
    }

    public static final int REMOTE_FIELD_NUMBER = 6;
    private src.main.proto.GrpcService.NodeDescriptors remote_;
    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    public boolean hasRemote() {
      return remote_ != null;
    }
    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    public src.main.proto.GrpcService.NodeDescriptors getRemote() {
      return remote_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_;
    }
    /**
     * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
     */
    public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder() {
      return getRemote();
    }

    public static final int AVAILABLEBW_FIELD_NUMBER = 7;
    private float availableBw_;
    /**
     * <code>float availableBw = 7;</code>
     */
    public float getAvailableBw() {
      return availableBw_;
    }

    public static final int RESIDUALBW_FIELD_NUMBER = 8;
    private float residualBw_;
    /**
     * <code>float residualBw = 8;</code>
     */
    public float getResidualBw() {
      return residualBw_;
    }

    public static final int UTILIZED_FIELD_NUMBER = 9;
    private float utilized_;
    /**
     * <code>float utilized = 9;</code>
     */
    public float getUtilized() {
      return utilized_;
    }

    public static final int MAXLINKDELAY_FIELD_NUMBER = 10;
    private float maxLinkDelay_;
    /**
     * <code>float maxLinkDelay = 10;</code>
     */
    public float getMaxLinkDelay() {
      return maxLinkDelay_;
    }

    public static final int MINLINKDELAY_FIELD_NUMBER = 11;
    private float minLinkDelay_;
    /**
     * <code>float minLinkDelay = 11;</code>
     */
    public float getMinLinkDelay() {
      return minLinkDelay_;
    }

    public static final int DELAYVARIATION_FIELD_NUMBER = 12;
    private float delayVariation_;
    /**
     * <code>float delayVariation = 12;</code>
     */
    public float getDelayVariation() {
      return delayVariation_;
    }

    public static final int DELAY_FIELD_NUMBER = 13;
    private float delay_;
    /**
     * <code>float delay = 13;</code>
     */
    public float getDelay() {
      return delay_;
    }

    public static final int TEDEFAULTMETRIC_FIELD_NUMBER = 14;
    private int tEDefaultMetric_;
    /**
     * <code>int32 TEDefaultMetric = 14;</code>
     */
    public int getTEDefaultMetric() {
      return tEDefaultMetric_;
    }

    public static final int ADJACENCYSID_FIELD_NUMBER = 15;
    private volatile java.lang.Object adjacencySid_;
    /**
     * <code>string adjacencySid = 15;</code>
     */
    public java.lang.String getAdjacencySid() {
      java.lang.Object ref = adjacencySid_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        adjacencySid_ = s;
        return s;
      }
    }
    /**
     * <code>string adjacencySid = 15;</code>
     */
    public com.google.protobuf.ByteString
        getAdjacencySidBytes() {
      java.lang.Object ref = adjacencySid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        adjacencySid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LEARNTFROM_FIELD_NUMBER = 16;
    private volatile java.lang.Object learntFrom_;
    /**
     * <code>string learntFrom = 16;</code>
     */
    public java.lang.String getLearntFrom() {
      java.lang.Object ref = learntFrom_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        learntFrom_ = s;
        return s;
      }
    }
    /**
     * <code>string learntFrom = 16;</code>
     */
    public com.google.protobuf.ByteString
        getLearntFromBytes() {
      java.lang.Object ref = learntFrom_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        learntFrom_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getRemoteIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, remoteID_);
      }
      if (!getLocalIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, localID_);
      }
      if (!getRemoteIPv4IDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, remoteIPv4ID_);
      }
      if (!getLocalIPv4IDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, localIPv4ID_);
      }
      if (local_ != null) {
        output.writeMessage(5, getLocal());
      }
      if (remote_ != null) {
        output.writeMessage(6, getRemote());
      }
      if (availableBw_ != 0F) {
        output.writeFloat(7, availableBw_);
      }
      if (residualBw_ != 0F) {
        output.writeFloat(8, residualBw_);
      }
      if (utilized_ != 0F) {
        output.writeFloat(9, utilized_);
      }
      if (maxLinkDelay_ != 0F) {
        output.writeFloat(10, maxLinkDelay_);
      }
      if (minLinkDelay_ != 0F) {
        output.writeFloat(11, minLinkDelay_);
      }
      if (delayVariation_ != 0F) {
        output.writeFloat(12, delayVariation_);
      }
      if (delay_ != 0F) {
        output.writeFloat(13, delay_);
      }
      if (tEDefaultMetric_ != 0) {
        output.writeInt32(14, tEDefaultMetric_);
      }
      if (!getAdjacencySidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, adjacencySid_);
      }
      if (!getLearntFromBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, learntFrom_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getRemoteIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, remoteID_);
      }
      if (!getLocalIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, localID_);
      }
      if (!getRemoteIPv4IDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, remoteIPv4ID_);
      }
      if (!getLocalIPv4IDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, localIPv4ID_);
      }
      if (local_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getLocal());
      }
      if (remote_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getRemote());
      }
      if (availableBw_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(7, availableBw_);
      }
      if (residualBw_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(8, residualBw_);
      }
      if (utilized_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(9, utilized_);
      }
      if (maxLinkDelay_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(10, maxLinkDelay_);
      }
      if (minLinkDelay_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(11, minLinkDelay_);
      }
      if (delayVariation_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(12, delayVariation_);
      }
      if (delay_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(13, delay_);
      }
      if (tEDefaultMetric_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, tEDefaultMetric_);
      }
      if (!getAdjacencySidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, adjacencySid_);
      }
      if (!getLearntFromBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, learntFrom_);
      }
      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 src.main.proto.GrpcService.linkInfo)) {
        return super.equals(obj);
      }
      src.main.proto.GrpcService.linkInfo other = (src.main.proto.GrpcService.linkInfo) obj;

      if (!getRemoteID()
          .equals(other.getRemoteID())) return false;
      if (!getLocalID()
          .equals(other.getLocalID())) return false;
      if (!getRemoteIPv4ID()
          .equals(other.getRemoteIPv4ID())) return false;
      if (!getLocalIPv4ID()
          .equals(other.getLocalIPv4ID())) return false;
      if (hasLocal() != other.hasLocal()) return false;
      if (hasLocal()) {
        if (!getLocal()
            .equals(other.getLocal())) return false;
      }
      if (hasRemote() != other.hasRemote()) return false;
      if (hasRemote()) {
        if (!getRemote()
            .equals(other.getRemote())) return false;
      }
      if (java.lang.Float.floatToIntBits(getAvailableBw())
          != java.lang.Float.floatToIntBits(
              other.getAvailableBw())) return false;
      if (java.lang.Float.floatToIntBits(getResidualBw())
          != java.lang.Float.floatToIntBits(
              other.getResidualBw())) return false;
      if (java.lang.Float.floatToIntBits(getUtilized())
          != java.lang.Float.floatToIntBits(
              other.getUtilized())) return false;
      if (java.lang.Float.floatToIntBits(getMaxLinkDelay())
          != java.lang.Float.floatToIntBits(
              other.getMaxLinkDelay())) return false;
      if (java.lang.Float.floatToIntBits(getMinLinkDelay())
          != java.lang.Float.floatToIntBits(
              other.getMinLinkDelay())) return false;
      if (java.lang.Float.floatToIntBits(getDelayVariation())
          != java.lang.Float.floatToIntBits(
              other.getDelayVariation())) return false;
      if (java.lang.Float.floatToIntBits(getDelay())
          != java.lang.Float.floatToIntBits(
              other.getDelay())) return false;
      if (getTEDefaultMetric()
          != other.getTEDefaultMetric()) return false;
      if (!getAdjacencySid()
          .equals(other.getAdjacencySid())) return false;
      if (!getLearntFrom()
          .equals(other.getLearntFrom())) 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) + REMOTEID_FIELD_NUMBER;
      hash = (53 * hash) + getRemoteID().hashCode();
      hash = (37 * hash) + LOCALID_FIELD_NUMBER;
      hash = (53 * hash) + getLocalID().hashCode();
      hash = (37 * hash) + REMOTEIPV4ID_FIELD_NUMBER;
      hash = (53 * hash) + getRemoteIPv4ID().hashCode();
      hash = (37 * hash) + LOCALIPV4ID_FIELD_NUMBER;
      hash = (53 * hash) + getLocalIPv4ID().hashCode();
      if (hasLocal()) {
        hash = (37 * hash) + LOCAL_FIELD_NUMBER;
        hash = (53 * hash) + getLocal().hashCode();
      }
      if (hasRemote()) {
        hash = (37 * hash) + REMOTE_FIELD_NUMBER;
        hash = (53 * hash) + getRemote().hashCode();
      }
      hash = (37 * hash) + AVAILABLEBW_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getAvailableBw());
      hash = (37 * hash) + RESIDUALBW_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getResidualBw());
      hash = (37 * hash) + UTILIZED_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getUtilized());
      hash = (37 * hash) + MAXLINKDELAY_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMaxLinkDelay());
      hash = (37 * hash) + MINLINKDELAY_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMinLinkDelay());
      hash = (37 * hash) + DELAYVARIATION_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getDelayVariation());
      hash = (37 * hash) + DELAY_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getDelay());
      hash = (37 * hash) + TEDEFAULTMETRIC_FIELD_NUMBER;
      hash = (53 * hash) + getTEDefaultMetric();
      hash = (37 * hash) + ADJACENCYSID_FIELD_NUMBER;
      hash = (53 * hash) + getAdjacencySid().hashCode();
      hash = (37 * hash) + LEARNTFROM_FIELD_NUMBER;
      hash = (53 * hash) + getLearntFrom().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static src.main.proto.GrpcService.linkInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.linkInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.linkInfo 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 src.main.proto.GrpcService.linkInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.linkInfo 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 src.main.proto.GrpcService.linkInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.linkInfo 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(src.main.proto.GrpcService.linkInfo 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 src.main.proto.linkInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:src.main.proto.linkInfo)
        src.main.proto.GrpcService.linkInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                src.main.proto.GrpcService.linkInfo.class, src.main.proto.GrpcService.linkInfo.Builder.class);
      }

      // Construct using src.main.proto.GrpcService.linkInfo.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();
        remoteID_ = "";

        localID_ = "";

        remoteIPv4ID_ = "";

        localIPv4ID_ = "";

        if (localBuilder_ == null) {
          local_ = null;
        } else {
          local_ = null;
          localBuilder_ = null;
        }
        if (remoteBuilder_ == null) {
          remote_ = null;
        } else {
          remote_ = null;
          remoteBuilder_ = null;
        }
        availableBw_ = 0F;

        residualBw_ = 0F;

        utilized_ = 0F;

        maxLinkDelay_ = 0F;

        minLinkDelay_ = 0F;

        delayVariation_ = 0F;

        delay_ = 0F;

        tEDefaultMetric_ = 0;

        adjacencySid_ = "";

        learntFrom_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_linkInfo_descriptor;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.linkInfo getDefaultInstanceForType() {
        return src.main.proto.GrpcService.linkInfo.getDefaultInstance();
      }

      @java.lang.Override
      public src.main.proto.GrpcService.linkInfo build() {
        src.main.proto.GrpcService.linkInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.linkInfo buildPartial() {
        src.main.proto.GrpcService.linkInfo result = new src.main.proto.GrpcService.linkInfo(this);
        result.remoteID_ = remoteID_;
        result.localID_ = localID_;
        result.remoteIPv4ID_ = remoteIPv4ID_;
        result.localIPv4ID_ = localIPv4ID_;
        if (localBuilder_ == null) {
          result.local_ = local_;
        } else {
          result.local_ = localBuilder_.build();
        }
        if (remoteBuilder_ == null) {
          result.remote_ = remote_;
        } else {
          result.remote_ = remoteBuilder_.build();
        }
        result.availableBw_ = availableBw_;
        result.residualBw_ = residualBw_;
        result.utilized_ = utilized_;
        result.maxLinkDelay_ = maxLinkDelay_;
        result.minLinkDelay_ = minLinkDelay_;
        result.delayVariation_ = delayVariation_;
        result.delay_ = delay_;
        result.tEDefaultMetric_ = tEDefaultMetric_;
        result.adjacencySid_ = adjacencySid_;
        result.learntFrom_ = learntFrom_;
        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 src.main.proto.GrpcService.linkInfo) {
          return mergeFrom((src.main.proto.GrpcService.linkInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(src.main.proto.GrpcService.linkInfo other) {
        if (other == src.main.proto.GrpcService.linkInfo.getDefaultInstance()) return this;
        if (!other.getRemoteID().isEmpty()) {
          remoteID_ = other.remoteID_;
          onChanged();
        }
        if (!other.getLocalID().isEmpty()) {
          localID_ = other.localID_;
          onChanged();
        }
        if (!other.getRemoteIPv4ID().isEmpty()) {
          remoteIPv4ID_ = other.remoteIPv4ID_;
          onChanged();
        }
        if (!other.getLocalIPv4ID().isEmpty()) {
          localIPv4ID_ = other.localIPv4ID_;
          onChanged();
        }
        if (other.hasLocal()) {
          mergeLocal(other.getLocal());
        }
        if (other.hasRemote()) {
          mergeRemote(other.getRemote());
        }
        if (other.getAvailableBw() != 0F) {
          setAvailableBw(other.getAvailableBw());
        }
        if (other.getResidualBw() != 0F) {
          setResidualBw(other.getResidualBw());
        }
        if (other.getUtilized() != 0F) {
          setUtilized(other.getUtilized());
        }
        if (other.getMaxLinkDelay() != 0F) {
          setMaxLinkDelay(other.getMaxLinkDelay());
        }
        if (other.getMinLinkDelay() != 0F) {
          setMinLinkDelay(other.getMinLinkDelay());
        }
        if (other.getDelayVariation() != 0F) {
          setDelayVariation(other.getDelayVariation());
        }
        if (other.getDelay() != 0F) {
          setDelay(other.getDelay());
        }
        if (other.getTEDefaultMetric() != 0) {
          setTEDefaultMetric(other.getTEDefaultMetric());
        }
        if (!other.getAdjacencySid().isEmpty()) {
          adjacencySid_ = other.adjacencySid_;
          onChanged();
        }
        if (!other.getLearntFrom().isEmpty()) {
          learntFrom_ = other.learntFrom_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object remoteID_ = "";
      /**
       * <code>string remoteID = 1;</code>
       */
      public java.lang.String getRemoteID() {
        java.lang.Object ref = remoteID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          remoteID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string remoteID = 1;</code>
       */
      public com.google.protobuf.ByteString
          getRemoteIDBytes() {
        java.lang.Object ref = remoteID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          remoteID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string remoteID = 1;</code>
       */
      public Builder setRemoteID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        remoteID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string remoteID = 1;</code>
       */
      public Builder clearRemoteID() {
        
        remoteID_ = getDefaultInstance().getRemoteID();
        onChanged();
        return this;
      }
      /**
       * <code>string remoteID = 1;</code>
       */
      public Builder setRemoteIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        remoteID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object localID_ = "";
      /**
       * <code>string localID = 2;</code>
       */
      public java.lang.String getLocalID() {
        java.lang.Object ref = localID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          localID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string localID = 2;</code>
       */
      public com.google.protobuf.ByteString
          getLocalIDBytes() {
        java.lang.Object ref = localID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string localID = 2;</code>
       */
      public Builder setLocalID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        localID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string localID = 2;</code>
       */
      public Builder clearLocalID() {
        
        localID_ = getDefaultInstance().getLocalID();
        onChanged();
        return this;
      }
      /**
       * <code>string localID = 2;</code>
       */
      public Builder setLocalIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        localID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object remoteIPv4ID_ = "";
      /**
       * <code>string remoteIPv4ID = 3;</code>
       */
      public java.lang.String getRemoteIPv4ID() {
        java.lang.Object ref = remoteIPv4ID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          remoteIPv4ID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string remoteIPv4ID = 3;</code>
       */
      public com.google.protobuf.ByteString
          getRemoteIPv4IDBytes() {
        java.lang.Object ref = remoteIPv4ID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          remoteIPv4ID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string remoteIPv4ID = 3;</code>
       */
      public Builder setRemoteIPv4ID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        remoteIPv4ID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string remoteIPv4ID = 3;</code>
       */
      public Builder clearRemoteIPv4ID() {
        
        remoteIPv4ID_ = getDefaultInstance().getRemoteIPv4ID();
        onChanged();
        return this;
      }
      /**
       * <code>string remoteIPv4ID = 3;</code>
       */
      public Builder setRemoteIPv4IDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        remoteIPv4ID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object localIPv4ID_ = "";
      /**
       * <code>string localIPv4ID = 4;</code>
       */
      public java.lang.String getLocalIPv4ID() {
        java.lang.Object ref = localIPv4ID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          localIPv4ID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string localIPv4ID = 4;</code>
       */
      public com.google.protobuf.ByteString
          getLocalIPv4IDBytes() {
        java.lang.Object ref = localIPv4ID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localIPv4ID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string localIPv4ID = 4;</code>
       */
      public Builder setLocalIPv4ID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        localIPv4ID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string localIPv4ID = 4;</code>
       */
      public Builder clearLocalIPv4ID() {
        
        localIPv4ID_ = getDefaultInstance().getLocalIPv4ID();
        onChanged();
        return this;
      }
      /**
       * <code>string localIPv4ID = 4;</code>
       */
      public Builder setLocalIPv4IDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        localIPv4ID_ = value;
        onChanged();
        return this;
      }

      private src.main.proto.GrpcService.NodeDescriptors local_;
      private com.google.protobuf.SingleFieldBuilderV3<
          src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> localBuilder_;
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public boolean hasLocal() {
        return localBuilder_ != null || local_ != null;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptors getLocal() {
        if (localBuilder_ == null) {
          return local_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_;
        } else {
          return localBuilder_.getMessage();
        }
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public Builder setLocal(src.main.proto.GrpcService.NodeDescriptors value) {
        if (localBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          local_ = value;
          onChanged();
        } else {
          localBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public Builder setLocal(
          src.main.proto.GrpcService.NodeDescriptors.Builder builderForValue) {
        if (localBuilder_ == null) {
          local_ = builderForValue.build();
          onChanged();
        } else {
          localBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public Builder mergeLocal(src.main.proto.GrpcService.NodeDescriptors value) {
        if (localBuilder_ == null) {
          if (local_ != null) {
            local_ =
              src.main.proto.GrpcService.NodeDescriptors.newBuilder(local_).mergeFrom(value).buildPartial();
          } else {
            local_ = value;
          }
          onChanged();
        } else {
          localBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public Builder clearLocal() {
        if (localBuilder_ == null) {
          local_ = null;
          onChanged();
        } else {
          local_ = null;
          localBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptors.Builder getLocalBuilder() {
        
        onChanged();
        return getLocalFieldBuilder().getBuilder();
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getLocalOrBuilder() {
        if (localBuilder_ != null) {
          return localBuilder_.getMessageOrBuilder();
        } else {
          return local_ == null ?
              src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : local_;
        }
      }
      /**
       * <code>.src.main.proto.NodeDescriptors local = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> 
          getLocalFieldBuilder() {
        if (localBuilder_ == null) {
          localBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder>(
                  getLocal(),
                  getParentForChildren(),
                  isClean());
          local_ = null;
        }
        return localBuilder_;
      }

      private src.main.proto.GrpcService.NodeDescriptors remote_;
      private com.google.protobuf.SingleFieldBuilderV3<
          src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> remoteBuilder_;
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public boolean hasRemote() {
        return remoteBuilder_ != null || remote_ != null;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptors getRemote() {
        if (remoteBuilder_ == null) {
          return remote_ == null ? src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_;
        } else {
          return remoteBuilder_.getMessage();
        }
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public Builder setRemote(src.main.proto.GrpcService.NodeDescriptors value) {
        if (remoteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          remote_ = value;
          onChanged();
        } else {
          remoteBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public Builder setRemote(
          src.main.proto.GrpcService.NodeDescriptors.Builder builderForValue) {
        if (remoteBuilder_ == null) {
          remote_ = builderForValue.build();
          onChanged();
        } else {
          remoteBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public Builder mergeRemote(src.main.proto.GrpcService.NodeDescriptors value) {
        if (remoteBuilder_ == null) {
          if (remote_ != null) {
            remote_ =
              src.main.proto.GrpcService.NodeDescriptors.newBuilder(remote_).mergeFrom(value).buildPartial();
          } else {
            remote_ = value;
          }
          onChanged();
        } else {
          remoteBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public Builder clearRemote() {
        if (remoteBuilder_ == null) {
          remote_ = null;
          onChanged();
        } else {
          remote_ = null;
          remoteBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptors.Builder getRemoteBuilder() {
        
        onChanged();
        return getRemoteFieldBuilder().getBuilder();
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      public src.main.proto.GrpcService.NodeDescriptorsOrBuilder getRemoteOrBuilder() {
        if (remoteBuilder_ != null) {
          return remoteBuilder_.getMessageOrBuilder();
        } else {
          return remote_ == null ?
              src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance() : remote_;
        }
      }
      /**
       * <code>.src.main.proto.NodeDescriptors remote = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder> 
          getRemoteFieldBuilder() {
        if (remoteBuilder_ == null) {
          remoteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              src.main.proto.GrpcService.NodeDescriptors, src.main.proto.GrpcService.NodeDescriptors.Builder, src.main.proto.GrpcService.NodeDescriptorsOrBuilder>(
                  getRemote(),
                  getParentForChildren(),
                  isClean());
          remote_ = null;
        }
        return remoteBuilder_;
      }

      private float availableBw_ ;
      /**
       * <code>float availableBw = 7;</code>
       */
      public float getAvailableBw() {
        return availableBw_;
      }
      /**
       * <code>float availableBw = 7;</code>
       */
      public Builder setAvailableBw(float value) {
        
        availableBw_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float availableBw = 7;</code>
       */
      public Builder clearAvailableBw() {
        
        availableBw_ = 0F;
        onChanged();
        return this;
      }

      private float residualBw_ ;
      /**
       * <code>float residualBw = 8;</code>
       */
      public float getResidualBw() {
        return residualBw_;
      }
      /**
       * <code>float residualBw = 8;</code>
       */
      public Builder setResidualBw(float value) {
        
        residualBw_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float residualBw = 8;</code>
       */
      public Builder clearResidualBw() {
        
        residualBw_ = 0F;
        onChanged();
        return this;
      }

      private float utilized_ ;
      /**
       * <code>float utilized = 9;</code>
       */
      public float getUtilized() {
        return utilized_;
      }
      /**
       * <code>float utilized = 9;</code>
       */
      public Builder setUtilized(float value) {
        
        utilized_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float utilized = 9;</code>
       */
      public Builder clearUtilized() {
        
        utilized_ = 0F;
        onChanged();
        return this;
      }

      private float maxLinkDelay_ ;
      /**
       * <code>float maxLinkDelay = 10;</code>
       */
      public float getMaxLinkDelay() {
        return maxLinkDelay_;
      }
      /**
       * <code>float maxLinkDelay = 10;</code>
       */
      public Builder setMaxLinkDelay(float value) {
        
        maxLinkDelay_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float maxLinkDelay = 10;</code>
       */
      public Builder clearMaxLinkDelay() {
        
        maxLinkDelay_ = 0F;
        onChanged();
        return this;
      }

      private float minLinkDelay_ ;
      /**
       * <code>float minLinkDelay = 11;</code>
       */
      public float getMinLinkDelay() {
        return minLinkDelay_;
      }
      /**
       * <code>float minLinkDelay = 11;</code>
       */
      public Builder setMinLinkDelay(float value) {
        
        minLinkDelay_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float minLinkDelay = 11;</code>
       */
      public Builder clearMinLinkDelay() {
        
        minLinkDelay_ = 0F;
        onChanged();
        return this;
      }

      private float delayVariation_ ;
      /**
       * <code>float delayVariation = 12;</code>
       */
      public float getDelayVariation() {
        return delayVariation_;
      }
      /**
       * <code>float delayVariation = 12;</code>
       */
      public Builder setDelayVariation(float value) {
        
        delayVariation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float delayVariation = 12;</code>
       */
      public Builder clearDelayVariation() {
        
        delayVariation_ = 0F;
        onChanged();
        return this;
      }

      private float delay_ ;
      /**
       * <code>float delay = 13;</code>
       */
      public float getDelay() {
        return delay_;
      }
      /**
       * <code>float delay = 13;</code>
       */
      public Builder setDelay(float value) {
        
        delay_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float delay = 13;</code>
       */
      public Builder clearDelay() {
        
        delay_ = 0F;
        onChanged();
        return this;
      }

      private int tEDefaultMetric_ ;
      /**
       * <code>int32 TEDefaultMetric = 14;</code>
       */
      public int getTEDefaultMetric() {
        return tEDefaultMetric_;
      }
      /**
       * <code>int32 TEDefaultMetric = 14;</code>
       */
      public Builder setTEDefaultMetric(int value) {
        
        tEDefaultMetric_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 TEDefaultMetric = 14;</code>
       */
      public Builder clearTEDefaultMetric() {
        
        tEDefaultMetric_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object adjacencySid_ = "";
      /**
       * <code>string adjacencySid = 15;</code>
       */
      public java.lang.String getAdjacencySid() {
        java.lang.Object ref = adjacencySid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          adjacencySid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string adjacencySid = 15;</code>
       */
      public com.google.protobuf.ByteString
          getAdjacencySidBytes() {
        java.lang.Object ref = adjacencySid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          adjacencySid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string adjacencySid = 15;</code>
       */
      public Builder setAdjacencySid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        adjacencySid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string adjacencySid = 15;</code>
       */
      public Builder clearAdjacencySid() {
        
        adjacencySid_ = getDefaultInstance().getAdjacencySid();
        onChanged();
        return this;
      }
      /**
       * <code>string adjacencySid = 15;</code>
       */
      public Builder setAdjacencySidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        adjacencySid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object learntFrom_ = "";
      /**
       * <code>string learntFrom = 16;</code>
       */
      public java.lang.String getLearntFrom() {
        java.lang.Object ref = learntFrom_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          learntFrom_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string learntFrom = 16;</code>
       */
      public com.google.protobuf.ByteString
          getLearntFromBytes() {
        java.lang.Object ref = learntFrom_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          learntFrom_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string learntFrom = 16;</code>
       */
      public Builder setLearntFrom(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        learntFrom_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string learntFrom = 16;</code>
       */
      public Builder clearLearntFrom() {
        
        learntFrom_ = getDefaultInstance().getLearntFrom();
        onChanged();
        return this;
      }
      /**
       * <code>string learntFrom = 16;</code>
       */
      public Builder setLearntFromBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        learntFrom_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:src.main.proto.linkInfo)
    }

    // @@protoc_insertion_point(class_scope:src.main.proto.linkInfo)
    private static final src.main.proto.GrpcService.linkInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new src.main.proto.GrpcService.linkInfo();
    }

    public static src.main.proto.GrpcService.linkInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public src.main.proto.GrpcService.linkInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeDescriptorsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:src.main.proto.NodeDescriptors)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string asNumber = 1;</code>
     */
    java.lang.String getAsNumber();
    /**
     * <code>string asNumber = 1;</code>
     */
    com.google.protobuf.ByteString
        getAsNumberBytes();

    /**
     * <code>string bgplsID = 2;</code>
     */
    java.lang.String getBgplsID();
    /**
     * <code>string bgplsID = 2;</code>
     */
    com.google.protobuf.ByteString
        getBgplsIDBytes();
  }
  /**
   * Protobuf type {@code src.main.proto.NodeDescriptors}
   */
  public  static final class NodeDescriptors extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:src.main.proto.NodeDescriptors)
      NodeDescriptorsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NodeDescriptors.newBuilder() to construct.
    private NodeDescriptors(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NodeDescriptors() {
      asNumber_ = "";
      bgplsID_ = "";
    }

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

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

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

              bgplsID_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.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 src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              src.main.proto.GrpcService.NodeDescriptors.class, src.main.proto.GrpcService.NodeDescriptors.Builder.class);
    }

    public static final int ASNUMBER_FIELD_NUMBER = 1;
    private volatile java.lang.Object asNumber_;
    /**
     * <code>string asNumber = 1;</code>
     */
    public java.lang.String getAsNumber() {
      java.lang.Object ref = asNumber_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        asNumber_ = s;
        return s;
      }
    }
    /**
     * <code>string asNumber = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAsNumberBytes() {
      java.lang.Object ref = asNumber_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        asNumber_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BGPLSID_FIELD_NUMBER = 2;
    private volatile java.lang.Object bgplsID_;
    /**
     * <code>string bgplsID = 2;</code>
     */
    public java.lang.String getBgplsID() {
      java.lang.Object ref = bgplsID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        bgplsID_ = s;
        return s;
      }
    }
    /**
     * <code>string bgplsID = 2;</code>
     */
    public com.google.protobuf.ByteString
        getBgplsIDBytes() {
      java.lang.Object ref = bgplsID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bgplsID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getAsNumberBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, asNumber_);
      }
      if (!getBgplsIDBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, bgplsID_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getAsNumberBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, asNumber_);
      }
      if (!getBgplsIDBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, bgplsID_);
      }
      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 src.main.proto.GrpcService.NodeDescriptors)) {
        return super.equals(obj);
      }
      src.main.proto.GrpcService.NodeDescriptors other = (src.main.proto.GrpcService.NodeDescriptors) obj;

      if (!getAsNumber()
          .equals(other.getAsNumber())) return false;
      if (!getBgplsID()
          .equals(other.getBgplsID())) 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) + ASNUMBER_FIELD_NUMBER;
      hash = (53 * hash) + getAsNumber().hashCode();
      hash = (37 * hash) + BGPLSID_FIELD_NUMBER;
      hash = (53 * hash) + getBgplsID().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.NodeDescriptors parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.NodeDescriptors 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 src.main.proto.GrpcService.NodeDescriptors parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.NodeDescriptors 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 src.main.proto.GrpcService.NodeDescriptors parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.NodeDescriptors 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(src.main.proto.GrpcService.NodeDescriptors 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 src.main.proto.NodeDescriptors}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:src.main.proto.NodeDescriptors)
        src.main.proto.GrpcService.NodeDescriptorsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                src.main.proto.GrpcService.NodeDescriptors.class, src.main.proto.GrpcService.NodeDescriptors.Builder.class);
      }

      // Construct using src.main.proto.GrpcService.NodeDescriptors.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();
        asNumber_ = "";

        bgplsID_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_NodeDescriptors_descriptor;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.NodeDescriptors getDefaultInstanceForType() {
        return src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance();
      }

      @java.lang.Override
      public src.main.proto.GrpcService.NodeDescriptors build() {
        src.main.proto.GrpcService.NodeDescriptors result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.NodeDescriptors buildPartial() {
        src.main.proto.GrpcService.NodeDescriptors result = new src.main.proto.GrpcService.NodeDescriptors(this);
        result.asNumber_ = asNumber_;
        result.bgplsID_ = bgplsID_;
        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 src.main.proto.GrpcService.NodeDescriptors) {
          return mergeFrom((src.main.proto.GrpcService.NodeDescriptors)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(src.main.proto.GrpcService.NodeDescriptors other) {
        if (other == src.main.proto.GrpcService.NodeDescriptors.getDefaultInstance()) return this;
        if (!other.getAsNumber().isEmpty()) {
          asNumber_ = other.asNumber_;
          onChanged();
        }
        if (!other.getBgplsID().isEmpty()) {
          bgplsID_ = other.bgplsID_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object asNumber_ = "";
      /**
       * <code>string asNumber = 1;</code>
       */
      public java.lang.String getAsNumber() {
        java.lang.Object ref = asNumber_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          asNumber_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string asNumber = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAsNumberBytes() {
        java.lang.Object ref = asNumber_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          asNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string asNumber = 1;</code>
       */
      public Builder setAsNumber(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        asNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string asNumber = 1;</code>
       */
      public Builder clearAsNumber() {
        
        asNumber_ = getDefaultInstance().getAsNumber();
        onChanged();
        return this;
      }
      /**
       * <code>string asNumber = 1;</code>
       */
      public Builder setAsNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        asNumber_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object bgplsID_ = "";
      /**
       * <code>string bgplsID = 2;</code>
       */
      public java.lang.String getBgplsID() {
        java.lang.Object ref = bgplsID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bgplsID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string bgplsID = 2;</code>
       */
      public com.google.protobuf.ByteString
          getBgplsIDBytes() {
        java.lang.Object ref = bgplsID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bgplsID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string bgplsID = 2;</code>
       */
      public Builder setBgplsID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bgplsID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string bgplsID = 2;</code>
       */
      public Builder clearBgplsID() {
        
        bgplsID_ = getDefaultInstance().getBgplsID();
        onChanged();
        return this;
      }
      /**
       * <code>string bgplsID = 2;</code>
       */
      public Builder setBgplsIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bgplsID_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:src.main.proto.NodeDescriptors)
    }

    // @@protoc_insertion_point(class_scope:src.main.proto.NodeDescriptors)
    private static final src.main.proto.GrpcService.NodeDescriptors DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new src.main.proto.GrpcService.NodeDescriptors();
    }

    public static src.main.proto.GrpcService.NodeDescriptors getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public src.main.proto.GrpcService.NodeDescriptors getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface updateResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:src.main.proto.updateResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string ack = 1;</code>
     */
    java.lang.String getAck();
    /**
     * <code>string ack = 1;</code>
     */
    com.google.protobuf.ByteString
        getAckBytes();
  }
  /**
   * Protobuf type {@code src.main.proto.updateResponse}
   */
  public  static final class updateResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:src.main.proto.updateResponse)
      updateResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use updateResponse.newBuilder() to construct.
    private updateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private updateResponse() {
      ack_ = "";
    }

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

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

              ack_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.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 src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              src.main.proto.GrpcService.updateResponse.class, src.main.proto.GrpcService.updateResponse.Builder.class);
    }

    public static final int ACK_FIELD_NUMBER = 1;
    private volatile java.lang.Object ack_;
    /**
     * <code>string ack = 1;</code>
     */
    public java.lang.String getAck() {
      java.lang.Object ref = ack_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        ack_ = s;
        return s;
      }
    }
    /**
     * <code>string ack = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAckBytes() {
      java.lang.Object ref = ack_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ack_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getAckBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, ack_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getAckBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, ack_);
      }
      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 src.main.proto.GrpcService.updateResponse)) {
        return super.equals(obj);
      }
      src.main.proto.GrpcService.updateResponse other = (src.main.proto.GrpcService.updateResponse) obj;

      if (!getAck()
          .equals(other.getAck())) 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) + ACK_FIELD_NUMBER;
      hash = (53 * hash) + getAck().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static src.main.proto.GrpcService.updateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static src.main.proto.GrpcService.updateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateResponse 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 src.main.proto.GrpcService.updateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateResponse 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 src.main.proto.GrpcService.updateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static src.main.proto.GrpcService.updateResponse 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(src.main.proto.GrpcService.updateResponse 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 src.main.proto.updateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:src.main.proto.updateResponse)
        src.main.proto.GrpcService.updateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                src.main.proto.GrpcService.updateResponse.class, src.main.proto.GrpcService.updateResponse.Builder.class);
      }

      // Construct using src.main.proto.GrpcService.updateResponse.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();
        ack_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return src.main.proto.GrpcService.internal_static_src_main_proto_updateResponse_descriptor;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateResponse getDefaultInstanceForType() {
        return src.main.proto.GrpcService.updateResponse.getDefaultInstance();
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateResponse build() {
        src.main.proto.GrpcService.updateResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public src.main.proto.GrpcService.updateResponse buildPartial() {
        src.main.proto.GrpcService.updateResponse result = new src.main.proto.GrpcService.updateResponse(this);
        result.ack_ = ack_;
        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 src.main.proto.GrpcService.updateResponse) {
          return mergeFrom((src.main.proto.GrpcService.updateResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(src.main.proto.GrpcService.updateResponse other) {
        if (other == src.main.proto.GrpcService.updateResponse.getDefaultInstance()) return this;
        if (!other.getAck().isEmpty()) {
          ack_ = other.ack_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object ack_ = "";
      /**
       * <code>string ack = 1;</code>
       */
      public java.lang.String getAck() {
        java.lang.Object ref = ack_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ack_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string ack = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAckBytes() {
        java.lang.Object ref = ack_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ack_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string ack = 1;</code>
       */
      public Builder setAck(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ack_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string ack = 1;</code>
       */
      public Builder clearAck() {
        
        ack_ = getDefaultInstance().getAck();
        onChanged();
        return this;
      }
      /**
       * <code>string ack = 1;</code>
       */
      public Builder setAckBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ack_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:src.main.proto.updateResponse)
    }

    // @@protoc_insertion_point(class_scope:src.main.proto.updateResponse)
    private static final src.main.proto.GrpcService.updateResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new src.main.proto.GrpcService.updateResponse();
    }

    public static src.main.proto.GrpcService.updateResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public src.main.proto.GrpcService.updateResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_src_main_proto_updateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_src_main_proto_updateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_src_main_proto_nodeInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_src_main_proto_nodeInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_src_main_proto_linkInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_src_main_proto_linkInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_src_main_proto_NodeDescriptors_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_src_main_proto_updateResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_src_main_proto_updateResponse_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\021grpcService.proto\022\016src.main.proto\"\240\001\n\r" +
      "updateRequest\022\027\n\017addressFamilyID\030\001 \001(\t\022\017" +
      "\n\007nextHop\030\002 \001(\t\022\025\n\rasPathSegment\030\003 \001(\t\022&" +
      "\n\004node\030\004 \003(\0132\030.src.main.proto.nodeInfo\022&" +
      "\n\004link\030\005 \003(\0132\030.src.main.proto.linkInfo\"^" +
      "\n\010nodeInfo\022\020\n\010nodeName\030\001 \001(\t\022\r\n\005igpID\030\002 " +
      "\001(\t\022\017\n\007bgplsID\030\003 \001(\t\022\014\n\004asID\030\004 \001(\005\022\022\n\nle" +
      "arntFrom\030\005 \001(\t\"\212\003\n\010linkInfo\022\020\n\010remoteID\030" +
      "\001 \001(\t\022\017\n\007localID\030\002 \001(\t\022\024\n\014remoteIPv4ID\030\003" +
      " \001(\t\022\023\n\013localIPv4ID\030\004 \001(\t\022.\n\005local\030\005 \001(\013" +
      "2\037.src.main.proto.NodeDescriptors\022/\n\006rem" +
      "ote\030\006 \001(\0132\037.src.main.proto.NodeDescripto" +
      "rs\022\023\n\013availableBw\030\007 \001(\002\022\022\n\nresidualBw\030\010 " +
      "\001(\002\022\020\n\010utilized\030\t \001(\002\022\024\n\014maxLinkDelay\030\n " +
      "\001(\002\022\024\n\014minLinkDelay\030\013 \001(\002\022\026\n\016delayVariat" +
      "ion\030\014 \001(\002\022\r\n\005delay\030\r \001(\002\022\027\n\017TEDefaultMet" +
      "ric\030\016 \001(\005\022\024\n\014adjacencySid\030\017 \001(\t\022\022\n\nlearn" +
      "tFrom\030\020 \001(\t\"4\n\017NodeDescriptors\022\020\n\010asNumb" +
      "er\030\001 \001(\t\022\017\n\007bgplsID\030\002 \001(\t\"\035\n\016updateRespo" +
      "nse\022\013\n\003ack\030\001 \001(\t2X\n\rupdateService\022G\n\006upd" +
      "ate\022\035.src.main.proto.updateRequest\032\036.src" +
      ".main.proto.updateResponseb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_src_main_proto_updateRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_src_main_proto_updateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_src_main_proto_updateRequest_descriptor,
        new java.lang.String[] { "AddressFamilyID", "NextHop", "AsPathSegment", "Node", "Link", });
    internal_static_src_main_proto_nodeInfo_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_src_main_proto_nodeInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_src_main_proto_nodeInfo_descriptor,
        new java.lang.String[] { "NodeName", "IgpID", "BgplsID", "AsID", "LearntFrom", });
    internal_static_src_main_proto_linkInfo_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_src_main_proto_linkInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_src_main_proto_linkInfo_descriptor,
        new java.lang.String[] { "RemoteID", "LocalID", "RemoteIPv4ID", "LocalIPv4ID", "Local", "Remote", "AvailableBw", "ResidualBw", "Utilized", "MaxLinkDelay", "MinLinkDelay", "DelayVariation", "Delay", "TEDefaultMetric", "AdjacencySid", "LearntFrom", });
    internal_static_src_main_proto_NodeDescriptors_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_src_main_proto_NodeDescriptors_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_src_main_proto_NodeDescriptors_descriptor,
        new java.lang.String[] { "AsNumber", "BgplsID", });
    internal_static_src_main_proto_updateResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_src_main_proto_updateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_src_main_proto_updateResponse_descriptor,
        new java.lang.String[] { "Ack", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
