/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/compute/v1/compute.proto

package com.google.cloud.compute.v1;

/**
 *
 *
 * <pre>
 * </pre>
 *
 * Protobuf type {@code google.cloud.compute.v1.NetworksAddPeeringRequest}
 */
public final class NetworksAddPeeringRequest extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.compute.v1.NetworksAddPeeringRequest)
    NetworksAddPeeringRequestOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use NetworksAddPeeringRequest.newBuilder() to construct.
  private NetworksAddPeeringRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private NetworksAddPeeringRequest() {
    name_ = "";
    peerNetwork_ = "";
  }

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

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    return this.unknownFields;
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.cloud.compute.v1.Compute
        .internal_static_google_cloud_compute_v1_NetworksAddPeeringRequest_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.compute.v1.Compute
        .internal_static_google_cloud_compute_v1_NetworksAddPeeringRequest_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.compute.v1.NetworksAddPeeringRequest.class,
            com.google.cloud.compute.v1.NetworksAddPeeringRequest.Builder.class);
  }

  private int bitField0_;
  public static final int AUTO_CREATE_ROUTES_FIELD_NUMBER = 57454941;
  private boolean autoCreateRoutes_ = false;
  /**
   *
   *
   * <pre>
   * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
   * </pre>
   *
   * <code>optional bool auto_create_routes = 57454941;</code>
   *
   * @return Whether the autoCreateRoutes field is set.
   */
  @java.lang.Override
  public boolean hasAutoCreateRoutes() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   *
   *
   * <pre>
   * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
   * </pre>
   *
   * <code>optional bool auto_create_routes = 57454941;</code>
   *
   * @return The autoCreateRoutes.
   */
  @java.lang.Override
  public boolean getAutoCreateRoutes() {
    return autoCreateRoutes_;
  }

  public static final int NAME_FIELD_NUMBER = 3373707;

  @SuppressWarnings("serial")
  private volatile java.lang.Object name_ = "";
  /**
   *
   *
   * <pre>
   * Name of the peering, which should conform to RFC1035.
   * </pre>
   *
   * <code>optional string name = 3373707;</code>
   *
   * @return Whether the name field is set.
   */
  @java.lang.Override
  public boolean hasName() {
    return ((bitField0_ & 0x00000002) != 0);
  }
  /**
   *
   *
   * <pre>
   * Name of the peering, which should conform to RFC1035.
   * </pre>
   *
   * <code>optional string name = 3373707;</code>
   *
   * @return The name.
   */
  @java.lang.Override
  public java.lang.String getName() {
    java.lang.Object ref = name_;
    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();
      name_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Name of the peering, which should conform to RFC1035.
   * </pre>
   *
   * <code>optional string name = 3373707;</code>
   *
   * @return The bytes for name.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getNameBytes() {
    java.lang.Object ref = name_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      name_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int NETWORK_PEERING_FIELD_NUMBER = 328926767;
  private com.google.cloud.compute.v1.NetworkPeering networkPeering_;
  /**
   *
   *
   * <pre>
   * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
   * </pre>
   *
   * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
   *
   * @return Whether the networkPeering field is set.
   */
  @java.lang.Override
  public boolean hasNetworkPeering() {
    return ((bitField0_ & 0x00000004) != 0);
  }
  /**
   *
   *
   * <pre>
   * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
   * </pre>
   *
   * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
   *
   * @return The networkPeering.
   */
  @java.lang.Override
  public com.google.cloud.compute.v1.NetworkPeering getNetworkPeering() {
    return networkPeering_ == null
        ? com.google.cloud.compute.v1.NetworkPeering.getDefaultInstance()
        : networkPeering_;
  }
  /**
   *
   *
   * <pre>
   * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
   * </pre>
   *
   * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
   */
  @java.lang.Override
  public com.google.cloud.compute.v1.NetworkPeeringOrBuilder getNetworkPeeringOrBuilder() {
    return networkPeering_ == null
        ? com.google.cloud.compute.v1.NetworkPeering.getDefaultInstance()
        : networkPeering_;
  }

  public static final int PEER_NETWORK_FIELD_NUMBER = 500625489;

  @SuppressWarnings("serial")
  private volatile java.lang.Object peerNetwork_ = "";
  /**
   *
   *
   * <pre>
   * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
   * </pre>
   *
   * <code>optional string peer_network = 500625489;</code>
   *
   * @return Whether the peerNetwork field is set.
   */
  @java.lang.Override
  public boolean hasPeerNetwork() {
    return ((bitField0_ & 0x00000008) != 0);
  }
  /**
   *
   *
   * <pre>
   * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
   * </pre>
   *
   * <code>optional string peer_network = 500625489;</code>
   *
   * @return The peerNetwork.
   */
  @java.lang.Override
  public java.lang.String getPeerNetwork() {
    java.lang.Object ref = peerNetwork_;
    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();
      peerNetwork_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
   * </pre>
   *
   * <code>optional string peer_network = 500625489;</code>
   *
   * @return The bytes for peerNetwork.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getPeerNetworkBytes() {
    java.lang.Object ref = peerNetwork_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      peerNetwork_ = 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 (((bitField0_ & 0x00000002) != 0)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 3373707, name_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeBool(57454941, autoCreateRoutes_);
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      output.writeMessage(328926767, getNetworkPeering());
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 500625489, peerNetwork_);
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3373707, name_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeBoolSize(57454941, autoCreateRoutes_);
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(328926767, getNetworkPeering());
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(500625489, peerNetwork_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.compute.v1.NetworksAddPeeringRequest)) {
      return super.equals(obj);
    }
    com.google.cloud.compute.v1.NetworksAddPeeringRequest other =
        (com.google.cloud.compute.v1.NetworksAddPeeringRequest) obj;

    if (hasAutoCreateRoutes() != other.hasAutoCreateRoutes()) return false;
    if (hasAutoCreateRoutes()) {
      if (getAutoCreateRoutes() != other.getAutoCreateRoutes()) return false;
    }
    if (hasName() != other.hasName()) return false;
    if (hasName()) {
      if (!getName().equals(other.getName())) return false;
    }
    if (hasNetworkPeering() != other.hasNetworkPeering()) return false;
    if (hasNetworkPeering()) {
      if (!getNetworkPeering().equals(other.getNetworkPeering())) return false;
    }
    if (hasPeerNetwork() != other.hasPeerNetwork()) return false;
    if (hasPeerNetwork()) {
      if (!getPeerNetwork().equals(other.getPeerNetwork())) return false;
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasAutoCreateRoutes()) {
      hash = (37 * hash) + AUTO_CREATE_ROUTES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAutoCreateRoutes());
    }
    if (hasName()) {
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
    }
    if (hasNetworkPeering()) {
      hash = (37 * hash) + NETWORK_PEERING_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkPeering().hashCode();
    }
    if (hasPeerNetwork()) {
      hash = (37 * hash) + PEER_NETWORK_FIELD_NUMBER;
      hash = (53 * hash) + getPeerNetwork().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() {
    return newBuilder();
  }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(
      com.google.cloud.compute.v1.NetworksAddPeeringRequest prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *
   *
   * <pre>
   * </pre>
   *
   * Protobuf type {@code google.cloud.compute.v1.NetworksAddPeeringRequest}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.compute.v1.NetworksAddPeeringRequest)
      com.google.cloud.compute.v1.NetworksAddPeeringRequestOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.compute.v1.Compute
          .internal_static_google_cloud_compute_v1_NetworksAddPeeringRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.compute.v1.Compute
          .internal_static_google_cloud_compute_v1_NetworksAddPeeringRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.compute.v1.NetworksAddPeeringRequest.class,
              com.google.cloud.compute.v1.NetworksAddPeeringRequest.Builder.class);
    }

    // Construct using com.google.cloud.compute.v1.NetworksAddPeeringRequest.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
        getNetworkPeeringFieldBuilder();
      }
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      autoCreateRoutes_ = false;
      name_ = "";
      networkPeering_ = null;
      if (networkPeeringBuilder_ != null) {
        networkPeeringBuilder_.dispose();
        networkPeeringBuilder_ = null;
      }
      peerNetwork_ = "";
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.compute.v1.Compute
          .internal_static_google_cloud_compute_v1_NetworksAddPeeringRequest_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.compute.v1.NetworksAddPeeringRequest getDefaultInstanceForType() {
      return com.google.cloud.compute.v1.NetworksAddPeeringRequest.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.compute.v1.NetworksAddPeeringRequest build() {
      com.google.cloud.compute.v1.NetworksAddPeeringRequest result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.compute.v1.NetworksAddPeeringRequest buildPartial() {
      com.google.cloud.compute.v1.NetworksAddPeeringRequest result =
          new com.google.cloud.compute.v1.NetworksAddPeeringRequest(this);
      if (bitField0_ != 0) {
        buildPartial0(result);
      }
      onBuilt();
      return result;
    }

    private void buildPartial0(com.google.cloud.compute.v1.NetworksAddPeeringRequest result) {
      int from_bitField0_ = bitField0_;
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.autoCreateRoutes_ = autoCreateRoutes_;
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.name_ = name_;
        to_bitField0_ |= 0x00000002;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.networkPeering_ =
            networkPeeringBuilder_ == null ? networkPeering_ : networkPeeringBuilder_.build();
        to_bitField0_ |= 0x00000004;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.peerNetwork_ = peerNetwork_;
        to_bitField0_ |= 0x00000008;
      }
      result.bitField0_ |= to_bitField0_;
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }

    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.setField(field, value);
    }

    @java.lang.Override
    public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }

    @java.lang.Override
    public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }

    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }

    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }

    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.cloud.compute.v1.NetworksAddPeeringRequest) {
        return mergeFrom((com.google.cloud.compute.v1.NetworksAddPeeringRequest) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.compute.v1.NetworksAddPeeringRequest other) {
      if (other == com.google.cloud.compute.v1.NetworksAddPeeringRequest.getDefaultInstance())
        return this;
      if (other.hasAutoCreateRoutes()) {
        setAutoCreateRoutes(other.getAutoCreateRoutes());
      }
      if (other.hasName()) {
        name_ = other.name_;
        bitField0_ |= 0x00000002;
        onChanged();
      }
      if (other.hasNetworkPeering()) {
        mergeNetworkPeering(other.getNetworkPeering());
      }
      if (other.hasPeerNetwork()) {
        peerNetwork_ = other.peerNetwork_;
        bitField0_ |= 0x00000008;
        onChanged();
      }
      this.mergeUnknownFields(other.getUnknownFields());
      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 {
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 26989658:
              {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 26989658
            case 459639528:
              {
                autoCreateRoutes_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 459639528
            case -1663553158:
              {
                input.readMessage(getNetworkPeeringFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case -1663553158
            case -289963382:
              {
                peerNetwork_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case -289963382
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }

    private int bitField0_;

    private boolean autoCreateRoutes_;
    /**
     *
     *
     * <pre>
     * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
     * </pre>
     *
     * <code>optional bool auto_create_routes = 57454941;</code>
     *
     * @return Whether the autoCreateRoutes field is set.
     */
    @java.lang.Override
    public boolean hasAutoCreateRoutes() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     *
     *
     * <pre>
     * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
     * </pre>
     *
     * <code>optional bool auto_create_routes = 57454941;</code>
     *
     * @return The autoCreateRoutes.
     */
    @java.lang.Override
    public boolean getAutoCreateRoutes() {
      return autoCreateRoutes_;
    }
    /**
     *
     *
     * <pre>
     * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
     * </pre>
     *
     * <code>optional bool auto_create_routes = 57454941;</code>
     *
     * @param value The autoCreateRoutes to set.
     * @return This builder for chaining.
     */
    public Builder setAutoCreateRoutes(boolean value) {

      autoCreateRoutes_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * This field will be deprecated soon. Use exchange_subnet_routes in network_peering instead. Indicates whether full mesh connectivity is created and managed automatically between peered networks. Currently this field should always be true since Google Compute Engine will automatically create and manage subnetwork routes between two networks when peering state is ACTIVE.
     * </pre>
     *
     * <code>optional bool auto_create_routes = 57454941;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearAutoCreateRoutes() {
      bitField0_ = (bitField0_ & ~0x00000001);
      autoCreateRoutes_ = false;
      onChanged();
      return this;
    }

    private java.lang.Object name_ = "";
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @return Whether the name field is set.
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @return The name.
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @return The bytes for name.
     */
    public com.google.protobuf.ByteString getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @param value The name to set.
     * @return This builder for chaining.
     */
    public Builder setName(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      name_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearName() {
      name_ = getDefaultInstance().getName();
      bitField0_ = (bitField0_ & ~0x00000002);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Name of the peering, which should conform to RFC1035.
     * </pre>
     *
     * <code>optional string name = 3373707;</code>
     *
     * @param value The bytes for name to set.
     * @return This builder for chaining.
     */
    public Builder setNameBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      name_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }

    private com.google.cloud.compute.v1.NetworkPeering networkPeering_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.compute.v1.NetworkPeering,
            com.google.cloud.compute.v1.NetworkPeering.Builder,
            com.google.cloud.compute.v1.NetworkPeeringOrBuilder>
        networkPeeringBuilder_;
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     *
     * @return Whether the networkPeering field is set.
     */
    public boolean hasNetworkPeering() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     *
     * @return The networkPeering.
     */
    public com.google.cloud.compute.v1.NetworkPeering getNetworkPeering() {
      if (networkPeeringBuilder_ == null) {
        return networkPeering_ == null
            ? com.google.cloud.compute.v1.NetworkPeering.getDefaultInstance()
            : networkPeering_;
      } else {
        return networkPeeringBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public Builder setNetworkPeering(com.google.cloud.compute.v1.NetworkPeering value) {
      if (networkPeeringBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        networkPeering_ = value;
      } else {
        networkPeeringBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public Builder setNetworkPeering(
        com.google.cloud.compute.v1.NetworkPeering.Builder builderForValue) {
      if (networkPeeringBuilder_ == null) {
        networkPeering_ = builderForValue.build();
      } else {
        networkPeeringBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public Builder mergeNetworkPeering(com.google.cloud.compute.v1.NetworkPeering value) {
      if (networkPeeringBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)
            && networkPeering_ != null
            && networkPeering_ != com.google.cloud.compute.v1.NetworkPeering.getDefaultInstance()) {
          getNetworkPeeringBuilder().mergeFrom(value);
        } else {
          networkPeering_ = value;
        }
      } else {
        networkPeeringBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public Builder clearNetworkPeering() {
      bitField0_ = (bitField0_ & ~0x00000004);
      networkPeering_ = null;
      if (networkPeeringBuilder_ != null) {
        networkPeeringBuilder_.dispose();
        networkPeeringBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public com.google.cloud.compute.v1.NetworkPeering.Builder getNetworkPeeringBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getNetworkPeeringFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    public com.google.cloud.compute.v1.NetworkPeeringOrBuilder getNetworkPeeringOrBuilder() {
      if (networkPeeringBuilder_ != null) {
        return networkPeeringBuilder_.getMessageOrBuilder();
      } else {
        return networkPeering_ == null
            ? com.google.cloud.compute.v1.NetworkPeering.getDefaultInstance()
            : networkPeering_;
      }
    }
    /**
     *
     *
     * <pre>
     * Network peering parameters. In order to specify route policies for peering using import and export custom routes, you must specify all peering related parameters (name, peer network, exchange_subnet_routes) in the network_peering field. The corresponding fields in NetworksAddPeeringRequest will be deprecated soon.
     * </pre>
     *
     * <code>optional .google.cloud.compute.v1.NetworkPeering network_peering = 328926767;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.compute.v1.NetworkPeering,
            com.google.cloud.compute.v1.NetworkPeering.Builder,
            com.google.cloud.compute.v1.NetworkPeeringOrBuilder>
        getNetworkPeeringFieldBuilder() {
      if (networkPeeringBuilder_ == null) {
        networkPeeringBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.compute.v1.NetworkPeering,
                com.google.cloud.compute.v1.NetworkPeering.Builder,
                com.google.cloud.compute.v1.NetworkPeeringOrBuilder>(
                getNetworkPeering(), getParentForChildren(), isClean());
        networkPeering_ = null;
      }
      return networkPeeringBuilder_;
    }

    private java.lang.Object peerNetwork_ = "";
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @return Whether the peerNetwork field is set.
     */
    public boolean hasPeerNetwork() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @return The peerNetwork.
     */
    public java.lang.String getPeerNetwork() {
      java.lang.Object ref = peerNetwork_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        peerNetwork_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @return The bytes for peerNetwork.
     */
    public com.google.protobuf.ByteString getPeerNetworkBytes() {
      java.lang.Object ref = peerNetwork_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        peerNetwork_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @param value The peerNetwork to set.
     * @return This builder for chaining.
     */
    public Builder setPeerNetwork(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      peerNetwork_ = value;
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearPeerNetwork() {
      peerNetwork_ = getDefaultInstance().getPeerNetwork();
      bitField0_ = (bitField0_ & ~0x00000008);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
     * </pre>
     *
     * <code>optional string peer_network = 500625489;</code>
     *
     * @param value The bytes for peerNetwork to set.
     * @return This builder for chaining.
     */
    public Builder setPeerNetworkBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      peerNetwork_ = value;
      bitField0_ |= 0x00000008;
      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:google.cloud.compute.v1.NetworksAddPeeringRequest)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.compute.v1.NetworksAddPeeringRequest)
  private static final com.google.cloud.compute.v1.NetworksAddPeeringRequest DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.compute.v1.NetworksAddPeeringRequest();
  }

  public static com.google.cloud.compute.v1.NetworksAddPeeringRequest getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public com.google.cloud.compute.v1.NetworksAddPeeringRequest getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
