<?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\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * The network endpoint.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.NetworkEndpoint</code>
 */
class NetworkEndpoint extends \Google\Protobuf\Internal\Message
{
    /**
     * Optional metadata defined as annotations on the network endpoint.
     *
     * Generated from protobuf field <code>map<string, string> annotations = 112032548;</code>
     */
    private $annotations;
    /**
     * Represents the port number to which PSC consumer sends packets.
     * Optional. Only valid for network endpoint groups created withGCE_VM_IP_PORTMAP endpoint type.
     *
     * Generated from protobuf field <code>optional int32 client_destination_port = 123765766;</code>
     */
    protected $client_destination_port = null;
    /**
     * Optional fully qualified domain name of network endpoint. This can only be
     * specified when NetworkEndpointGroup.network_endpoint_type isNON_GCP_FQDN_PORT.
     *
     * Generated from protobuf field <code>optional string fqdn = 3150485;</code>
     */
    protected $fqdn = null;
    /**
     * The name or a URL of VM instance of this network endpoint.
     * Optional, the field presence depends on the network endpoint type. The
     * field is required for network endpoints of type GCE_VM_IP andGCE_VM_IP_PORT.
     * The instance must be in the same zone of network endpoint group (for zonal
     * NEGs) or in the zone within the region of the NEG (for regional NEGs).
     * If the ipAddress is specified, it must belongs to the VM
     * instance.
     * The name must be 1-63 characters long, and comply withRFC1035
     * or be a valid URL pointing to an existing instance.
     *
     * Generated from protobuf field <code>optional string instance = 18257045;</code>
     */
    protected $instance = null;
    /**
     * Optional IPv4 address of network endpoint. The IP address must belong to a
     * VM in Compute Engine (either the primary IP or as part of an aliased IP
     * range). If the IP address is not specified, then the primary IP address for
     * the VM instance in the network that the network endpoint group belongs to
     * will be used.
     * This field is redundant and need not be set for network endpoints of typeGCE_VM_IP. If set, it must be set to the primary internal IP
     * address of the attached VM instance that matches the subnetwork of the NEG.
     * The primary internal IP address from any NIC of a multi-NIC VM instance can
     * be added to a NEG as long as it matches the NEG subnetwork.
     *
     * Generated from protobuf field <code>optional string ip_address = 406272220;</code>
     */
    protected $ip_address = null;
    /**
     * Optional IPv6 address of network endpoint.
     *
     * Generated from protobuf field <code>optional string ipv6_address = 341563804;</code>
     */
    protected $ipv6_address = null;
    /**
     * Optional port number of network endpoint. If not specified, the
     * defaultPort for the network endpoint group will be used.
     * This field can not be set for network endpoints of typeGCE_VM_IP.
     *
     * Generated from protobuf field <code>optional int32 port = 3446913;</code>
     */
    protected $port = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type array|\Google\Protobuf\Internal\MapField $annotations
     *           Optional metadata defined as annotations on the network endpoint.
     *     @type int $client_destination_port
     *           Represents the port number to which PSC consumer sends packets.
     *           Optional. Only valid for network endpoint groups created withGCE_VM_IP_PORTMAP endpoint type.
     *     @type string $fqdn
     *           Optional fully qualified domain name of network endpoint. This can only be
     *           specified when NetworkEndpointGroup.network_endpoint_type isNON_GCP_FQDN_PORT.
     *     @type string $instance
     *           The name or a URL of VM instance of this network endpoint.
     *           Optional, the field presence depends on the network endpoint type. The
     *           field is required for network endpoints of type GCE_VM_IP andGCE_VM_IP_PORT.
     *           The instance must be in the same zone of network endpoint group (for zonal
     *           NEGs) or in the zone within the region of the NEG (for regional NEGs).
     *           If the ipAddress is specified, it must belongs to the VM
     *           instance.
     *           The name must be 1-63 characters long, and comply withRFC1035
     *           or be a valid URL pointing to an existing instance.
     *     @type string $ip_address
     *           Optional IPv4 address of network endpoint. The IP address must belong to a
     *           VM in Compute Engine (either the primary IP or as part of an aliased IP
     *           range). If the IP address is not specified, then the primary IP address for
     *           the VM instance in the network that the network endpoint group belongs to
     *           will be used.
     *           This field is redundant and need not be set for network endpoints of typeGCE_VM_IP. If set, it must be set to the primary internal IP
     *           address of the attached VM instance that matches the subnetwork of the NEG.
     *           The primary internal IP address from any NIC of a multi-NIC VM instance can
     *           be added to a NEG as long as it matches the NEG subnetwork.
     *     @type string $ipv6_address
     *           Optional IPv6 address of network endpoint.
     *     @type int $port
     *           Optional port number of network endpoint. If not specified, the
     *           defaultPort for the network endpoint group will be used.
     *           This field can not be set for network endpoints of typeGCE_VM_IP.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * Optional metadata defined as annotations on the network endpoint.
     *
     * Generated from protobuf field <code>map<string, string> annotations = 112032548;</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getAnnotations()
    {
        return $this->annotations;
    }

