     1: <?php
     2: /**
     3:  * Copyright 2012-2014 Rackspace US, Inc.
     4:  *
     5:  * Licensed under the Apache License, Version 2.0 (the "License");
     6:  * you may not use this file except in compliance with the License.
     7:  * You may obtain a copy of the License at
     8:  *
     9:  * http://www.apache.org/licenses/LICENSE-2.0
    10:  *
    11:  * Unless required by applicable law or agreed to in writing, software
    12:  * distributed under the License is distributed on an "AS IS" BASIS,
    13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14:  * See the License for the specific language governing permissions and
    15:  * limitations under the License.
    16:  */
    17:
    18: namespace OpenCloud\ObjectStore\Upload;
    19:
    20: /**
    21:  * Represents the current state of the Transfer.
    22:  *
    23:  * @codeCoverageIgnore
    24:  */
    25: class TransferState
    26: {
    27:     /**
    28:      * @var array Holds all of the parts which have been transferred.
    29:      */
    30:     protected $completedParts = array();
    31:
    32:     /**
    33:      * @var bool
    34:      */
    35:     protected $running;
    36:
    37:     /**
    38:      * @return $this
    39:      */
    40:     public static function factory()
    41:     {
    42:         $self = new self();
    43:
    44:         return $self->init();
    45:     }
    46:
    47:     /**
    48:      * @param TransferPart $part
    49:      */
    50:     public function addPart(TransferPart $part)
    51:     {
    52:         $this->completedParts[] = $part;
    53:     }
    54:
    55:     /**
    56:      * @return int
    57:      */
    58:     public function count()
    59:     {
    60:         return count($this->completedParts);
    61:     }
    62:
    63:     /**
    64:      * @return bool
    65:      */
    66:     public function isRunning()
    67:     {
    68:         return $this->running;
    69:     }
    70:
    71:     /**
    72:      * @return $this
    73:      */
    74:     public function init()
    75:     {
    76:         $this->running = true;
    77:
    78:         return $this;
    79:     }
    80:
    81:     /**
    82:      * @return $this
    83:      */
    84:     public function cancel()
    85:     {
    86:         $this->running = false;
    87:
    88:         return $this;
    89:     }
    90: }
    91: