PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` maxEntries = $maxEntries; } public function count() { return count($this->entries); } public function getIterator() { return new \ArrayIterator(array_values($this->entries)); } /** * Get the last finished command seen by the history container. * * @return CommandInterface * @throws \LogicException if no commands have been seen. */ public function getLastCommand() { if (!$this->entries) { throw new \LogicException('No commands received'); } return end($this->entries)['command']; } /** * Get the last finished request seen by the history container. * * @return RequestInterface * @throws \LogicException if no requests have been seen. */ public function getLastRequest() { if (!$this->entries) { throw new \LogicException('No requests received'); } return end($this->entries)['request']; } /** * Get the last received result or exception. * * @return ResultInterface|AwsException * @throws \LogicException if no return values have been received. */ public function getLastReturn() { if (!$this->entries) { throw new \LogicException('No entries'); } $last = end($this->entries); if (isset($last['result'])) { return $last['result']; } if (isset($last['exception'])) { return $last['exception']; } throw new \LogicException('No return value for last entry.'); } /** * Initiate an entry being added to the history. * * @param CommandInterface $cmd Command be executed. * @param RequestInterface $req Request being sent. * * @return string Returns the ticket used to finish the entry. */ public function start(CommandInterface $cmd, RequestInterface $req) { $ticket = uniqid(); $this->entries[$ticket] = [ 'command' => $cmd, 'request' => $req, 'result' => null, 'exception' => null, ]; return $ticket; } /** * Finish adding an entry to the history container. * * @param string $ticket Ticket returned from the start call. * @param mixed $result The result (an exception or AwsResult). */ public function finish($ticket, $result) { if (!isset($this->entries[$ticket])) { throw new \InvalidArgumentException('Invalid history ticket'); } if (isset($this->entries[$ticket]['result']) || isset($this->entries[$ticket]['exception']) ) { throw new \LogicException('History entry is already finished'); } if ($result instanceof \Exception) { $this->entries[$ticket]['exception'] = $result; } else { $this->entries[$ticket]['result'] = $result; } if (count($this->entries) >= $this->maxEntries) { $this->entries = array_slice($this->entries, -$this->maxEntries, null, true); } } /** * Flush the history */ public function clear() { $this->entries = []; } /** * Converts the history to an array. * * @return array */ public function toArray() { return array_values($this->entries); } }