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: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665245 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 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 @@
* @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);
+ }
}
/**
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::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 @@
remaining);
}
delete(currentEvent_);
- currentEvent_ = 0;
+ currentEvent_ = NULL;
return remaining;
}
@@ -477,7 +477,7 @@
return len;
}
-bool TFileTransport::readEvent() {
+eventInfo* TFileTransport::readEvent() {
int readTries = 0;
if (!readBuff_) {
@@ -499,7 +499,6 @@
// 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 @@
} 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 @@
// 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 @@
void writerThread();
// helper functions for reading from a file
- bool readEvent();
+ eventInfo* readEvent();
// event corruption-related functions
bool isEventCorrupted();