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

namespace Google\Cloud\StorageTransfer\V1;

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

/**
 * Specifies the metadata options for running a transfer.
 *
 * Generated from protobuf message <code>google.storagetransfer.v1.MetadataOptions</code>
 */
class MetadataOptions extends \Google\Protobuf\Internal\Message
{
    /**
     * Specifies how symlinks should be handled by the transfer. By default,
     * symlinks are not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Symlink symlink = 1;</code>
     */
    private $symlink = 0;
    /**
     * Specifies how each file's mode attribute should be handled by the transfer.
     * By default, mode is not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Mode mode = 2;</code>
     */
    private $mode = 0;
    /**
     * Specifies how each file's POSIX group ID (GID) attribute should be handled
     * by the transfer. By default, GID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.GID gid = 3;</code>
     */
    private $gid = 0;
    /**
     * Specifies how each file's POSIX user ID (UID) attribute should be handled
     * by the transfer. By default, UID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.UID uid = 4;</code>
     */
    private $uid = 0;
    /**
     * Specifies how each object's ACLs should be preserved for transfers between
     * Google Cloud Storage buckets. If unspecified, the default behavior is the
     * same as ACL_DESTINATION_BUCKET_DEFAULT.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Acl acl = 5;</code>
     */
    private $acl = 0;
    /**
     * Specifies the storage class to set on objects being transferred to Google
     * Cloud Storage buckets.  If unspecified, the default behavior is the same as
     * [STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.StorageClass.STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.StorageClass storage_class = 6;</code>
     */
    private $storage_class = 0;
    /**
     * Specifies how each object's temporary hold status should be preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TEMPORARY_HOLD_PRESERVE][google.storagetransfer.v1.MetadataOptions.TemporaryHold.TEMPORARY_HOLD_PRESERVE].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TemporaryHold temporary_hold = 7;</code>
     */
    private $temporary_hold = 0;
    /**
     * Specifies how each object's Cloud KMS customer-managed encryption key
     * (CMEK) is preserved for transfers between Google Cloud Storage buckets.  If
     * unspecified, the default behavior is the same as
     * [KMS_KEY_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.KmsKey.KMS_KEY_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.KmsKey kms_key = 8;</code>
     */
    private $kms_key = 0;
    /**
     * Specifies how each object's `timeCreated` metadata is preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TIME_CREATED_SKIP][google.storagetransfer.v1.MetadataOptions.TimeCreated.TIME_CREATED_SKIP].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TimeCreated time_created = 9;</code>
     */
    private $time_created = 0;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int $symlink
     *           Specifies how symlinks should be handled by the transfer. By default,
     *           symlinks are not preserved. Only applicable to transfers involving
     *           POSIX file systems, and ignored for other transfers.
     *     @type int $mode
     *           Specifies how each file's mode attribute should be handled by the transfer.
     *           By default, mode is not preserved. Only applicable to transfers involving
     *           POSIX file systems, and ignored for other transfers.
     *     @type int $gid
     *           Specifies how each file's POSIX group ID (GID) attribute should be handled
     *           by the transfer. By default, GID is not preserved. Only applicable to
     *           transfers involving POSIX file systems, and ignored for other transfers.
     *     @type int $uid
     *           Specifies how each file's POSIX user ID (UID) attribute should be handled
     *           by the transfer. By default, UID is not preserved. Only applicable to
     *           transfers involving POSIX file systems, and ignored for other transfers.
     *     @type int $acl
     *           Specifies how each object's ACLs should be preserved for transfers between
     *           Google Cloud Storage buckets. If unspecified, the default behavior is the
     *           same as ACL_DESTINATION_BUCKET_DEFAULT.
     *     @type int $storage_class
     *           Specifies the storage class to set on objects being transferred to Google
     *           Cloud Storage buckets.  If unspecified, the default behavior is the same as
     *           [STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.StorageClass.STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT].
     *     @type int $temporary_hold
     *           Specifies how each object's temporary hold status should be preserved for
     *           transfers between Google Cloud Storage buckets.  If unspecified, the
     *           default behavior is the same as
     *           [TEMPORARY_HOLD_PRESERVE][google.storagetransfer.v1.MetadataOptions.TemporaryHold.TEMPORARY_HOLD_PRESERVE].
     *     @type int $kms_key
     *           Specifies how each object's Cloud KMS customer-managed encryption key
     *           (CMEK) is preserved for transfers between Google Cloud Storage buckets.  If
     *           unspecified, the default behavior is the same as
     *           [KMS_KEY_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.KmsKey.KMS_KEY_DESTINATION_BUCKET_DEFAULT].
     *     @type int $time_created
     *           Specifies how each object's `timeCreated` metadata is preserved for
     *           transfers between Google Cloud Storage buckets.  If unspecified, the
     *           default behavior is the same as
     *           [TIME_CREATED_SKIP][google.storagetransfer.v1.MetadataOptions.TimeCreated.TIME_CREATED_SKIP].
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Storagetransfer\V1\TransferTypes::initOnce();
        parent::__construct($data);
    }

    /**
     * Specifies how symlinks should be handled by the transfer. By default,
     * symlinks are not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Symlink symlink = 1;</code>
     * @return int
     */
    public function getSymlink()
    {
        return $this->symlink;
    }

    /**
     * Specifies how symlinks should be handled by the transfer. By default,
     * symlinks are not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Symlink symlink = 1;</code>
     * @param int $var
     * @return $this
     */
    public function setSymlink($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\Symlink::class);
        $this->symlink = $var;

        return $this;
    }

    /**
     * Specifies how each file's mode attribute should be handled by the transfer.
     * By default, mode is not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Mode mode = 2;</code>
     * @return int
     */
    public function getMode()
    {
        return $this->mode;
    }

    /**
     * Specifies how each file's mode attribute should be handled by the transfer.
     * By default, mode is not preserved. Only applicable to transfers involving
     * POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Mode mode = 2;</code>
     * @param int $var
     * @return $this
     */
    public function setMode($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\Mode::class);
        $this->mode = $var;

        return $this;
    }

    /**
     * Specifies how each file's POSIX group ID (GID) attribute should be handled
     * by the transfer. By default, GID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.GID gid = 3;</code>
     * @return int
     */
    public function getGid()
    {
        return $this->gid;
    }

    /**
     * Specifies how each file's POSIX group ID (GID) attribute should be handled
     * by the transfer. By default, GID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.GID gid = 3;</code>
     * @param int $var
     * @return $this
     */
    public function setGid($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\GID::class);
        $this->gid = $var;

        return $this;
    }

    /**
     * Specifies how each file's POSIX user ID (UID) attribute should be handled
     * by the transfer. By default, UID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.UID uid = 4;</code>
     * @return int
     */
    public function getUid()
    {
        return $this->uid;
    }

    /**
     * Specifies how each file's POSIX user ID (UID) attribute should be handled
     * by the transfer. By default, UID is not preserved. Only applicable to
     * transfers involving POSIX file systems, and ignored for other transfers.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.UID uid = 4;</code>
     * @param int $var
     * @return $this
     */
    public function setUid($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\UID::class);
        $this->uid = $var;

        return $this;
    }

    /**
     * Specifies how each object's ACLs should be preserved for transfers between
     * Google Cloud Storage buckets. If unspecified, the default behavior is the
     * same as ACL_DESTINATION_BUCKET_DEFAULT.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Acl acl = 5;</code>
     * @return int
     */
    public function getAcl()
    {
        return $this->acl;
    }

    /**
     * Specifies how each object's ACLs should be preserved for transfers between
     * Google Cloud Storage buckets. If unspecified, the default behavior is the
     * same as ACL_DESTINATION_BUCKET_DEFAULT.
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.Acl acl = 5;</code>
     * @param int $var
     * @return $this
     */
    public function setAcl($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\Acl::class);
        $this->acl = $var;

        return $this;
    }

    /**
     * Specifies the storage class to set on objects being transferred to Google
     * Cloud Storage buckets.  If unspecified, the default behavior is the same as
     * [STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.StorageClass.STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.StorageClass storage_class = 6;</code>
     * @return int
     */
    public function getStorageClass()
    {
        return $this->storage_class;
    }

    /**
     * Specifies the storage class to set on objects being transferred to Google
     * Cloud Storage buckets.  If unspecified, the default behavior is the same as
     * [STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.StorageClass.STORAGE_CLASS_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.StorageClass storage_class = 6;</code>
     * @param int $var
     * @return $this
     */
    public function setStorageClass($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\StorageClass::class);
        $this->storage_class = $var;

        return $this;
    }

    /**
     * Specifies how each object's temporary hold status should be preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TEMPORARY_HOLD_PRESERVE][google.storagetransfer.v1.MetadataOptions.TemporaryHold.TEMPORARY_HOLD_PRESERVE].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TemporaryHold temporary_hold = 7;</code>
     * @return int
     */
    public function getTemporaryHold()
    {
        return $this->temporary_hold;
    }

    /**
     * Specifies how each object's temporary hold status should be preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TEMPORARY_HOLD_PRESERVE][google.storagetransfer.v1.MetadataOptions.TemporaryHold.TEMPORARY_HOLD_PRESERVE].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TemporaryHold temporary_hold = 7;</code>
     * @param int $var
     * @return $this
     */
    public function setTemporaryHold($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\TemporaryHold::class);
        $this->temporary_hold = $var;

        return $this;
    }

    /**
     * Specifies how each object's Cloud KMS customer-managed encryption key
     * (CMEK) is preserved for transfers between Google Cloud Storage buckets.  If
     * unspecified, the default behavior is the same as
     * [KMS_KEY_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.KmsKey.KMS_KEY_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.KmsKey kms_key = 8;</code>
     * @return int
     */
    public function getKmsKey()
    {
        return $this->kms_key;
    }

    /**
     * Specifies how each object's Cloud KMS customer-managed encryption key
     * (CMEK) is preserved for transfers between Google Cloud Storage buckets.  If
     * unspecified, the default behavior is the same as
     * [KMS_KEY_DESTINATION_BUCKET_DEFAULT][google.storagetransfer.v1.MetadataOptions.KmsKey.KMS_KEY_DESTINATION_BUCKET_DEFAULT].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.KmsKey kms_key = 8;</code>
     * @param int $var
     * @return $this
     */
    public function setKmsKey($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\KmsKey::class);
        $this->kms_key = $var;

        return $this;
    }

    /**
     * Specifies how each object's `timeCreated` metadata is preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TIME_CREATED_SKIP][google.storagetransfer.v1.MetadataOptions.TimeCreated.TIME_CREATED_SKIP].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TimeCreated time_created = 9;</code>
     * @return int
     */
    public function getTimeCreated()
    {
        return $this->time_created;
    }

    /**
     * Specifies how each object's `timeCreated` metadata is preserved for
     * transfers between Google Cloud Storage buckets.  If unspecified, the
     * default behavior is the same as
     * [TIME_CREATED_SKIP][google.storagetransfer.v1.MetadataOptions.TimeCreated.TIME_CREATED_SKIP].
     *
     * Generated from protobuf field <code>.google.storagetransfer.v1.MetadataOptions.TimeCreated time_created = 9;</code>
     * @param int $var
     * @return $this
     */
    public function setTimeCreated($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\StorageTransfer\V1\MetadataOptions\TimeCreated::class);
        $this->time_created = $var;

        return $this;
    }

}

