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: