public function write($data)
 {
     $history = new Pheanstalk_Socket_WriteHistory(self::WRITE_RETRIES);
     for ($written = 0, $fwrite = 0; $written < strlen($data); $written += $fwrite) {
         $fwrite = $this->_wrapper()->fwrite($this->_socket, substr($data, $written));
         $history->log($fwrite);
         if ($history->isFullWithNoWrites()) {
             throw new Pheanstalk_Exception_SocketException(sprintf('fwrite() failed to write data after %d tries', self::WRITE_RETRIES));
         }
     }
 }
 public function testDifferentInputTypes()
 {
     $history = new Pheanstalk_Socket_WriteHistory(1);
     foreach (array(null, false, 0, "", "0") as $input) {
         $this->assertEqual($history->log($input), $input);
         $this->assertTrue($history->isFullWithNoWrites());
     }
     foreach (array(true, 1, 2, "1", "2") as $input) {
         $this->assertEqual($history->log($input), $input);
         $this->assertFalse($history->isFullWithNoWrites());
     }
 }