Browse Source

Implemented Response::read. This new method groups Response::getPrefix and Response::getHeader (and reduces the overhead of unnecessary method calls).

Daniele Alessandri 15 years ago
parent
commit
75fad0a027
1 changed files with 10 additions and 17 deletions
  1. 10 17
      lib/Predis.php

+ 10 - 17
lib/Predis.php

@@ -329,9 +329,7 @@ class Response {
 
                 if ($listLength > 0) {
                     for ($i = 0; $i < $listLength; $i++) {
-                        Response::getHeader($socket, $mbPrefix, $mbPayload);
-                        $handler  = Response::getPrefixHandler($mbPrefix);
-                        $list[] = $handler($socket, $mbPrefix, $mbPayload);
+                        $list[] = Response::read($socket);
                     }
                 }
 
@@ -353,20 +351,20 @@ class Response {
         );
     }
 
-    public static function getPrefixHandler($prefix) {
+    public static function read($socket) {
+        $header  = fgets($socket);
+        $prefix  = $header[0];
+        $payload = substr($header, 1, -2);
+
         if (self::$_prefixHandlers === null) {
             self::$_prefixHandlers = self::initializePrefixHandlers();
         }
         if (!isset(self::$_prefixHandlers[$prefix])) {
             throw new MalformedServerResponse("Unknown prefix '$prefix'");
         }
-        return self::$_prefixHandlers[$prefix];
-    }
 
-    public static function getHeader($socket, &$prefix, &$payload) {
-        $header  = fgets($socket);
-        $prefix  = $header[0];
-        $payload = substr($header, 1, -2);
+        $handler = self::$_prefixHandlers[$prefix];
+        return $handler($socket, $prefix, $payload);
     }
 }
 
@@ -662,10 +660,7 @@ class Connection implements IConnection {
     }
 
     public function readResponse(Command $command) {
-        $socket   = $this->getSocket();
-        Response::getHeader($socket, $prefix, $payload);
-        $handler  = Response::getPrefixHandler($prefix);
-        $response = $handler($socket, $prefix, $payload);
+        $response = Response::read($this->getSocket());
         return isset($response->queued) ? $response : $command->parseResponse($response);
     }
 
@@ -675,9 +670,7 @@ class Connection implements IConnection {
         if ($closesConnection) {
             return;
         }
-        Response::getHeader($socket, $prefix, $payload);
-        $handler  = Response::getPrefixHandler($prefix);
-        return $handler($socket, $prefix, $payload);
+        return Response::read($socket);
     }
 
     public function getSocket() {