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

namespace Google\Cloud\Compute\V1\BackendServiceConnectionTrackingPolicy;

use UnexpectedValueException;

/**
 * Specifies connection persistence when backends are unhealthy. The default value is DEFAULT_FOR_PROTOCOL. If set to DEFAULT_FOR_PROTOCOL, the existing connections persist on unhealthy backends only for connection-oriented protocols (TCP and SCTP) and only if the Tracking Mode is PER_CONNECTION (default tracking mode) or the Session Affinity is configured for 5-tuple. They do not persist for UDP. If set to NEVER_PERSIST, after a backend becomes unhealthy, the existing connections on the unhealthy backend are never persisted on the unhealthy backend. They are always diverted to newly selected healthy backends (unless all backends are unhealthy). If set to ALWAYS_PERSIST, existing connections always persist on unhealthy backends regardless of protocol and session affinity. It is generally not recommended to use this mode overriding the default. For more details, see [Connection Persistence for Network Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-backend-service#connection-persistence) and [Connection Persistence for Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal#connection-persistence).
 *
 * Protobuf type <code>google.cloud.compute.v1.BackendServiceConnectionTrackingPolicy.ConnectionPersistenceOnUnhealthyBackends</code>
 */
class ConnectionPersistenceOnUnhealthyBackends
{
    /**
     * A value indicating that the enum field is not set.
     *
     * Generated from protobuf enum <code>UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS = 0;</code>
     */
    const UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS = 0;
    /**
     * Generated from protobuf enum <code>ALWAYS_PERSIST = 38400900;</code>
     */
    const ALWAYS_PERSIST = 38400900;
    /**
     * Generated from protobuf enum <code>DEFAULT_FOR_PROTOCOL = 145265356;</code>
     */
    const DEFAULT_FOR_PROTOCOL = 145265356;
    /**
     * Generated from protobuf enum <code>NEVER_PERSIST = 138646241;</code>
     */
    const NEVER_PERSIST = 138646241;

    private static $valueToName = [
        self::UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS => 'UNDEFINED_CONNECTION_PERSISTENCE_ON_UNHEALTHY_BACKENDS',
        self::ALWAYS_PERSIST => 'ALWAYS_PERSIST',
        self::DEFAULT_FOR_PROTOCOL => 'DEFAULT_FOR_PROTOCOL',
        self::NEVER_PERSIST => 'NEVER_PERSIST',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}


