<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/compute/v1/compute.proto

namespace Google\Cloud\Compute\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\GPBUtil;
use Google\Protobuf\RepeatedField;

/**
 * The redundant Interconnect connections for this endpoint.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.WireGroupEndpointInterconnect</code>
 */
class WireGroupEndpointInterconnect extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. An Interconnect connection. You can specify the connection as
     * a partial or full URL. If the connection is in a different project from
     * the cross-site network, use a format that specifies the project. See
     * the following examples of partial and full URLs:
     *       global/interconnects/NAME
     *        projects/PROJECT_ID/global/interconnects/NAME
     *     -
     *       https://compute.googleapis.com/compute/projects/PROJECT_ID/global/interconnects/NAME
     *
     * Generated from protobuf field <code>optional string interconnect = 224601230;</code>
     */
    protected $interconnect = null;
    /**
     * Required. To configure the wire group for VLAN mode, enter a VLAN tag,
     * which is a number from `2` to `4093`. You can autoallocate a tag by
     * entering `0`. To configure the wire group for port mode, enter `-1`.
     * Review the following guidelines:
     *    - A VLAN tag must be unique for an Interconnect connection across all
     *    attachments and wire groups.
     *    - Both endpoints of a wire must use the same VLAN tag value.
     *    - Single wire and redundant type wire groups must have only one
     *    VLAN tag.
     *    - Port mode pseudowires must have a single VLAN tag with a value of
     *    `-1` for both endpoints.
     *    - Box and cross type wire groups must have two VLAN tags. The first
     *    is for the same-zone pseudowire, and the second is for the cross-zone
     *    pseudowire.
     *
     * Generated from protobuf field <code>repeated int32 vlan_tags = 384601461;</code>
     */
    private $vlan_tags;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $interconnect
     *           Required. An Interconnect connection. You can specify the connection as
     *           a partial or full URL. If the connection is in a different project from
     *           the cross-site network, use a format that specifies the project. See
     *           the following examples of partial and full URLs:
     *                 global/interconnects/NAME
     *                  projects/PROJECT_ID/global/interconnects/NAME
     *               -
     *                 https://compute.googleapis.com/compute/projects/PROJECT_ID/global/interconnects/NAME
     *     @type int[] $vlan_tags
     *           Required. To configure the wire group for VLAN mode, enter a VLAN tag,
     *           which is a number from `2` to `4093`. You can autoallocate a tag by
     *           entering `0`. To configure the wire group for port mode, enter `-1`.
     *           Review the following guidelines:
     *              - A VLAN tag must be unique for an Interconnect connection across all
     *              attachments and wire groups.
     *              - Both endpoints of a wire must use the same VLAN tag value.
     *              - Single wire and redundant type wire groups must have only one
     *              VLAN tag.
     *              - Port mode pseudowires must have a single VLAN tag with a value of
     *              `-1` for both endpoints.
     *              - Box and cross type wire groups must have two VLAN tags. The first
     *              is for the same-zone pseudowire, and the second is for the cross-zone
     *              pseudowire.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. An Interconnect connection. You can specify the connection as
     * a partial or full URL. If the connection is in a different project from
     * the cross-site network, use a format that specifies the project. See
     * the following examples of partial and full URLs:
     *       global/interconnects/NAME
     *        projects/PROJECT_ID/global/interconnects/NAME
     *     -
     *       https://compute.googleapis.com/compute/projects/PROJECT_ID/global/interconnects/NAME
     *
     * Generated from protobuf field <code>optional string interconnect = 224601230;</code>
     * @return string
     */
    public function getInterconnect()
    {
        return isset($this->interconnect) ? $this->interconnect : '';
    }

    public function hasInterconnect()
    {
        return isset($this->interconnect);
    }

    public function clearInterconnect()
    {
        unset($this->interconnect);
    }

    /**
     * Required. An Interconnect connection. You can specify the connection as
     * a partial or full URL. If the connection is in a different project from
     * the cross-site network, use a format that specifies the project. See
     * the following examples of partial and full URLs:
     *       global/interconnects/NAME
     *        projects/PROJECT_ID/global/interconnects/NAME
     *     -
     *       https://compute.googleapis.com/compute/projects/PROJECT_ID/global/interconnects/NAME
     *
     * Generated from protobuf field <code>optional string interconnect = 224601230;</code>
     * @param string $var
     * @return $this
     */
    public function setInterconnect($var)
    {
        GPBUtil::checkString($var, True);
        $this->interconnect = $var;

        return $this;
    }

    /**
     * Required. To configure the wire group for VLAN mode, enter a VLAN tag,
     * which is a number from `2` to `4093`. You can autoallocate a tag by
     * entering `0`. To configure the wire group for port mode, enter `-1`.
     * Review the following guidelines:
     *    - A VLAN tag must be unique for an Interconnect connection across all
     *    attachments and wire groups.
     *    - Both endpoints of a wire must use the same VLAN tag value.
     *    - Single wire and redundant type wire groups must have only one
     *    VLAN tag.
     *    - Port mode pseudowires must have a single VLAN tag with a value of
     *    `-1` for both endpoints.
     *    - Box and cross type wire groups must have two VLAN tags. The first
     *    is for the same-zone pseudowire, and the second is for the cross-zone
     *    pseudowire.
     *
     * Generated from protobuf field <code>repeated int32 vlan_tags = 384601461;</code>
     * @return RepeatedField<int>
     */
    public function getVlanTags()
    {
        return $this->vlan_tags;
    }

    /**
     * Required. To configure the wire group for VLAN mode, enter a VLAN tag,
     * which is a number from `2` to `4093`. You can autoallocate a tag by
     * entering `0`. To configure the wire group for port mode, enter `-1`.
     * Review the following guidelines:
     *    - A VLAN tag must be unique for an Interconnect connection across all
     *    attachments and wire groups.
     *    - Both endpoints of a wire must use the same VLAN tag value.
     *    - Single wire and redundant type wire groups must have only one
     *    VLAN tag.
     *    - Port mode pseudowires must have a single VLAN tag with a value of
     *    `-1` for both endpoints.
     *    - Box and cross type wire groups must have two VLAN tags. The first
     *    is for the same-zone pseudowire, and the second is for the cross-zone
     *    pseudowire.
     *
     * Generated from protobuf field <code>repeated int32 vlan_tags = 384601461;</code>
     * @param int[] $var
     * @return $this
     */
    public function setVlanTags($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
        $this->vlan_tags = $arr;

        return $this;
    }

}

