diff options
| author | horus_arch | 2017-02-20 12:42:43 +0100 |
|---|---|---|
| committer | horus_arch | 2017-02-20 12:42:43 +0100 |
| commit | 95c15758b50144105064d2613d1e9a9da23d4e7c (patch) | |
| tree | 373eea2812fa4a7c6f58c16528e2875a208b1ada /intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php | |
| parent | 3702922f4ab7f3d73f802b94d8b36571c589cb2c (diff) | |
| download | gospeladlershof.de-95c15758b50144105064d2613d1e9a9da23d4e7c.tar.gz | |
Committed vendor/ for lazyness.
Diffstat (limited to 'intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php')
| -rw-r--r-- | intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php b/intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php new file mode 100644 index 0000000..a01fe4c --- /dev/null +++ b/intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php @@ -0,0 +1,64 @@ +<?php + +namespace Pheanstalk\Socket; + +/** + * A limited history of recent socket write length/success. + * Facilitates retrying zero-length writes a limited number of times, + * avoiding infinite loops. + * + * Based on a patch from https://github.com/leprechaun + * https://github.com/pda/pheanstalk/pull/24 + * + * A bitfield could be used instead of an array for efficiency. + * + * @author Paul Annesley + * @package Pheanstalk + * @license http://www.opensource.org/licenses/mit-license.php + */ +class WriteHistory +{ + private $_limit; + private $_data = array(); + + /** + * @param int $limit + */ + public function __construct($limit) + { + $this->_limit = $limit; + } + + /** + * Whether the history has reached its limit of entries. + */ + public function isFull() + { + return count($this->_data) >= $this->_limit; + } + + public function hasWrites() + { + return (bool) array_sum($this->_data); + } + + public function isFullWithNoWrites() + { + return $this->isFull() && !$this->hasWrites(); + } + + /** + * Logs the return value from a write call. + * Returns the input value. + */ + public function log($write) + { + if ($this->isFull()) { + array_shift($this->_data); + } + + $this->_data[] = (int) $write; + + return $write; + } +} |
