[thrift] Updating gen_phpi for new header format

Summary: This was still sending/expecting the old style (no version field); should be fixed now.
Reviewed By: mcslee
Test Plan: build and use Tablemaster and Tablet interfaces with gen-phpi
Revert: svn
DiffCamp Revision: 1435


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665306 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index 3f0569b..2f478fa 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -776,10 +776,10 @@
   // Serialize the request header
   if (binary_inline_) {
     f_service_ <<
-      indent() << "$buff = '';" << endl <<
+      indent() << "$buff = pack('N', (0x80010000 | TMessageType::REPLY)); " << endl <<
       indent() << "$buff .= pack('N', strlen('" << tfunction->get_name() << "'));" << endl <<
       indent() << "$buff .= '" << tfunction->get_name() << "';" << endl <<
-      indent() << "$buff .= pack('cN', TMessageType::REPLY, $seqid);" << endl <<
+      indent() << "$buff .= pack('N', $seqid);" << endl <<
       indent() << "$result->write($buff);" << endl <<
       indent() << "$output->write($buff);" << endl <<
       indent() << "$output->flush();" << endl;
@@ -1024,10 +1024,10 @@
       // Serialize the request header
       if (binary_inline_) {
         f_service_ <<
-          indent() << "$buff = '';" << endl <<
+          indent() << "$buff = pack('N', (0x80010000 | TMessageType::CALL));" << endl <<
           indent() << "$buff .= pack('N', strlen('" << funname << "'));" << endl <<
           indent() << "$buff .= '" << funname << "';" << endl <<
-          indent() << "$buff .= pack('cN', TMessageType::CALL, $this->seqid_);" << endl;
+          indent() << "$buff .= pack('N', $this->seqid_);" << endl;
       } else {
         f_service_ <<
           indent() << "$this->output_->writeMessageBegin('" << (*f_iter)->get_name() << "', TMessageType::CALL, $this->seqid_);" << endl;
@@ -1078,10 +1078,14 @@
 
       if (binary_inline_) {
         t_field ffname(g_type_string, "fname");
-        t_field fmtype(g_type_byte, "mtype");
         t_field fseqid(g_type_i32, "rseqid");
+        f_service_ <<
+          indent() << "$ver = unpack('N', $this->input_->readAll(4));" << endl <<
+          indent() << "$ver = $ver[1];" << endl <<
+          indent() << "$mtype = $ver & 0xff;" << endl <<
+          indent() << "$ver = $ver & 0xffff0000;" << endl <<
+          indent() << "if ($ver != 0x80010000) throw new TProtocolException('Bad version identifier: '.$ver, TProtocolException::BAD_VERSION);" << endl;
         generate_deserialize_field(f_service_, &ffname, "", true);
-        generate_deserialize_field(f_service_, &fmtype, "", true);
         generate_deserialize_field(f_service_, &fseqid, "", true);
       } else {
         f_service_ <<
@@ -1168,7 +1172,7 @@
   } else if (type->is_base_type() || type->is_enum()) {
 
     if (binary_inline_) {
-      std::string itrans = "$input";
+      std::string itrans = (inclass ? "$this->input_" : "$input");
 
       if (type->is_base_type()) {
         t_base_type::t_base tbase = ((t_base_type*)type)->get_base();