    /**
     * Optional metadata defined as annotations on the network endpoint.
     *
     * Generated from protobuf field <code>map<string, string> annotations = 112032548;</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setAnnotations($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->annotations = $arr;

        return $this;
    }

    /**
     * Represents the port number to which PSC consumer sends packets.
     * Optional. Only valid for network endpoint groups created withGCE_VM_IP_PORTMAP endpoint type.
     *
     * Generated from protobuf field <code>optional int32 client_destination_port = 123765766;</code>
     * @return int
     */
    public function getClientDestinationPort()
    {
        return isset($this->client_destination_port) ? $this->client_destination_port : 0;
    }

    public function hasClientDestinationPort()
    {
        return isset($this->client_destination_port);
    }

    public function clearClientDestinationPort()
    {
        unset($this->client_destination_port);
    }

    /**
     * Represents the port number to which PSC consumer sends packets.
     * Optional. Only valid for network endpoint groups created withGCE_VM_IP_PORTMAP endpoint type.
     *
     * Generated from protobuf field <code>optional int32 client_destination_port = 123765766;</code>
     * @param int $var
     * @return $this
     */
    public function setClientDestinationPort($var)
    {
        GPBUtil::checkInt32($var);
        $this->client_destination_port = $var;

        return $this;
    }

    /**
     * Optional fully qualified domain name of network endpoint. This can only be
     * specified when NetworkEndpointGroup.network_endpoint_type isNON_GCP_FQDN_PORT.
     *
     * Generated from protobuf field <code>optional string fqdn = 3150485;</code>
     * @return string
     */
    public function getFqdn()
    {
        return isset($this->fqdn) ? $this->fqdn : '';
    }

    public function hasFqdn()
    {
        return isset($this->fqdn);
    }

    public function clearFqdn()
    {
        unset($this->fqdn);
    }

    /**
     * Optional fully qualified domain name of network endpoint. This can only be
     * specified when NetworkEndpointGroup.network_endpoint_type isNON_GCP_FQDN_PORT.
     *
     * Generated from protobuf field <code>optional string fqdn = 3150485;</code>
     * @param string $var
     * @return $this
     */
    public function setFqdn($var)
    {
        GPBUtil::checkString($var, True);
        $this->fqdn = $var;

        return $this;
    }

    /**
     * The name or a URL of VM instance of this network endpoint.
     * Optional, the field presence depends on the network endpoint type. The
     * field is required for network endpoints of type GCE_VM_IP andGCE_VM_IP_PORT.
     * The instance must be in the same zone of network endpoint group (for zonal
     * NEGs) or in the zone within the region of the NEG (for regional NEGs).
     * If the ipAddress is specified, it must belongs to the VM
     * instance.
     * The name must be 1-63 characters long, and comply withRFC1035
     * or be a valid URL pointing to an existing instance.
     *
     * Generated from protobuf field <code>optional string instance = 18257045;</code>
     * @return string
     */
    public function getInstance()
    {
        return isset($this->instance) ? $this->instance : '';
    }

    public function hasInstance()
    {
        return isset($this->instance);
    }

    public function clearInstance()
    {
        unset($this->instance);
    }

