fixed some warnings
[PHP-P10.git] / Uplink / Client.class.php
index 834448c4ba362fdd67c0b87d328a93b83119e2e0..1c3f778189cc69ad91f9394fc8e67f0f827b3f5c 100644 (file)
@@ -30,6 +30,9 @@
  * bool connect(String $host, int $port, String $bind = null, bool $ssl = false, int $blocking = 0)
  *     connects the socket to $host:$port with the provided options
  *
+ * void disconnect()
+ *     disconnects the socket
+ *
  * bool connected()
  *     returns the state of the socket (true if the socket is connected with the server)
  *
@@ -51,6 +54,7 @@ class Client {
        
        private $socket;
        private $traffic = array("in" => 0, "out" => 0);
+       private $timeout;
        
        public function connect($host, $port, $bind = null, $ssl = false, $blocking = 0) {
                if($bind)
@@ -60,18 +64,20 @@ class Client {
                $context = stream_context_create($options);
                $sock = stream_socket_client(($ssl ? 'ssl://' : '').$host.':'.$port, $errno, $errstr, 3, STREAM_CLIENT_CONNECT, $context);
                if($sock) {
-                       if($blocking) {
-                               stream_set_blocking($sock, true);
-                               stream_set_timeout($sock, 0, ($blocking / 1000));
-                       } else {
-                               stream_set_blocking($sock, false);
-                       }
+                       $this->timeout = $blocking * 1000;
+                       stream_set_blocking($sock, false);
                        $this->socket = $sock;
                        return true;
                } else
                        return false;
        }
        
+       public function disconnect() {
+               if($this->socket == null) return;
+               fclose($this->socket);
+               $this->socket = null;
+       }
+       
        public function connected() {
                if($this->socket == null) return false;
                $read = array($this->socket);
@@ -89,7 +95,7 @@ class Client {
                $read = array($this->socket);
                $write= null;
                $except=null;
-               $n=@stream_select($read, $write, $except, 0);
+               $n=@stream_select($read, $write, $except, 0, $this->timeout);
                if($n === FALSE || feof($this->socket)) {
                        $this->socket = false;
                        return null;
@@ -98,7 +104,7 @@ class Client {
                        while(($line = @fgets($this->socket)) != null) {
                                $line=trim($line);
                                if(!empty($line)) {
-                                       if(DEBUG_RAW) echo"[recv] ".$line."\n";
+                                       echo"[recv] ".$line."\n";
                                        $this->traffic['in'] += strlen($line);
                                        $lines[] = $line;
                                        if(count($lines) >= self::CLIENT_RECV_MAX_LINES) break;
@@ -111,7 +117,7 @@ class Client {
        
        public function send($line, $newline = "\r\n") {
                if($this->socket == null) return;
-               if(DEBUG_RAW) echo"[send] ".$line."\n";
+               echo"[send] ".$line."\n";
                $this->traffic['out'] += strlen($line);
                fwrite($this->socket,$line.$newline);
        }