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