    /**
     * The name or a URL of VM instance of this network endpoint.
     * Optional, the field presence depends on the network endpoint type. The
     * field is required for network endpoints of type GCE_VM_IP andGCE_VM_IP_PORT.
     * The instance must be in the same zone of network endpoint group (for zonal
     * NEGs) or in the zone within the region of the NEG (for regional NEGs).
     * If the ipAddress is specified, it must belongs to the VM
     * instance.
     * The name must be 1-63 characters long, and comply withRFC1035
     * or be a valid URL pointing to an existing instance.
     *
     * Generated from protobuf field <code>optional string instance = 18257045;</code>
     * @param string $var
     * @return $this
     */
    public function setInstance($var)
    {
        GPBUtil::checkString($var, True);
        $this->instance = $var;

        return $this;
    }

    /**
     * Optional IPv4 address of network endpoint. The IP address must belong to a
     * VM in Compute Engine (either the primary IP or as part of an aliased IP
     * range). If the IP address is not specified, then the primary IP address for
     * the VM instance in the network that the network endpoint group belongs to
     * will be used.
     * This field is redundant and need not be set for network endpoints of typeGCE_VM_IP. If set, it must be set to the primary internal IP
     * address of the attached VM instance that matches the subnetwork of the NEG.
     * The primary internal IP address from any NIC of a multi-NIC VM instance can
     * be added to a NEG as long as it matches the NEG subnetwork.
     *
     * Generated from protobuf field <code>optional string ip_address = 406272220;</code>
     * @return string
     */
    public function getIpAddress()
    {
        return isset($this->ip_address) ? $this->ip_address : '';
    }

    public function hasIpAddress()
    {
        return isset($this->ip_address);
    }

    public function clearIpAddress()
    {
        unset($this->ip_address);
    }

    /**
     * Optional IPv4 address of network endpoint. The IP address must belong to a
     * VM in Compute Engine (either the primary IP or as part of an aliased IP
     * range). If the IP address is not specified, then the primary IP address for
     * the VM instance in the network that the network endpoint group belongs to
     * will be used.
     * This field is redundant and need not be set for network endpoints of typeGCE_VM_IP. If set, it must be set to the primary internal IP
     * address of the attached VM instance that matches the subnetwork of the NEG.
     * The primary internal IP address from any NIC of a multi-NIC VM instance can
     * be added to a NEG as long as it matches the NEG subnetwork.
     *
     * Generated from protobuf field <code>optional string ip_address = 406272220;</code>
     * @param string $var
     * @return $this
     */
    public function setIpAddress($var)
    {
        GPBUtil::checkString($var, True);
        $this->ip_address = $var;

        return $this;
    }

    /**
     * Optional IPv6 address of network endpoint.
     *
     * Generated from protobuf field <code>optional string ipv6_address = 341563804;</code>
     * @return string
     */
    public function getIpv6Address()
    {
        return isset($this->ipv6_address) ? $this->ipv6_address : '';
    }

    public function hasIpv6Address()
    {
        return isset($this->ipv6_address);
    }

    public function clearIpv6Address()
    {
        unset($this->ipv6_address);
    }

    /**
     * Optional IPv6 address of network endpoint.
     *
     * Generated from protobuf field <code>optional string ipv6_address = 341563804;</code>
     * @param string $var
     * @return $this
     */
    public function setIpv6Address($var)
    {
        GPBUtil::checkString($var, True);
        $this->ipv6_address = $var;

        return $this;
    }

    /**
     * Optional port number of network endpoint. If not specified, the
     * defaultPort for the network endpoint group will be used.
     * This field can not be set for network endpoints of typeGCE_VM_IP.
     *
     * Generated from protobuf field <code>optional int32 port = 3446913;</code>
     * @return int
     */
    public function getPort()
    {
        return isset($this->port) ? $this->port : 0;
    }

    public function hasPort()
    {
        return isset($this->port);
    }

    public function clearPort()
    {
        unset($this->port);
    }

    /**
     * Optional port number of network endpoint. If not specified, the
     * defaultPort for the network endpoint group will be used.
     * This field can not be set for network endpoints of typeGCE_VM_IP.
     *
     * Generated from protobuf field <code>optional int32 port = 3446913;</code>
     * @param int $var
     * @return $this
     */
    public function setPort($var)
    {
        GPBUtil::checkInt32($var);
        $this->port = $var;

        return $this;
    }

}

