Summary: Checking in fix to TFileTransport to remove redundant behavior of readEvent...
authorJames Wang <jwang@apache.org>
Fri, 31 Aug 2007 23:45:53 +0000 (23:45 +0000)
committerJames Wang <jwang@apache.org>
Fri, 31 Aug 2007 23:45:53 +0000 (23:45 +0000)
Also, checking in changes to the php generation code I made awhile ago, but forgot to check in

Reviewed By: aditya, mcslee

Test Plan: Compiled thrift and falcon, and confirmed that falcon's print binary still worked

Revert Plan: revertible

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665245 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_php_generator.cc
lib/cpp/src/transport/TFileTransport.cpp
lib/cpp/src/transport/TFileTransport.h

index f78a7dc..b913185 100644 (file)
@@ -824,20 +824,22 @@ void t_php_generator::generate_service_helpers(t_service* tservice) {
  * @param tfunction The function
  */
 void t_php_generator::generate_php_function_helpers(t_function* tfunction) {
-  t_struct result(program_, service_name_ + "_" + tfunction->get_name() + "_result");
-  t_field success(tfunction->get_returntype(), "success", 0);
-  if (!tfunction->get_returntype()->is_void()) {
-    result.append(&success);
-  }
+  if (!tfunction->is_async()) {
+    t_struct result(program_, service_name_ + "_" + tfunction->get_name() + "_result");
+    t_field success(tfunction->get_returntype(), "success", 0);
+    if (!tfunction->get_returntype()->is_void()) {
+      result.append(&success);
+    }
 
-  t_struct* xs = tfunction->get_xceptions();
-  const vector<t_field*>& fields = xs->get_members();
-  vector<t_field*>::const_iterator f_iter;
-  for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
-    result.append(*f_iter);
-  }
+    t_struct* xs = tfunction->get_xceptions();
+    const vector<t_field*>& fields = xs->get_members();
+    vector<t_field*>::const_iterator f_iter;
+    for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
+      result.append(*f_iter);
+    }
 
-  generate_php_struct_definition(f_service_, &result, false);
+    generate_php_struct_definition(f_service_, &result, false);
+  }
 }
 
 /**
index 191ec25..8b55715 100644 (file)
@@ -448,7 +448,7 @@ uint32_t TFileTransport::readAll(uint8_t* buf, uint32_t len) {
 uint32_t TFileTransport::read(uint8_t* buf, uint32_t len) {
   // check if there an event is ready to be read
   if (!currentEvent_) {
-    readEvent();
+    currentEvent_ = readEvent();
   }
   
   // did not manage to read an event from the file. This could have happened
@@ -467,7 +467,7 @@ uint32_t TFileTransport::read(uint8_t* buf, uint32_t len) {
              remaining);
     }
     delete(currentEvent_);
-    currentEvent_ = 0;
+    currentEvent_ = NULL;
     return remaining;
   }
   
@@ -477,7 +477,7 @@ uint32_t TFileTransport::read(uint8_t* buf, uint32_t len) {
   return len;
 }
 
-bool TFileTransport::readEvent() {
+eventInfo* TFileTransport::readEvent() {
   int readTries = 0;
 
   if (!readBuff_) {
@@ -499,7 +499,6 @@ bool TFileTransport::readEvent() {
       // read error
       if (readState_.bufferLen_ == -1) {
         readState_.resetAllValues();
-        currentEvent_ = NULL;
         GlobalOutput("TFileTransport: error while reading from file");
         throw TTransportException("TFileTransport: error while reading from file");
       } else if (readState_.bufferLen_ == 0) {  // EOF
@@ -510,14 +509,12 @@ bool TFileTransport::readEvent() {
         } else if (readTimeout_ == NO_TAIL_READ_TIMEOUT) {
           // reset state
           readState_.resetState(0);
-          currentEvent_ = NULL;
-          return false;
+          return NULL;
         } else if (readTimeout_ > 0) {
           // timeout already expired once
           if (readTries > 0) {
             readState_.resetState(0);
-            currentEvent_ = NULL;
-            return false;
+            return NULL;
           } else {
             usleep(readTimeout_ * 1000);
             readTries++;
@@ -587,14 +584,14 @@ bool TFileTransport::readEvent() {
         // check if the event has been read in full
         if (readState_.event_->eventBuffPos_ == readState_.event_->eventSize_) {
           // set the completed event to the current event
-          currentEvent_ = readState_.event_;
-          currentEvent_->eventBuffPos_ = 0;
+          eventInfo* completeEvent = readState_.event_;
+          completeEvent->eventBuffPos_ = 0;
           
-          readState_.event_ = 0;
+          readState_.event_ = NULL;
           readState_.resetState(readState_.bufferPtr_);
           
           // exit criteria
-          return true;
+          return completeEvent;
         }
       }
     }
index abd8928..f249ff9 100644 (file)
@@ -272,7 +272,7 @@ class TFileTransport : public TFileReaderTransport,
   void writerThread();
 
   // helper functions for reading from a file
-  bool readEvent();
+  eventInfo* readEvent();
 
   // event corruption-related functions
   bool isEventCorrupted();