| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 | <?phpnamespace GuzzleHttp;
 
 use Psr\Http\Message\RequestInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\UriInterface;
 
 /**
 * Represents data at the point after it was transferred either successfully
 * or after a network error.
 */
 final class TransferStats
 {
 private $request;
 private $response;
 private $transferTime;
 private $handlerStats;
 private $handlerErrorData;
 
 /**
 * @param RequestInterface  $request          Request that was sent.
 * @param ResponseInterface $response         Response received (if any)
 * @param null              $transferTime     Total handler transfer time.
 * @param mixed             $handlerErrorData Handler error data.
 * @param array             $handlerStats     Handler specific stats.
 */
 public function __construct(
 RequestInterface $request,
 ResponseInterface $response = null,
 $transferTime = null,
 $handlerErrorData = null,
 $handlerStats = []
 ) {
 $this->request = $request;
 $this->response = $response;
 $this->transferTime = $transferTime;
 $this->handlerErrorData = $handlerErrorData;
 $this->handlerStats = $handlerStats;
 }
 
 /**
 * @return RequestInterface
 */
 public function getRequest()
 {
 return $this->request;
 }
 
 /**
 * Returns the response that was received (if any).
 *
 * @return ResponseInterface|null
 */
 public function getResponse()
 {
 return $this->response;
 }
 
 /**
 * Returns true if a response was received.
 *
 * @return bool
 */
 public function hasResponse()
 {
 return $this->response !== null;
 }
 
 /**
 * Gets handler specific error data.
 *
 * This might be an exception, a integer representing an error code, or
 * anything else. Relying on this value assumes that you know what handler
 * you are using.
 *
 * @return mixed
 */
 public function getHandlerErrorData()
 {
 return $this->handlerErrorData;
 }
 
 /**
 * Get the effective URI the request was sent to.
 *
 * @return UriInterface
 */
 public function getEffectiveUri()
 {
 return $this->request->getUri();
 }
 
 /**
 * Get the estimated time the request was being transferred by the handler.
 *
 * @return float Time in seconds.
 */
 public function getTransferTime()
 {
 return $this->transferTime;
 }
 
 /**
 * Gets an array of all of the handler specific transfer data.
 *
 * @return array
 */
 public function getHandlerStats()
 {
 return $this->handlerStats;
 }
 
 /**
 * Get a specific handler statistic from the handler by name.
 *
 * @param string $stat Handler specific transfer stat to retrieve.
 *
 * @return mixed|null
 */
 public function getHandlerStat($stat)
 {
 return isset($this->handlerStats[$stat])
 ? $this->handlerStats[$stat]
 : null;
 }
 }
 
 |