Author: chirino
Date: Wed Apr 19 11:08:15 2006
New Revision: 395331

URL: http://svn.apache.org/viewcvs?rev=395331&view=rev
Log:
Add \n after the frame terminator \0

Modified:
    incubator/activemq/trunk/stomp/php/Stomp.php

Modified: incubator/activemq/trunk/stomp/php/Stomp.php
URL: 
http://svn.apache.org/viewcvs/incubator/activemq/trunk/stomp/php/Stomp.php?rev=395331&r1=395330&r2=395331&view=diff
==============================================================================
--- incubator/activemq/trunk/stomp/php/Stomp.php (original)
+++ incubator/activemq/trunk/stomp/php/Stomp.php Wed Apr 19 11:08:15 2006
@@ -26,15 +26,15 @@
  * @version $Revision$
  */
 class StompFrame {
-       var $command;
-       var $headers;
-       var $body;
-       
-       function StompFrame($command = null, $headers=null, $body=null) {
-               $this->command = $command;
-               $this->headers = $headers;
-               $this->body = $body;
-       }
+    var $command;
+    var $headers;
+    var $body;
+    
+    function StompFrame($command = null, $headers=null, $body=null) {
+        $this->command = $command;
+        $this->headers = $headers;
+        $this->body = $body;
+    }
 }
 
 /**
@@ -49,152 +49,161 @@
  */
 class StompConnection {
 
-       var $socket;
+    var $socket;
 
-       function StompConnection($host, $port = 61613) {
-               $this->socket = socket_create(AF_INET, SOCK_STREAM, 0) or 
die("Could not create socket\n");
-               $result = socket_connect($this->socket, $host, $port) or 
die("Could not connect to server\n");
-       }
-
-
-       function connect($userName="", $password="") {
-               $this->writeFrame( new StompFrame("CONNECT", 
array("login"=>$userName, "passcode"=> $password ) ) );
-               return $this->readFrame();
-       }
-
-       function send($destination, $body, $properties=null) {
-               $headers = array();
-               if( isset($properties) ) {
-                       foreach ($properties as $name => $value) {
-                   $headers[$name] = $value;
-                       }
-               }
-               $headers["destination"] = $destination ;
-               $this->writeFrame( new StompFrame("SEND", $headers, $body) );
-       }
-       
-       function subscribe($destination, $properties=null) {
-               $headers = array("ack"=>"client");
-               if( isset($properties) ) {
-                       foreach ($properties as $name => $value) {
-                   $headers[$name] = $value;
-                       }
-               }
-               $headers["destination"] = $destination ;
-               $this->writeFrame( new StompFrame("SUBSCRIBE", $headers) );
-       }
-       
-       function unsubscribe($destination, $properties=null) {
-               $headers = array();
-               if( isset($properties) ) {
-                       foreach ($properties as $name => $value) {
-                   $headers[$name] = $value;
-                       }
-               }
-               $headers["destination"] = $destination ;
-               $this->writeFrame( new StompFrame("UNSUBSCRIBE", $headers) );
-       }
-
-       function begin($transactionId=null) {
-               $headers = array();
-               if( isset($transactionId) ) {
+    function StompConnection($host, $port = 61613) {
+        $this->socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could 
not create socket\n");
+        $result = socket_connect($this->socket, $host, $port) or die("Could 
not connect to server\n");
+    }
+
+
+    function connect($userName="", $password="") {
+        $this->writeFrame( new StompFrame("CONNECT", array("login"=>$userName, 
"passcode"=> $password ) ) );
+        return $this->readFrame();
+    }
+
+    function send($destination, $body, $properties=null) {
+        $headers = array();
+        if( isset($properties) ) {
+            foreach ($properties as $name => $value) {
+                $headers[$name] = $value;
+            }
+        }
+        $headers["destination"] = $destination ;
+        $this->writeFrame( new StompFrame("SEND", $headers, $body) );
+    }
+    
+    function subscribe($destination, $properties=null) {
+        $headers = array("ack"=>"client");
+        if( isset($properties) ) {
+            foreach ($properties as $name => $value) {
+                $headers[$name] = $value;
+            }
+        }
+        $headers["destination"] = $destination ;
+        $this->writeFrame( new StompFrame("SUBSCRIBE", $headers) );
+    }
+    
+    function unsubscribe($destination, $properties=null) {
+        $headers = array();
+        if( isset($properties) ) {
+            foreach ($properties as $name => $value) {
+                $headers[$name] = $value;
+            }
+        }
+        $headers["destination"] = $destination ;
+        $this->writeFrame( new StompFrame("UNSUBSCRIBE", $headers) );
+    }
+
+    function begin($transactionId=null) {
+        $headers = array();
+        if( isset($transactionId) ) {
             $headers["transaction"] = $transactionId;
-               }
-               $this->writeFrame( new StompFrame("BEGIN", $headers) );
-       }
-       
-       function commit($transactionId=null) {
-               $headers = array();
-               if( isset($transactionId) ) {
+        }
+        $this->writeFrame( new StompFrame("BEGIN", $headers) );
+    }
+    
+    function commit($transactionId=null) {
+        $headers = array();
+        if( isset($transactionId) ) {
             $headers["transaction"] = $transactionId;
-               }
-               $this->writeFrame( new StompFrame("COMMIT", $headers) );
-       }
-
-       function abort($transactionId=null) {
-               $headers = array();
-               if( isset($transactionId) ) {
+        }
+        $this->writeFrame( new StompFrame("COMMIT", $headers) );
+    }
+
+    function abort($transactionId=null) {
+        $headers = array();
+        if( isset($transactionId) ) {
             $headers["transaction"] = $transactionId;
-               }
-               $this->writeFrame( new StompFrame("ABORT", $headers) );
-       }
-       
-       function acknowledge($messageId, $transactionId=null) {
-               $headers = array();
-               if( isset($transactionId) ) {
+        }
+        $this->writeFrame( new StompFrame("ABORT", $headers) );
+    }
+    
+    function acknowledge($messageId, $transactionId=null) {
+        $headers = array();
+        if( isset($transactionId) ) {
             $headers["transaction"] = $transactionId;
-               }
-               $headers["message-id"] = $messageId ;
-               $this->writeFrame( new StompFrame("ABORT", $headers) );
-       }
-       
-       function disconnect() {
-               $this->writeFrame( new StompFrame("DISCONNECT") );
-               socket_close($this->socket);
-       }
-       
-       function writeFrame($stompFrame) {
-               $data = $stompFrame->command . "\n";            
-               if( isset($stompFrame->headers) ) {
-                       foreach ($stompFrame->headers as $name => $value) {
-                   $data .= $name . ": " . $value . "\n";
-                       }
-               }
-               $data .= "\n";
-               if( isset($stompFrame->body) ) {
-                       $data .= $stompFrame->body;
-               }
-               $l1 = strlen($data);
-               $data .= "\x00";
-               $l2 = strlen($data);
-               
-               socket_write($this->socket, $data, strlen($data)) or die("Could 
not send stomp frame to server\n");
-       }
-       
-       function readFrame() {
-
-               $rc = socket_recv($this->socket, &$b, 1, 0);
-               
-               // I think this EOF
-               if( $rc == 0 ) {
-                       return null;
-               }
-               // I think this is no data.
-               if( $rc == false ) {
-                       return null;
-               }               
-               
-               // Read until end of frame.
-               while( ord($b) != 0  ) {
-
-                       $data .= $b;
-                       $t = ord($b);
-                                                               
-                       $rc = socket_recv($this->socket,&$b,1,0);
-                       
-                       // I think this EOF
-                       if( $rc == 0 ) {
-                               return null;
-                       }
-                       
-               }
-
-               list($header, $body) = explode("\n\n", $data, 2);
-               $header = explode("\n", $header);
-               $headers = array();
-               
-               $command = null;
-               foreach ($header as $v) {
-                  if( isset($command) ) {
-                               list($name, $value) = explode(':', $v, 2);
-                               $headers[$name]=$value;
-                  } else {
-                               $command = $v;
-                  }
-               }
-               
-               return new StompFrame($command, $headers, $body);               
-       }
+        }
+        $headers["message-id"] = $messageId ;
+        $this->writeFrame( new StompFrame("ABORT", $headers) );
+    }
+    
+    function disconnect() {
+        $this->writeFrame( new StompFrame("DISCONNECT") );
+        socket_close($this->socket);
+    }
+    
+    function writeFrame($stompFrame) {
+        $data = $stompFrame->command . "\n";        
+        if( isset($stompFrame->headers) ) {
+            foreach ($stompFrame->headers as $name => $value) {
+                $data .= $name . ": " . $value . "\n";
+            }
+        }
+        $data .= "\n";
+        if( isset($stompFrame->body) ) {
+            $data .= $stompFrame->body;
+        }
+        $l1 = strlen($data);
+        $data .= "\x00\n";
+        $l2 = strlen($data);
+        
+        socket_write($this->socket, $data, strlen($data)) or die("Could not 
send stomp frame to server\n");
+    }
+    
+    function readFrame() {
+
+        $rc = socket_recv($this->socket, &$b, 1, 0);
+        
+        // I think this EOF
+        if( $rc == 0 ) {
+            return null;
+        }
+        // I think this is no data.
+        if( $rc == false ) {
+            return null;
+        }       
+        
+        // Read until end of frame.
+        while( ord($b) != 0  ) {
+
+            $data .= $b;
+            $t = ord($b);
+                                
+            $rc = socket_recv($this->socket,&$b,1,0);
+            
+            // I think this EOF
+            if( $rc == 0 ) {
+                return null;
+            }
+            
+        }
+        
+        # Read in the \n that comes after the \0
+        $rc = socket_recv($this->socket,&$b,1,0);
+        if( $rc == 0 ) {
+            return null;
+        }
+        if( ord($b) != 10 ) {
+            return null;
+        }
+
+        list($header, $body) = explode("\n\n", $data, 2);
+        $header = explode("\n", $header);
+        $headers = array();
+        
+        $command = null;
+        foreach ($header as $v) {
+           if( isset($command) ) {
+                list($name, $value) = explode(':', $v, 2);
+                $headers[$name]=$value;
+           } else {
+                $command = $v;
+           }
+        }
+        
+        return new StompFrame($command, $headers, $body);       
+    }
 }
 
 ?>


Reply via email to