debug) { $msg = str_replace("\r", '\r', $msg); $msg = str_replace("\n", '\n', $msg); DiTestMsg::dbg(trim($msg), $this->__componentName); } } private function err($msg) { DiTestMsg::err(trim($msg), $this->__componentName); } private function warn($msg) { DiTestMsg::warn(trim($msg), $this->__componentName); } private function fail($msg) { DiTestMsg::fail(trim($msg), $this->__componentName); } private function pass($msg) { DiTestMsg::pass(trim($msg), $this->__componentName); } function __construct($host, $port = 2001, $debug = false) { $this->debug = $debug; $this->__fd = fsockopen($host, $port, $errno, $errstr, 3); if ($this->__fd === FALSE) { $this->fail("$errstr ($errno)"); } else { $this->debug($host); $this->debug($port); $this->setInfo("host", $host); $this->setInfo("port", $port); } } function __destruct() { if ($this->__fd) { fclose($this->__fd); $this->__fd = null; } } function setInfo($key, $value) { $this->__info[$key] = $value; } function getInfo($key) { return $this->__info[$key]; } private function reply() { if ($this->__fd) { $reply = fgets($this->__fd); $this->debug("[reply] \"$reply\""); return $reply; } return ""; } private function request($cmd) { if ($this->__fd) { $cmd .= "\r\n"; $this->debug("[request] cmd: \"$cmd\""); fputs($this->__fd, $cmd); } } public function flush() { stream_set_blocking($this->__fd, false); stream_set_timeout($this->__fd, 1); do { $rep = $this->reply(); } while ($rep); stream_set_blocking($this->__fd, true); } public function sendMessage($msg) { $this->request($msg); } public function getMessage() { // eat echo $rep = $this->reply(); // get reply $rep = $this->reply(); return $rep; } public function getState() { $this->flush(); $this->sendMessage("devdata"); $rep = $this->reply(); // eat echo $rep = $this->reply(); // state var_dump($rep); return $rep; } public function getToken() { $this->flush(); $this->sendMessage("devdata"); $rep = $this->reply(); // eat echo $rep = $this->reply(); // state $rep = $this->reply(); // token var_dump($rep); return $rep; } public function getError() { $this->flush(); $this->sendMessage("devdata"); $rep = $this->reply(); // eat echo $rep = $this->reply(); // state $rep = $this->reply(); // token $rep = $this->reply(); // error var_dump($rep); if (strpos($rep, "error: true" )) return true; return false; } public function getReply() { $rep = $this->reply(); return $rep; } }