summaryrefslogtreecommitdiff
path: root/intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php
diff options
context:
space:
mode:
authorhorus_arch2017-02-20 12:42:43 +0100
committerhorus_arch2017-02-20 12:42:43 +0100
commit95c15758b50144105064d2613d1e9a9da23d4e7c (patch)
tree373eea2812fa4a7c6f58c16528e2875a208b1ada /intern.gospeladlershof.de/vendor/pda/pheanstalk/src/Socket/WriteHistory.php
parent3702922f4ab7f3d73f802b94d8b36571c589cb2c (diff)
downloadgospeladlershof.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.php64
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;
+ }
+}