From 17db624e1e4e3ab81dc7649265bc2e3821ae5ff7 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@41a61cd8-c433-0410-bb1c-e256eeef9e11> Date: Fri, 31 Aug 2007 23:39:19 +0000 Subject: [PATCH] r1154@dev030 (orig r57962): jwang | 2007-08-31 16:45:53 -0700 Summary: Checking in fix to TFileTransport to remove redundant behavior of readEvent -- just return NULL or the next event 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: http://svn.facebook.com/svnroot/thrift/trunk@562 41a61cd8-c433-0410-bb1c-e256eeef9e11 --- compiler/cpp/src/generate/t_php_generator.cc | 26 ++++++++++++++------------ lib/cpp/src/transport/TFileTransport.cpp | 21 +++++++++------------ lib/cpp/src/transport/TFileTransport.h | 2 +- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc index f78a7dc..b913185 100644 --- a/compiler/cpp/src/generate/t_php_generator.cc +++ b/compiler/cpp/src/generate/t_php_generator.cc @@ -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& fields = xs->get_members(); - vector::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& fields = xs->get_members(); + vector::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); + } } /** diff --git a/lib/cpp/src/transport/TFileTransport.cpp b/lib/cpp/src/transport/TFileTransport.cpp index 191ec25..8b55715 100644 --- a/lib/cpp/src/transport/TFileTransport.cpp +++ b/lib/cpp/src/transport/TFileTransport.cpp @@ -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; } } } diff --git a/lib/cpp/src/transport/TFileTransport.h b/lib/cpp/src/transport/TFileTransport.h index abd8928..f249ff9 100644 --- a/lib/cpp/src/transport/TFileTransport.h +++ b/lib/cpp/src/transport/TFileTransport.h @@ -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(); -- 2.11.4.GIT