You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by hc...@apache.org on 2014/11/18 11:34:02 UTC
[10/37] thrift git commit: Revert "THRIFT-2729: C++ - .clang-format
created and applied"
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TDenseProtocol.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TDenseProtocol.h b/lib/cpp/src/thrift/protocol/TDenseProtocol.h
index e7f2cd2..4808d79 100644
--- a/lib/cpp/src/thrift/protocol/TDenseProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TDenseProtocol.h
@@ -22,9 +22,7 @@
#include <thrift/protocol/TBinaryProtocol.h>
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
/**
* !!!WARNING!!!
@@ -58,13 +56,14 @@ namespace protocol {
* methods within our versions.
*
*/
-class TDenseProtocol : public TVirtualProtocol<TDenseProtocol, TBinaryProtocol> {
-protected:
+class TDenseProtocol
+ : public TVirtualProtocol<TDenseProtocol, TBinaryProtocol> {
+ protected:
static const int32_t VERSION_MASK = ((int32_t)0xffff0000);
// VERSION_1 (0x80010000) is taken by TBinaryProtocol.
static const int32_t VERSION_2 = ((int32_t)0x80020000);
-public:
+ public:
typedef apache::thrift::reflection::local::TypeSpec TypeSpec;
static const int FP_PREFIX_LEN;
@@ -72,13 +71,20 @@ public:
* @param tran The transport to use.
* @param type_spec The TypeSpec of the structures using this protocol.
*/
- TDenseProtocol(boost::shared_ptr<TTransport> trans, TypeSpec* type_spec = NULL)
- : TVirtualProtocol<TDenseProtocol, TBinaryProtocol>(trans),
- type_spec_(type_spec),
- standalone_(true) {}
+ TDenseProtocol(boost::shared_ptr<TTransport> trans,
+ TypeSpec* type_spec = NULL) :
+ TVirtualProtocol<TDenseProtocol, TBinaryProtocol>(trans),
+ type_spec_(type_spec),
+ standalone_(true)
+ {}
+
+ void setTypeSpec(TypeSpec* type_spec) {
+ type_spec_ = type_spec;
+ }
+ TypeSpec* getTypeSpec() {
+ return type_spec_;
+ }
- void setTypeSpec(TypeSpec* type_spec) { type_spec_ = type_spec; }
- TypeSpec* getTypeSpec() { return type_spec_; }
/*
* Writing functions.
@@ -90,17 +96,22 @@ public:
uint32_t writeMessageEnd();
+
uint32_t writeStructBegin(const char* name);
uint32_t writeStructEnd();
- uint32_t writeFieldBegin(const char* name, const TType fieldType, const int16_t fieldId);
+ uint32_t writeFieldBegin(const char* name,
+ const TType fieldType,
+ const int16_t fieldId);
uint32_t writeFieldEnd();
uint32_t writeFieldStop();
- uint32_t writeMapBegin(const TType keyType, const TType valType, const uint32_t size);
+ uint32_t writeMapBegin(const TType keyType,
+ const TType valType,
+ const uint32_t size);
uint32_t writeMapEnd();
@@ -128,6 +139,7 @@ public:
uint32_t writeBinary(const std::string& str);
+
/*
* Helper writing functions (don't do state transitions).
*/
@@ -135,13 +147,18 @@ public:
inline uint32_t subWriteString(const std::string& str);
- uint32_t subWriteBool(const bool value) { return TBinaryProtocol::writeBool(value); }
+ uint32_t subWriteBool(const bool value) {
+ return TBinaryProtocol::writeBool(value);
+ }
+
/*
* Reading functions
*/
- uint32_t readMessageBegin(std::string& name, TMessageType& messageType, int32_t& seqid);
+ uint32_t readMessageBegin(std::string& name,
+ TMessageType& messageType,
+ int32_t& seqid);
uint32_t readMessageEnd();
@@ -149,19 +166,25 @@ public:
uint32_t readStructEnd();
- uint32_t readFieldBegin(std::string& name, TType& fieldType, int16_t& fieldId);
+ uint32_t readFieldBegin(std::string& name,
+ TType& fieldType,
+ int16_t& fieldId);
uint32_t readFieldEnd();
- uint32_t readMapBegin(TType& keyType, TType& valType, uint32_t& size);
+ uint32_t readMapBegin(TType& keyType,
+ TType& valType,
+ uint32_t& size);
uint32_t readMapEnd();
- uint32_t readListBegin(TType& elemType, uint32_t& size);
+ uint32_t readListBegin(TType& elemType,
+ uint32_t& size);
uint32_t readListEnd();
- uint32_t readSetBegin(TType& elemType, uint32_t& size);
+ uint32_t readSetBegin(TType& elemType,
+ uint32_t& size);
uint32_t readSetEnd();
@@ -190,9 +213,13 @@ public:
inline uint32_t subReadString(std::string& str);
- uint32_t subReadBool(bool& value) { return TBinaryProtocol::readBool(value); }
+ uint32_t subReadBool(bool& value) {
+ return TBinaryProtocol::readBool(value);
+ }
+
+
+ private:
-private:
// Implementation functions, documented in the .cpp.
inline void checkTType(const TType ttype);
inline void stateTransition();
@@ -213,16 +240,15 @@ private:
// for standalone protocol objects.
TypeSpec* type_spec_;
- std::vector<TypeSpec*> ts_stack_; // TypeSpec stack.
- std::vector<int> idx_stack_; // InDeX stack.
- std::vector<bool> mkv_stack_; // Map Key/Vlue stack.
- // True = key, False = value.
+ std::vector<TypeSpec*> ts_stack_; // TypeSpec stack.
+ std::vector<int> idx_stack_; // InDeX stack.
+ std::vector<bool> mkv_stack_; // Map Key/Vlue stack.
+ // True = key, False = value.
// True iff this is a standalone instance (no RPC).
bool standalone_;
};
-}
-}
-} // apache::thrift::protocol
+
+}}} // apache::thrift::protocol
#endif // #ifndef _THRIFT_PROTOCOL_TDENSEPROTOCOL_H_
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp b/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
index ca450f4..a0cc8e2 100644
--- a/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
+++ b/lib/cpp/src/thrift/protocol/TJSONProtocol.cpp
@@ -26,9 +26,8 @@
using namespace apache::thrift::transport;
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
+
// Static data
@@ -64,7 +63,7 @@ static const std::string kTypeNameMap("map");
static const std::string kTypeNameList("lst");
static const std::string kTypeNameSet("set");
-static const std::string& getTypeNameForTypeID(TType typeID) {
+static const std::string &getTypeNameForTypeID(TType typeID) {
switch (typeID) {
case T_BOOL:
return kTypeNameBool;
@@ -89,11 +88,12 @@ static const std::string& getTypeNameForTypeID(TType typeID) {
case T_LIST:
return kTypeNameList;
default:
- throw TProtocolException(TProtocolException::NOT_IMPLEMENTED, "Unrecognized type");
+ throw TProtocolException(TProtocolException::NOT_IMPLEMENTED,
+ "Unrecognized type");
}
}
-static TType getTypeIDForTypeName(const std::string& name) {
+static TType getTypeIDForTypeName(const std::string &name) {
TType result = T_STOP; // Sentinel value
if (name.length() > 1) {
switch (name[0]) {
@@ -128,7 +128,8 @@ static TType getTypeIDForTypeName(const std::string& name) {
case 's':
if (name[1] == 't') {
result = T_STRING;
- } else if (name[1] == 'e') {
+ }
+ else if (name[1] == 'e') {
result = T_SET;
}
break;
@@ -138,67 +139,25 @@ static TType getTypeIDForTypeName(const std::string& name) {
}
}
if (result == T_STOP) {
- throw TProtocolException(TProtocolException::NOT_IMPLEMENTED, "Unrecognized type");
+ throw TProtocolException(TProtocolException::NOT_IMPLEMENTED,
+ "Unrecognized type");
}
return result;
}
+
// This table describes the handling for the first 0x30 characters
// 0 : escape using "\u00xx" notation
// 1 : just output index
// <other> : escape using "\<other>" notation
static const uint8_t kJSONCharTable[0x30] = {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 'b',
- 't',
- 'n',
- 0,
- 'f',
- 'r',
- 0,
- 0, // 0
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0, // 1
- 1,
- 1,
- '"',
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1, // 2
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 0, 0, 0, 0, 0, 0, 0,'b','t','n', 0,'f','r', 0, 0, // 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
+ 1, 1,'"', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
};
+
// This string's characters must match up with the elements in kEscapeCharVals.
// I don't have '/' on this list even though it appears on www.json.org --
// it is not in the RFC
@@ -207,26 +166,23 @@ const static std::string kEscapeChars("\"\\bfnrt");
// The elements of this array must match up with the sequence of characters in
// kEscapeChars
const static uint8_t kEscapeCharVals[7] = {
- '"',
- '\\',
- '\b',
- '\f',
- '\n',
- '\r',
- '\t',
+ '"', '\\', '\b', '\f', '\n', '\r', '\t',
};
+
// Static helper functions
// Read 1 character from the transport trans and verify that it is the
// expected character ch.
// Throw a protocol exception if it is not.
-static uint32_t readSyntaxChar(TJSONProtocol::LookaheadReader& reader, uint8_t ch) {
+static uint32_t readSyntaxChar(TJSONProtocol::LookaheadReader &reader,
+ uint8_t ch) {
uint8_t ch2 = reader.read();
if (ch2 != ch) {
throw TProtocolException(TProtocolException::INVALID_DATA,
- "Expected \'" + std::string((char*)&ch, 1) + "\'; got \'"
- + std::string((char*)&ch2, 1) + "\'.");
+ "Expected \'" + std::string((char *)&ch, 1) +
+ "\'; got \'" + std::string((char *)&ch2, 1) +
+ "\'.");
}
return 1;
}
@@ -236,12 +192,14 @@ static uint32_t readSyntaxChar(TJSONProtocol::LookaheadReader& reader, uint8_t c
static uint8_t hexVal(uint8_t ch) {
if ((ch >= '0') && (ch <= '9')) {
return ch - '0';
- } else if ((ch >= 'a') && (ch <= 'f')) {
+ }
+ else if ((ch >= 'a') && (ch <= 'f')) {
return ch - 'a' + 10;
- } else {
+ }
+ else {
throw TProtocolException(TProtocolException::INVALID_DATA,
- "Expected hex val ([0-9a-f]); got \'" + std::string((char*)&ch, 1)
- + "\'.");
+ "Expected hex val ([0-9a-f]); got \'"
+ + std::string((char *)&ch, 1) + "\'.");
}
}
@@ -251,7 +209,8 @@ static uint8_t hexChar(uint8_t val) {
val &= 0x0F;
if (val < 10) {
return val + '0';
- } else {
+ }
+ else {
return val - 10 + 'a';
}
}
@@ -279,30 +238,32 @@ static bool isJSONNumeric(uint8_t ch) {
return false;
}
+
/**
* Class to serve as base JSON context and as base class for other context
* implementations
*/
class TJSONContext {
-public:
- TJSONContext(){};
+ public:
+
+ TJSONContext() {};
- virtual ~TJSONContext(){};
+ virtual ~TJSONContext() {};
/**
* Write context data to the transport. Default is to do nothing.
*/
- virtual uint32_t write(TTransport& trans) {
- (void)trans;
+ virtual uint32_t write(TTransport &trans) {
+ (void) trans;
return 0;
};
/**
* Read context data from the transport. Default is to do nothing.
*/
- virtual uint32_t read(TJSONProtocol::LookaheadReader& reader) {
- (void)reader;
+ virtual uint32_t read(TJSONProtocol::LookaheadReader &reader) {
+ (void) reader;
return 0;
};
@@ -310,33 +271,41 @@ public:
* Return true if numbers need to be escaped as strings in this context.
* Default behavior is to return false.
*/
- virtual bool escapeNum() { return false; }
+ virtual bool escapeNum() {
+ return false;
+ }
};
// Context class for object member key-value pairs
class JSONPairContext : public TJSONContext {
public:
- JSONPairContext() : first_(true), colon_(true) {}
- uint32_t write(TTransport& trans) {
+ JSONPairContext() :
+ first_(true),
+ colon_(true) {
+ }
+
+ uint32_t write(TTransport &trans) {
if (first_) {
first_ = false;
colon_ = true;
return 0;
- } else {
+ }
+ else {
trans.write(colon_ ? &kJSONPairSeparator : &kJSONElemSeparator, 1);
colon_ = !colon_;
return 1;
}
}
- uint32_t read(TJSONProtocol::LookaheadReader& reader) {
+ uint32_t read(TJSONProtocol::LookaheadReader &reader) {
if (first_) {
first_ = false;
colon_ = true;
return 0;
- } else {
+ }
+ else {
uint8_t ch = (colon_ ? kJSONPairSeparator : kJSONElemSeparator);
colon_ = !colon_;
return readSyntaxChar(reader, ch);
@@ -344,52 +313,60 @@ public:
}
// Numbers must be turned into strings if they are the key part of a pair
- virtual bool escapeNum() { return colon_; }
+ virtual bool escapeNum() {
+ return colon_;
+ }
+
+ private:
-private:
- bool first_;
- bool colon_;
+ bool first_;
+ bool colon_;
};
// Context class for lists
class JSONListContext : public TJSONContext {
public:
- JSONListContext() : first_(true) {}
- uint32_t write(TTransport& trans) {
+ JSONListContext() :
+ first_(true) {
+ }
+
+ uint32_t write(TTransport &trans) {
if (first_) {
first_ = false;
return 0;
- } else {
+ }
+ else {
trans.write(&kJSONElemSeparator, 1);
return 1;
}
}
- uint32_t read(TJSONProtocol::LookaheadReader& reader) {
+ uint32_t read(TJSONProtocol::LookaheadReader &reader) {
if (first_) {
first_ = false;
return 0;
- } else {
+ }
+ else {
return readSyntaxChar(reader, kJSONElemSeparator);
}
}
-private:
- bool first_;
+ private:
+ bool first_;
};
-TJSONProtocol::TJSONProtocol(boost::shared_ptr<TTransport> ptrans)
- : TVirtualProtocol<TJSONProtocol>(ptrans),
- trans_(ptrans.get()),
- context_(new TJSONContext()),
- reader_(*ptrans) {
-}
-TJSONProtocol::~TJSONProtocol() {
+TJSONProtocol::TJSONProtocol(boost::shared_ptr<TTransport> ptrans) :
+ TVirtualProtocol<TJSONProtocol>(ptrans),
+ trans_(ptrans.get()),
+ context_(new TJSONContext()),
+ reader_(*ptrans) {
}
+TJSONProtocol::~TJSONProtocol() {}
+
void TJSONProtocol::pushContext(boost::shared_ptr<TJSONContext> c) {
contexts_.push(context_);
context_ = c;
@@ -402,7 +379,7 @@ void TJSONProtocol::popContext() {
// Write the character ch as a JSON escape sequence ("\u00xx")
uint32_t TJSONProtocol::writeJSONEscapeChar(uint8_t ch) {
- trans_->write((const uint8_t*)kJSONEscapePrefix.c_str(),
+ trans_->write((const uint8_t *)kJSONEscapePrefix.c_str(),
static_cast<uint32_t>(kJSONEscapePrefix.length()));
uint8_t outCh = hexChar(ch >> 4);
trans_->write(&outCh, 1);
@@ -418,21 +395,25 @@ uint32_t TJSONProtocol::writeJSONChar(uint8_t ch) {
trans_->write(&kJSONBackslash, 1);
trans_->write(&kJSONBackslash, 1);
return 2;
- } else {
+ }
+ else {
trans_->write(&ch, 1);
return 1;
}
- } else {
+ }
+ else {
uint8_t outCh = kJSONCharTable[ch];
// Check if regular character, backslash escaped, or JSON escaped
if (outCh == 1) {
trans_->write(&ch, 1);
return 1;
- } else if (outCh > 1) {
+ }
+ else if (outCh > 1) {
trans_->write(&kJSONBackslash, 1);
trans_->write(&outCh, 1);
return 2;
- } else {
+ }
+ else {
return writeJSONEscapeChar(ch);
}
}
@@ -440,7 +421,7 @@ uint32_t TJSONProtocol::writeJSONChar(uint8_t ch) {
// Write out the contents of the string str as a JSON string, escaping
// characters as appropriate.
-uint32_t TJSONProtocol::writeJSONString(const std::string& str) {
+uint32_t TJSONProtocol::writeJSONString(const std::string &str) {
uint32_t result = context_->write(*trans_);
result += 2; // For quotes
trans_->write(&kJSONStringDelimiter, 1);
@@ -455,13 +436,13 @@ uint32_t TJSONProtocol::writeJSONString(const std::string& str) {
// Write out the contents of the string as JSON string, base64-encoding
// the string's contents, and escaping as appropriate
-uint32_t TJSONProtocol::writeJSONBase64(const std::string& str) {
+uint32_t TJSONProtocol::writeJSONBase64(const std::string &str) {
uint32_t result = context_->write(*trans_);
result += 2; // For quotes
trans_->write(&kJSONStringDelimiter, 1);
uint8_t b[4];
- const uint8_t* bytes = (const uint8_t*)str.c_str();
- if (str.length() > (std::numeric_limits<uint32_t>::max)())
+ const uint8_t *bytes = (const uint8_t *)str.c_str();
+ if(str.length() > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
uint32_t len = static_cast<uint32_t>(str.length());
while (len >= 3) {
@@ -470,7 +451,7 @@ uint32_t TJSONProtocol::writeJSONBase64(const std::string& str) {
trans_->write(b, 4);
result += 4;
bytes += 3;
- len -= 3;
+ len -=3;
}
if (len) { // Handle remainder
base64_encode(bytes, len, b);
@@ -492,9 +473,9 @@ uint32_t TJSONProtocol::writeJSONInteger(NumberType num) {
trans_->write(&kJSONStringDelimiter, 1);
result += 1;
}
- if (val.length() > (std::numeric_limits<uint32_t>::max)())
+ if(val.length() > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
- trans_->write((const uint8_t*)val.c_str(), static_cast<uint32_t>(val.length()));
+ trans_->write((const uint8_t *)val.c_str(), static_cast<uint32_t>(val.length()));
result += static_cast<uint32_t>(val.length());
if (escapeNum) {
trans_->write(&kJSONStringDelimiter, 1);
@@ -535,9 +516,9 @@ uint32_t TJSONProtocol::writeJSONDouble(double num) {
trans_->write(&kJSONStringDelimiter, 1);
result += 1;
}
- if (val.length() > (std::numeric_limits<uint32_t>::max)())
+ if(val.length() > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
- trans_->write((const uint8_t*)val.c_str(), static_cast<uint32_t>(val.length()));
+ trans_->write((const uint8_t *)val.c_str(), static_cast<uint32_t>(val.length()));
result += static_cast<uint32_t>(val.length());
if (escapeNum) {
trans_->write(&kJSONStringDelimiter, 1);
@@ -588,7 +569,7 @@ uint32_t TJSONProtocol::writeMessageEnd() {
}
uint32_t TJSONProtocol::writeStructBegin(const char* name) {
- (void)name;
+ (void) name;
return writeJSONObjectStart();
}
@@ -599,7 +580,7 @@ uint32_t TJSONProtocol::writeStructEnd() {
uint32_t TJSONProtocol::writeFieldBegin(const char* name,
const TType fieldType,
const int16_t fieldId) {
- (void)name;
+ (void) name;
uint32_t result = writeJSONInteger(fieldId);
result += writeJSONObjectStart();
result += writeJSONString(getTypeNameForTypeID(fieldType));
@@ -629,7 +610,8 @@ uint32_t TJSONProtocol::writeMapEnd() {
return writeJSONObjectEnd() + writeJSONArrayEnd();
}
-uint32_t TJSONProtocol::writeListBegin(const TType elemType, const uint32_t size) {
+uint32_t TJSONProtocol::writeListBegin(const TType elemType,
+ const uint32_t size) {
uint32_t result = writeJSONArrayStart();
result += writeJSONString(getTypeNameForTypeID(elemType));
result += writeJSONInteger((int64_t)size);
@@ -640,7 +622,8 @@ uint32_t TJSONProtocol::writeListEnd() {
return writeJSONArrayEnd();
}
-uint32_t TJSONProtocol::writeSetBegin(const TType elemType, const uint32_t size) {
+uint32_t TJSONProtocol::writeSetBegin(const TType elemType,
+ const uint32_t size) {
uint32_t result = writeJSONArrayStart();
result += writeJSONString(getTypeNameForTypeID(elemType));
result += writeJSONInteger((int64_t)size);
@@ -685,9 +668,9 @@ uint32_t TJSONProtocol::writeBinary(const std::string& str) {
return writeJSONBase64(str);
}
-/**
- * Reading functions
- */
+ /**
+ * Reading functions
+ */
// Reads 1 byte and verifies that it matches ch.
uint32_t TJSONProtocol::readJSONSyntaxChar(uint8_t ch) {
@@ -696,7 +679,7 @@ uint32_t TJSONProtocol::readJSONSyntaxChar(uint8_t ch) {
// Decodes the four hex parts of a JSON escaped string character and returns
// the character via out. The first two characters must be "00".
-uint32_t TJSONProtocol::readJSONEscapeChar(uint8_t* out) {
+uint32_t TJSONProtocol::readJSONEscapeChar(uint8_t *out) {
uint8_t b[2];
readJSONSyntaxChar(kJSONZeroChar);
readJSONSyntaxChar(kJSONZeroChar);
@@ -707,7 +690,7 @@ uint32_t TJSONProtocol::readJSONEscapeChar(uint8_t* out) {
}
// Decodes a JSON string, including unescaping, and returns the string via str
-uint32_t TJSONProtocol::readJSONString(std::string& str, bool skipContext) {
+uint32_t TJSONProtocol::readJSONString(std::string &str, bool skipContext) {
uint32_t result = (skipContext ? 0 : context_->read(reader_));
result += readJSONSyntaxChar(kJSONStringDelimiter);
uint8_t ch;
@@ -723,12 +706,13 @@ uint32_t TJSONProtocol::readJSONString(std::string& str, bool skipContext) {
++result;
if (ch == kJSONEscapeChar) {
result += readJSONEscapeChar(&ch);
- } else {
+ }
+ else {
size_t pos = kEscapeChars.find(ch);
if (pos == std::string::npos) {
throw TProtocolException(TProtocolException::INVALID_DATA,
- "Expected control char, got '" + std::string((const char*)&ch, 1)
- + "'.");
+ "Expected control char, got '" +
+ std::string((const char *)&ch, 1) + "'.");
}
ch = kEscapeCharVals[pos];
}
@@ -739,17 +723,17 @@ uint32_t TJSONProtocol::readJSONString(std::string& str, bool skipContext) {
}
// Reads a block of base64 characters, decoding it, and returns via str
-uint32_t TJSONProtocol::readJSONBase64(std::string& str) {
+uint32_t TJSONProtocol::readJSONBase64(std::string &str) {
std::string tmp;
uint32_t result = readJSONString(tmp);
- uint8_t* b = (uint8_t*)tmp.c_str();
- if (tmp.length() > (std::numeric_limits<uint32_t>::max)())
+ uint8_t *b = (uint8_t *)tmp.c_str();
+ if(tmp.length() > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
uint32_t len = static_cast<uint32_t>(tmp.length());
str.clear();
while (len >= 4) {
base64_decode(b, 4);
- str.append((const char*)b, 3);
+ str.append((const char *)b, 3);
b += 4;
len -= 4;
}
@@ -757,14 +741,14 @@ uint32_t TJSONProtocol::readJSONBase64(std::string& str) {
// base64 but legal for skip of regular string type)
if (len > 1) {
base64_decode(b, len);
- str.append((const char*)b, len - 1);
+ str.append((const char *)b, len - 1);
}
return result;
}
// Reads a sequence of characters, stopping at the first one that is not
// a valid JSON numeric character.
-uint32_t TJSONProtocol::readJSONNumericChars(std::string& str) {
+uint32_t TJSONProtocol::readJSONNumericChars(std::string &str) {
uint32_t result = 0;
str.clear();
while (true) {
@@ -782,7 +766,7 @@ uint32_t TJSONProtocol::readJSONNumericChars(std::string& str) {
// Reads a sequence of characters and assembles them into a number,
// returning them via num
template <typename NumberType>
-uint32_t TJSONProtocol::readJSONInteger(NumberType& num) {
+uint32_t TJSONProtocol::readJSONInteger(NumberType &num) {
uint32_t result = context_->read(reader_);
if (context_->escapeNum()) {
result += readJSONSyntaxChar(kJSONStringDelimiter);
@@ -791,9 +775,11 @@ uint32_t TJSONProtocol::readJSONInteger(NumberType& num) {
result += readJSONNumericChars(str);
try {
num = boost::lexical_cast<NumberType>(str);
- } catch (boost::bad_lexical_cast e) {
+ }
+ catch (boost::bad_lexical_cast e) {
throw new TProtocolException(TProtocolException::INVALID_DATA,
- "Expected numeric value; got \"" + str + "\"");
+ "Expected numeric value; got \"" + str +
+ "\"");
}
if (context_->escapeNum()) {
result += readJSONSyntaxChar(kJSONStringDelimiter);
@@ -802,19 +788,22 @@ uint32_t TJSONProtocol::readJSONInteger(NumberType& num) {
}
// Reads a JSON number or string and interprets it as a double.
-uint32_t TJSONProtocol::readJSONDouble(double& num) {
+uint32_t TJSONProtocol::readJSONDouble(double &num) {
uint32_t result = context_->read(reader_);
std::string str;
if (reader_.peek() == kJSONStringDelimiter) {
result += readJSONString(str, true);
// Check for NaN, Infinity and -Infinity
if (str == kThriftNan) {
- num = HUGE_VAL / HUGE_VAL; // generates NaN
- } else if (str == kThriftInfinity) {
+ num = HUGE_VAL/HUGE_VAL; // generates NaN
+ }
+ else if (str == kThriftInfinity) {
num = HUGE_VAL;
- } else if (str == kThriftNegativeInfinity) {
+ }
+ else if (str == kThriftNegativeInfinity) {
num = -HUGE_VAL;
- } else {
+ }
+ else {
if (!context_->escapeNum()) {
// Throw exception -- we should not be in a string in this case
throw new TProtocolException(TProtocolException::INVALID_DATA,
@@ -822,12 +811,15 @@ uint32_t TJSONProtocol::readJSONDouble(double& num) {
}
try {
num = boost::lexical_cast<double>(str);
- } catch (boost::bad_lexical_cast e) {
+ }
+ catch (boost::bad_lexical_cast e) {
throw new TProtocolException(TProtocolException::INVALID_DATA,
- "Expected numeric value; got \"" + str + "\"");
+ "Expected numeric value; got \"" + str +
+ "\"");
}
}
- } else {
+ }
+ else {
if (context_->escapeNum()) {
// This will throw - we should have had a quote if escapeNum == true
readJSONSyntaxChar(kJSONStringDelimiter);
@@ -835,9 +827,11 @@ uint32_t TJSONProtocol::readJSONDouble(double& num) {
result += readJSONNumericChars(str);
try {
num = boost::lexical_cast<double>(str);
- } catch (boost::bad_lexical_cast e) {
+ }
+ catch (boost::bad_lexical_cast e) {
throw new TProtocolException(TProtocolException::INVALID_DATA,
- "Expected numeric value; got \"" + str + "\"");
+ "Expected numeric value; got \"" + str +
+ "\"");
}
}
return result;
@@ -876,13 +870,14 @@ uint32_t TJSONProtocol::readMessageBegin(std::string& name,
uint64_t tmpVal = 0;
result += readJSONInteger(tmpVal);
if (tmpVal != kThriftVersion1) {
- throw TProtocolException(TProtocolException::BAD_VERSION, "Message contained bad version.");
+ throw TProtocolException(TProtocolException::BAD_VERSION,
+ "Message contained bad version.");
}
result += readJSONString(name);
result += readJSONInteger(tmpVal);
messageType = (TMessageType)tmpVal;
result += readJSONInteger(tmpVal);
- if (tmpVal > static_cast<uint64_t>((std::numeric_limits<int32_t>::max)()))
+ if(tmpVal > static_cast<uint64_t>((std::numeric_limits<int32_t>::max)()))
throw TProtocolException(TProtocolException::SIZE_LIMIT);
seqid = static_cast<int32_t>(tmpVal);
return result;
@@ -893,7 +888,7 @@ uint32_t TJSONProtocol::readMessageEnd() {
}
uint32_t TJSONProtocol::readStructBegin(std::string& name) {
- (void)name;
+ (void) name;
return readJSONObjectStart();
}
@@ -901,18 +896,21 @@ uint32_t TJSONProtocol::readStructEnd() {
return readJSONObjectEnd();
}
-uint32_t TJSONProtocol::readFieldBegin(std::string& name, TType& fieldType, int16_t& fieldId) {
- (void)name;
+uint32_t TJSONProtocol::readFieldBegin(std::string& name,
+ TType& fieldType,
+ int16_t& fieldId) {
+ (void) name;
uint32_t result = 0;
// Check if we hit the end of the list
uint8_t ch = reader_.peek();
if (ch == kJSONObjectEnd) {
fieldType = apache::thrift::protocol::T_STOP;
- } else {
+ }
+ else {
uint64_t tmpVal = 0;
std::string tmpStr;
result += readJSONInteger(tmpVal);
- if (tmpVal > static_cast<uint32_t>((std::numeric_limits<int16_t>::max)()))
+ if(tmpVal > static_cast<uint32_t>((std::numeric_limits<int16_t>::max)()))
throw TProtocolException(TProtocolException::SIZE_LIMIT);
fieldId = static_cast<int16_t>(tmpVal);
result += readJSONObjectStart();
@@ -926,7 +924,9 @@ uint32_t TJSONProtocol::readFieldEnd() {
return readJSONObjectEnd();
}
-uint32_t TJSONProtocol::readMapBegin(TType& keyType, TType& valType, uint32_t& size) {
+uint32_t TJSONProtocol::readMapBegin(TType& keyType,
+ TType& valType,
+ uint32_t& size) {
uint64_t tmpVal = 0;
std::string tmpStr;
uint32_t result = readJSONArrayStart();
@@ -935,7 +935,7 @@ uint32_t TJSONProtocol::readMapBegin(TType& keyType, TType& valType, uint32_t& s
result += readJSONString(tmpStr);
valType = getTypeIDForTypeName(tmpStr);
result += readJSONInteger(tmpVal);
- if (tmpVal > (std::numeric_limits<uint32_t>::max)())
+ if(tmpVal > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
size = static_cast<uint32_t>(tmpVal);
result += readJSONObjectStart();
@@ -946,14 +946,15 @@ uint32_t TJSONProtocol::readMapEnd() {
return readJSONObjectEnd() + readJSONArrayEnd();
}
-uint32_t TJSONProtocol::readListBegin(TType& elemType, uint32_t& size) {
+uint32_t TJSONProtocol::readListBegin(TType& elemType,
+ uint32_t& size) {
uint64_t tmpVal = 0;
std::string tmpStr;
uint32_t result = readJSONArrayStart();
result += readJSONString(tmpStr);
elemType = getTypeIDForTypeName(tmpStr);
result += readJSONInteger(tmpVal);
- if (tmpVal > (std::numeric_limits<uint32_t>::max)())
+ if(tmpVal > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
size = static_cast<uint32_t>(tmpVal);
return result;
@@ -963,14 +964,15 @@ uint32_t TJSONProtocol::readListEnd() {
return readJSONArrayEnd();
}
-uint32_t TJSONProtocol::readSetBegin(TType& elemType, uint32_t& size) {
+uint32_t TJSONProtocol::readSetBegin(TType& elemType,
+ uint32_t& size) {
uint64_t tmpVal = 0;
std::string tmpStr;
uint32_t result = readJSONArrayStart();
result += readJSONString(tmpStr);
elemType = getTypeIDForTypeName(tmpStr);
result += readJSONInteger(tmpVal);
- if (tmpVal > (std::numeric_limits<uint32_t>::max)())
+ if(tmpVal > (std::numeric_limits<uint32_t>::max)())
throw TProtocolException(TProtocolException::SIZE_LIMIT);
size = static_cast<uint32_t>(tmpVal);
return result;
@@ -987,8 +989,8 @@ uint32_t TJSONProtocol::readBool(bool& value) {
// readByte() must be handled properly becuase boost::lexical cast sees int8_t
// as a text type instead of an integer type
uint32_t TJSONProtocol::readByte(int8_t& byte) {
- int16_t tmp = (int16_t)byte;
- uint32_t result = readJSONInteger(tmp);
+ int16_t tmp = (int16_t) byte;
+ uint32_t result = readJSONInteger(tmp);
assert(tmp < 256);
byte = (int8_t)tmp;
return result;
@@ -1010,13 +1012,12 @@ uint32_t TJSONProtocol::readDouble(double& dub) {
return readJSONDouble(dub);
}
-uint32_t TJSONProtocol::readString(std::string& str) {
+uint32_t TJSONProtocol::readString(std::string &str) {
return readJSONString(str);
}
-uint32_t TJSONProtocol::readBinary(std::string& str) {
+uint32_t TJSONProtocol::readBinary(std::string &str) {
return readJSONBase64(str);
}
-}
-}
-} // apache::thrift::protocol
+
+}}} // apache::thrift::protocol
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TJSONProtocol.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TJSONProtocol.h b/lib/cpp/src/thrift/protocol/TJSONProtocol.h
index b19c35d..edfc744 100644
--- a/lib/cpp/src/thrift/protocol/TJSONProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TJSONProtocol.h
@@ -24,9 +24,7 @@
#include <stack>
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
// Forward declaration
class TJSONContext;
@@ -90,12 +88,14 @@ class TJSONContext;
*
*/
class TJSONProtocol : public TVirtualProtocol<TJSONProtocol> {
-public:
+ public:
+
TJSONProtocol(boost::shared_ptr<TTransport> ptrans);
~TJSONProtocol();
-private:
+ private:
+
void pushContext(boost::shared_ptr<TJSONContext> c);
void popContext();
@@ -104,16 +104,16 @@ private:
uint32_t writeJSONChar(uint8_t ch);
- uint32_t writeJSONString(const std::string& str);
+ uint32_t writeJSONString(const std::string &str);
- uint32_t writeJSONBase64(const std::string& str);
+ uint32_t writeJSONBase64(const std::string &str);
template <typename NumberType>
uint32_t writeJSONInteger(NumberType num);
uint32_t writeJSONDouble(double num);
- uint32_t writeJSONObjectStart();
+ uint32_t writeJSONObjectStart() ;
uint32_t writeJSONObjectEnd();
@@ -123,18 +123,18 @@ private:
uint32_t readJSONSyntaxChar(uint8_t ch);
- uint32_t readJSONEscapeChar(uint8_t* out);
+ uint32_t readJSONEscapeChar(uint8_t *out);
- uint32_t readJSONString(std::string& str, bool skipContext = false);
+ uint32_t readJSONString(std::string &str, bool skipContext = false);
- uint32_t readJSONBase64(std::string& str);
+ uint32_t readJSONBase64(std::string &str);
- uint32_t readJSONNumericChars(std::string& str);
+ uint32_t readJSONNumericChars(std::string &str);
template <typename NumberType>
- uint32_t readJSONInteger(NumberType& num);
+ uint32_t readJSONInteger(NumberType &num);
- uint32_t readJSONDouble(double& num);
+ uint32_t readJSONDouble(double &num);
uint32_t readJSONObjectStart();
@@ -144,7 +144,8 @@ private:
uint32_t readJSONArrayEnd();
-public:
+ public:
+
/**
* Writing functions.
*/
@@ -159,21 +160,27 @@ public:
uint32_t writeStructEnd();
- uint32_t writeFieldBegin(const char* name, const TType fieldType, const int16_t fieldId);
+ uint32_t writeFieldBegin(const char* name,
+ const TType fieldType,
+ const int16_t fieldId);
uint32_t writeFieldEnd();
uint32_t writeFieldStop();
- uint32_t writeMapBegin(const TType keyType, const TType valType, const uint32_t size);
+ uint32_t writeMapBegin(const TType keyType,
+ const TType valType,
+ const uint32_t size);
uint32_t writeMapEnd();
- uint32_t writeListBegin(const TType elemType, const uint32_t size);
+ uint32_t writeListBegin(const TType elemType,
+ const uint32_t size);
uint32_t writeListEnd();
- uint32_t writeSetBegin(const TType elemType, const uint32_t size);
+ uint32_t writeSetBegin(const TType elemType,
+ const uint32_t size);
uint32_t writeSetEnd();
@@ -197,7 +204,9 @@ public:
* Reading functions
*/
- uint32_t readMessageBegin(std::string& name, TMessageType& messageType, int32_t& seqid);
+ uint32_t readMessageBegin(std::string& name,
+ TMessageType& messageType,
+ int32_t& seqid);
uint32_t readMessageEnd();
@@ -205,19 +214,25 @@ public:
uint32_t readStructEnd();
- uint32_t readFieldBegin(std::string& name, TType& fieldType, int16_t& fieldId);
+ uint32_t readFieldBegin(std::string& name,
+ TType& fieldType,
+ int16_t& fieldId);
uint32_t readFieldEnd();
- uint32_t readMapBegin(TType& keyType, TType& valType, uint32_t& size);
+ uint32_t readMapBegin(TType& keyType,
+ TType& valType,
+ uint32_t& size);
uint32_t readMapEnd();
- uint32_t readListBegin(TType& elemType, uint32_t& size);
+ uint32_t readListBegin(TType& elemType,
+ uint32_t& size);
uint32_t readListEnd();
- uint32_t readSetBegin(TType& elemType, uint32_t& size);
+ uint32_t readSetBegin(TType& elemType,
+ uint32_t& size);
uint32_t readSetEnd();
@@ -242,13 +257,18 @@ public:
class LookaheadReader {
- public:
- LookaheadReader(TTransport& trans) : trans_(&trans), hasData_(false) {}
+ public:
+
+ LookaheadReader(TTransport &trans) :
+ trans_(&trans),
+ hasData_(false) {
+ }
uint8_t read() {
if (hasData_) {
hasData_ = false;
- } else {
+ }
+ else {
trans_->readAll(&data_, 1);
}
return data_;
@@ -262,13 +282,13 @@ public:
return data_;
}
- private:
- TTransport* trans_;
+ private:
+ TTransport *trans_;
bool hasData_;
uint8_t data_;
};
-private:
+ private:
TTransport* trans_;
std::stack<boost::shared_ptr<TJSONContext> > contexts_;
@@ -280,7 +300,7 @@ private:
* Constructs input and output protocol objects given transports.
*/
class TJSONProtocolFactory : public TProtocolFactory {
-public:
+ public:
TJSONProtocolFactory() {}
virtual ~TJSONProtocolFactory() {}
@@ -289,18 +309,17 @@ public:
return boost::shared_ptr<TProtocol>(new TJSONProtocol(trans));
}
};
-}
-}
-} // apache::thrift::protocol
+
+}}} // apache::thrift::protocol
+
// TODO(dreiss): Move part of ThriftJSONString into a .cpp file and remove this.
#include <thrift/transport/TBufferTransports.h>
-namespace apache {
-namespace thrift {
+namespace apache { namespace thrift {
-template <typename ThriftStruct>
-std::string ThriftJSONString(const ThriftStruct& ts) {
+template<typename ThriftStruct>
+ std::string ThriftJSONString(const ThriftStruct& ts) {
using namespace apache::thrift::transport;
using namespace apache::thrift::protocol;
TMemoryBuffer* buffer = new TMemoryBuffer;
@@ -314,7 +333,7 @@ std::string ThriftJSONString(const ThriftStruct& ts) {
buffer->getBuffer(&buf, &size);
return std::string((char*)buf, (unsigned int)size);
}
-}
-} // apache::thrift
+
+}} // apache::thrift
#endif // #define _THRIFT_PROTOCOL_TJSONPROTOCOL_H_ 1
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.cpp
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.cpp b/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.cpp
index f0dc69e..756b9b9 100644
--- a/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.cpp
+++ b/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.cpp
@@ -21,20 +21,27 @@
#include <thrift/processor/TMultiplexedProcessor.h>
#include <thrift/protocol/TProtocolDecorator.h>
-namespace apache {
-namespace thrift {
-namespace protocol {
-uint32_t TMultiplexedProtocol::writeMessageBegin_virt(const std::string& _name,
- const TMessageType _type,
- const int32_t _seqid) {
- if (_type == T_CALL || _type == T_ONEWAY) {
- return TProtocolDecorator::writeMessageBegin_virt(serviceName + separator + _name,
- _type,
- _seqid);
- } else {
- return TProtocolDecorator::writeMessageBegin_virt(_name, _type, _seqid);
- }
-}
-}
-}
+namespace apache
+{
+ namespace thrift
+ {
+ namespace protocol
+ {
+ uint32_t TMultiplexedProtocol::writeMessageBegin_virt(
+ const std::string& _name,
+ const TMessageType _type,
+ const int32_t _seqid)
+ {
+ if( _type == T_CALL || _type == T_ONEWAY )
+ {
+ return TProtocolDecorator::writeMessageBegin_virt( serviceName + separator + _name, _type, _seqid );
+ }
+ else
+ {
+ return TProtocolDecorator::writeMessageBegin_virt(_name, _type, _seqid);
+ }
+ }
+ }
+ }
}
+
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.h b/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.h
index 0244fbe..e93f371 100644
--- a/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TMultiplexedProtocol.h
@@ -22,74 +22,82 @@
#include <thrift/protocol/TProtocolDecorator.h>
-namespace apache {
-namespace thrift {
-namespace protocol {
-using boost::shared_ptr;
+namespace apache
+{
+ namespace thrift
+ {
+ namespace protocol
+ {
+ using boost::shared_ptr;
-/**
- * <code>TMultiplexedProtocol</code> is a protocol-independent concrete decorator
- * that allows a Thrift client to communicate with a multiplexing Thrift server,
- * by prepending the service name to the function name during function calls.
- *
- * \note THIS IS NOT USED BY SERVERS. On the server, use
- * {@link apache::thrift::TMultiplexedProcessor TMultiplexedProcessor} to handle requests
- * from a multiplexing client.
- *
- * This example uses a single socket transport to invoke two services:
- *
- * <blockquote><code>
- * shared_ptr<TSocket> transport(new TSocket("localhost", 9090));
- * transport->open();
- *
- * shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
- *
- * shared_ptr<TMultiplexedProtocol> mp1(new TMultiplexedProtocol(protocol, "Calculator"));
- * shared_ptr<CalculatorClient> service1(new CalculatorClient(mp1));
- *
- * shared_ptr<TMultiplexedProtocol> mp2(new TMultiplexedProtocol(protocol, "WeatherReport"));
- * shared_ptr<WeatherReportClient> service2(new WeatherReportClient(mp2));
- *
- * service1->add(2,2);
- * int temp = service2->getTemperature();
- * </code></blockquote>
- *
- * @see apache::thrift::protocol::TProtocolDecorator
- */
-class TMultiplexedProtocol : public TProtocolDecorator {
-public:
- /**
- * Wrap the specified protocol, allowing it to be used to communicate with a
- * multiplexing server. The <code>serviceName</code> is required as it is
- * prepended to the message header so that the multiplexing server can broker
- * the function call to the proper service.
- *
- * \param _protocol Your communication protocol of choice, e.g. <code>TBinaryProtocol</code>.
- * \param _serviceName The service name of the service communicating via this protocol.
- */
- TMultiplexedProtocol(shared_ptr<TProtocol> _protocol, const std::string& _serviceName)
- : TProtocolDecorator(_protocol), serviceName(_serviceName), separator(":") {}
- virtual ~TMultiplexedProtocol() {}
+ /**
+ * <code>TMultiplexedProtocol</code> is a protocol-independent concrete decorator
+ * that allows a Thrift client to communicate with a multiplexing Thrift server,
+ * by prepending the service name to the function name during function calls.
+ *
+ * \note THIS IS NOT USED BY SERVERS. On the server, use
+ * {@link apache::thrift::TMultiplexedProcessor TMultiplexedProcessor} to handle requests
+ * from a multiplexing client.
+ *
+ * This example uses a single socket transport to invoke two services:
+ *
+ * <blockquote><code>
+ * shared_ptr<TSocket> transport(new TSocket("localhost", 9090));
+ * transport->open();
+ *
+ * shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
+ *
+ * shared_ptr<TMultiplexedProtocol> mp1(new TMultiplexedProtocol(protocol, "Calculator"));
+ * shared_ptr<CalculatorClient> service1(new CalculatorClient(mp1));
+ *
+ * shared_ptr<TMultiplexedProtocol> mp2(new TMultiplexedProtocol(protocol, "WeatherReport"));
+ * shared_ptr<WeatherReportClient> service2(new WeatherReportClient(mp2));
+ *
+ * service1->add(2,2);
+ * int temp = service2->getTemperature();
+ * </code></blockquote>
+ *
+ * @see apache::thrift::protocol::TProtocolDecorator
+ */
+ class TMultiplexedProtocol : public TProtocolDecorator
+ {
+ public:
+ /**
+ * Wrap the specified protocol, allowing it to be used to communicate with a
+ * multiplexing server. The <code>serviceName</code> is required as it is
+ * prepended to the message header so that the multiplexing server can broker
+ * the function call to the proper service.
+ *
+ * \param _protocol Your communication protocol of choice, e.g. <code>TBinaryProtocol</code>.
+ * \param _serviceName The service name of the service communicating via this protocol.
+ */
+ TMultiplexedProtocol( shared_ptr<TProtocol> _protocol, const std::string& _serviceName )
+ : TProtocolDecorator(_protocol),
+ serviceName(_serviceName),
+ separator(":")
+ { }
+ virtual ~TMultiplexedProtocol() {}
- /**
- * Prepends the service name to the function name, separated by TMultiplexedProtocol::SEPARATOR.
- *
- * \param [in] _name The name of the method to be called in the service.
- * \param [in] _type The type of message
- * \param [in] _name The sequential id of the message
- *
- * \throws TException Passed through from wrapped <code>TProtocol</code> instance.
- */
- uint32_t writeMessageBegin_virt(const std::string& _name,
- const TMessageType _type,
- const int32_t _seqid);
+ /**
+ * Prepends the service name to the function name, separated by TMultiplexedProtocol::SEPARATOR.
+ *
+ * \param [in] _name The name of the method to be called in the service.
+ * \param [in] _type The type of message
+ * \param [in] _name The sequential id of the message
+ *
+ * \throws TException Passed through from wrapped <code>TProtocol</code> instance.
+ */
+ uint32_t writeMessageBegin_virt(
+ const std::string& _name,
+ const TMessageType _type,
+ const int32_t _seqid);
+ private:
+ const std::string serviceName;
+ const std::string separator;
+ };
-private:
- const std::string serviceName;
- const std::string separator;
-};
-}
-}
+ }
+ }
}
#endif // THRIFT_TMULTIPLEXEDPROTOCOL_H_
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TProtocol.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TProtocol.h b/lib/cpp/src/thrift/protocol/TProtocol.h
index 0c76cc0..d4c343d 100644
--- a/lib/cpp/src/thrift/protocol/TProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TProtocol.h
@@ -34,6 +34,7 @@
#include <map>
#include <vector>
+
// Use this to get around strict aliasing rules.
// For example, uint64_t i = bitwise_cast<uint64_t>(returns_double());
// The most obvious implementation is to just cast a pointer,
@@ -135,9 +136,7 @@ static inline To bitwise_cast(From from) {
# error "Can't define htonll or ntohll!"
#endif
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
using apache::thrift::transport::TTransport;
@@ -187,91 +186,98 @@ enum TMessageType {
template <class Protocol_>
uint32_t skip(Protocol_& prot, TType type) {
switch (type) {
- case T_BOOL: {
- bool boolv;
- return prot.readBool(boolv);
- }
- case T_BYTE: {
- int8_t bytev;
- return prot.readByte(bytev);
- }
- case T_I16: {
- int16_t i16;
- return prot.readI16(i16);
- }
- case T_I32: {
- int32_t i32;
- return prot.readI32(i32);
- }
- case T_I64: {
- int64_t i64;
- return prot.readI64(i64);
- }
- case T_DOUBLE: {
- double dub;
- return prot.readDouble(dub);
- }
- case T_STRING: {
- std::string str;
- return prot.readBinary(str);
- }
- case T_STRUCT: {
- uint32_t result = 0;
- std::string name;
- int16_t fid;
- TType ftype;
- result += prot.readStructBegin(name);
- while (true) {
- result += prot.readFieldBegin(name, ftype, fid);
- if (ftype == T_STOP) {
- break;
+ case T_BOOL:
+ {
+ bool boolv;
+ return prot.readBool(boolv);
+ }
+ case T_BYTE:
+ {
+ int8_t bytev;
+ return prot.readByte(bytev);
+ }
+ case T_I16:
+ {
+ int16_t i16;
+ return prot.readI16(i16);
+ }
+ case T_I32:
+ {
+ int32_t i32;
+ return prot.readI32(i32);
+ }
+ case T_I64:
+ {
+ int64_t i64;
+ return prot.readI64(i64);
+ }
+ case T_DOUBLE:
+ {
+ double dub;
+ return prot.readDouble(dub);
+ }
+ case T_STRING:
+ {
+ std::string str;
+ return prot.readBinary(str);
+ }
+ case T_STRUCT:
+ {
+ uint32_t result = 0;
+ std::string name;
+ int16_t fid;
+ TType ftype;
+ result += prot.readStructBegin(name);
+ while (true) {
+ result += prot.readFieldBegin(name, ftype, fid);
+ if (ftype == T_STOP) {
+ break;
+ }
+ result += skip(prot, ftype);
+ result += prot.readFieldEnd();
}
- result += skip(prot, ftype);
- result += prot.readFieldEnd();
+ result += prot.readStructEnd();
+ return result;
}
- result += prot.readStructEnd();
- return result;
- }
- case T_MAP: {
- uint32_t result = 0;
- TType keyType;
- TType valType;
- uint32_t i, size;
- result += prot.readMapBegin(keyType, valType, size);
- for (i = 0; i < size; i++) {
- result += skip(prot, keyType);
- result += skip(prot, valType);
+ case T_MAP:
+ {
+ uint32_t result = 0;
+ TType keyType;
+ TType valType;
+ uint32_t i, size;
+ result += prot.readMapBegin(keyType, valType, size);
+ for (i = 0; i < size; i++) {
+ result += skip(prot, keyType);
+ result += skip(prot, valType);
+ }
+ result += prot.readMapEnd();
+ return result;
}
- result += prot.readMapEnd();
- return result;
- }
- case T_SET: {
- uint32_t result = 0;
- TType elemType;
- uint32_t i, size;
- result += prot.readSetBegin(elemType, size);
- for (i = 0; i < size; i++) {
- result += skip(prot, elemType);
+ case T_SET:
+ {
+ uint32_t result = 0;
+ TType elemType;
+ uint32_t i, size;
+ result += prot.readSetBegin(elemType, size);
+ for (i = 0; i < size; i++) {
+ result += skip(prot, elemType);
+ }
+ result += prot.readSetEnd();
+ return result;
}
- result += prot.readSetEnd();
- return result;
- }
- case T_LIST: {
- uint32_t result = 0;
- TType elemType;
- uint32_t i, size;
- result += prot.readListBegin(elemType, size);
- for (i = 0; i < size; i++) {
- result += skip(prot, elemType);
+ case T_LIST:
+ {
+ uint32_t result = 0;
+ TType elemType;
+ uint32_t i, size;
+ result += prot.readListBegin(elemType, size);
+ for (i = 0; i < size; i++) {
+ result += skip(prot, elemType);
+ }
+ result += prot.readListEnd();
+ return result;
}
- result += prot.readListEnd();
- return result;
- }
- case T_STOP:
- case T_VOID:
- case T_U64:
- case T_UTF8:
- case T_UTF16:
+ case T_STOP: case T_VOID: case T_U64: case T_UTF8: case T_UTF16:
break;
}
return 0;
@@ -294,7 +300,7 @@ static const uint32_t DEFAULT_RECURSION_LIMIT = 64;
*
*/
class TProtocol {
-public:
+ public:
virtual ~TProtocol() {}
/**
@@ -307,6 +313,7 @@ public:
virtual uint32_t writeMessageEnd_virt() = 0;
+
virtual uint32_t writeStructBegin_virt(const char* name) = 0;
virtual uint32_t writeStructEnd_virt() = 0;
@@ -319,16 +326,19 @@ public:
virtual uint32_t writeFieldStop_virt() = 0;
- virtual uint32_t writeMapBegin_virt(const TType keyType, const TType valType, const uint32_t size)
- = 0;
+ virtual uint32_t writeMapBegin_virt(const TType keyType,
+ const TType valType,
+ const uint32_t size) = 0;
virtual uint32_t writeMapEnd_virt() = 0;
- virtual uint32_t writeListBegin_virt(const TType elemType, const uint32_t size) = 0;
+ virtual uint32_t writeListBegin_virt(const TType elemType,
+ const uint32_t size) = 0;
virtual uint32_t writeListEnd_virt() = 0;
- virtual uint32_t writeSetBegin_virt(const TType elemType, const uint32_t size) = 0;
+ virtual uint32_t writeSetBegin_virt(const TType elemType,
+ const uint32_t size) = 0;
virtual uint32_t writeSetEnd_virt() = 0;
@@ -360,6 +370,7 @@ public:
return writeMessageEnd_virt();
}
+
uint32_t writeStructBegin(const char* name) {
T_VIRTUAL_CALL();
return writeStructBegin_virt(name);
@@ -370,7 +381,9 @@ public:
return writeStructEnd_virt();
}
- uint32_t writeFieldBegin(const char* name, const TType fieldType, const int16_t fieldId) {
+ uint32_t writeFieldBegin(const char* name,
+ const TType fieldType,
+ const int16_t fieldId) {
T_VIRTUAL_CALL();
return writeFieldBegin_virt(name, fieldType, fieldId);
}
@@ -385,7 +398,9 @@ public:
return writeFieldStop_virt();
}
- uint32_t writeMapBegin(const TType keyType, const TType valType, const uint32_t size) {
+ uint32_t writeMapBegin(const TType keyType,
+ const TType valType,
+ const uint32_t size) {
T_VIRTUAL_CALL();
return writeMapBegin_virt(keyType, valType, size);
}
@@ -470,19 +485,24 @@ public:
virtual uint32_t readStructEnd_virt() = 0;
virtual uint32_t readFieldBegin_virt(std::string& name,
- virtual uint32_t readFieldBegin_virt(std::string& name, TType& fieldType, int16_t& fieldId) = 0;
+ TType& fieldType,
+ int16_t& fieldId) = 0;
virtual uint32_t readFieldEnd_virt() = 0;
- virtual uint32_t readMapBegin_virt(TType& keyType, TType& valType, uint32_t& size) = 0;
+ virtual uint32_t readMapBegin_virt(TType& keyType,
+ TType& valType,
+ uint32_t& size) = 0;
virtual uint32_t readMapEnd_virt() = 0;
- virtual uint32_t readListBegin_virt(TType& elemType, uint32_t& size) = 0;
+ virtual uint32_t readListBegin_virt(TType& elemType,
+ uint32_t& size) = 0;
virtual uint32_t readListEnd_virt() = 0;
- virtual uint32_t readSetBegin_virt(TType& elemType, uint32_t& size) = 0;
+ virtual uint32_t readSetBegin_virt(TType& elemType,
+ uint32_t& size) = 0;
virtual uint32_t readSetEnd_virt() = 0;
@@ -504,7 +524,9 @@ public:
virtual uint32_t readBinary_virt(std::string& str) = 0;
- uint32_t readMessageBegin(std::string& name, TMessageType& messageType, int32_t& seqid) {
+ uint32_t readMessageBegin(std::string& name,
+ TMessageType& messageType,
+ int32_t& seqid) {
T_VIRTUAL_CALL();
return readMessageBegin_virt(name, messageType, seqid);
}
@@ -524,7 +546,9 @@ public:
return readStructEnd_virt();
}
- uint32_t readFieldBegin(std::string& name, TType& fieldType, int16_t& fieldId) {
+ uint32_t readFieldBegin(std::string& name,
+ TType& fieldType,
+ int16_t& fieldId) {
T_VIRTUAL_CALL();
return readFieldBegin_virt(name, fieldType, fieldId);
}
@@ -621,14 +645,22 @@ public:
T_VIRTUAL_CALL();
return skip_virt(type);
}
- virtual uint32_t skip_virt(TType type) { return ::apache::thrift::protocol::skip(*this, type); }
+ virtual uint32_t skip_virt(TType type) {
+ return ::apache::thrift::protocol::skip(*this, type);
+ }
- inline boost::shared_ptr<TTransport> getTransport() { return ptrans_; }
+ inline boost::shared_ptr<TTransport> getTransport() {
+ return ptrans_;
+ }
// TODO: remove these two calls, they are for backwards
// compatibility
- inline boost::shared_ptr<TTransport> getInputTransport() { return ptrans_; }
- inline boost::shared_ptr<TTransport> getOutputTransport() { return ptrans_; }
+ inline boost::shared_ptr<TTransport> getInputTransport() {
+ return ptrans_;
+ }
+ inline boost::shared_ptr<TTransport> getOutputTransport() {
+ return ptrans_;
+ }
void incrementRecursionDepth() {
if (recursion_limit_ < ++recursion_depth_) {
@@ -636,15 +668,19 @@ public:
}
}
- void decrementRecursionDepth() { --recursion_depth_; }
+ void decrementRecursionDepth() {
+ --recursion_depth_;
+ }
-protected:
+ protected:
TProtocol(boost::shared_ptr<TTransport> ptrans)
- : ptrans_(ptrans), recursion_depth_(0), recursion_limit_(DEFAULT_RECURSION_LIMIT) {}
+ : ptrans_(ptrans)
+ , recursion_depth_(0)
+ , recursion_limit_(DEFAULT_RECURSION_LIMIT) {}
boost::shared_ptr<TTransport> ptrans_;
-private:
+ private:
TProtocol() {}
uint32_t recursion_depth_;
uint32_t recursion_limit_;
@@ -654,7 +690,7 @@ private:
* Constructs input and output protocol objects given transports.
*/
class TProtocolFactory {
-public:
+ public:
TProtocolFactory() {}
virtual ~TProtocolFactory() {}
@@ -668,9 +704,9 @@ public:
* This class does nothing, and should never be instantiated.
* It is used only by the generator code.
*/
-class TDummyProtocol : public TProtocol {};
-}
-}
-} // apache::thrift::protocol
+class TDummyProtocol : public TProtocol {
+};
+
+}}} // apache::thrift::protocol
#endif // #define _THRIFT_PROTOCOL_TPROTOCOL_H_ 1
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TProtocolDecorator.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TProtocolDecorator.h b/lib/cpp/src/thrift/protocol/TProtocolDecorator.h
index 446a81f..570e977 100644
--- a/lib/cpp/src/thrift/protocol/TProtocolDecorator.h
+++ b/lib/cpp/src/thrift/protocol/TProtocolDecorator.h
@@ -23,129 +23,111 @@
#include <thrift/protocol/TProtocol.h>
#include <boost/shared_ptr.hpp>
-namespace apache {
-namespace thrift {
-namespace protocol {
-using boost::shared_ptr;
-
-/**
- * <code>TProtocolDecorator</code> forwards all requests to an enclosed
- * <code>TProtocol</code> instance, providing a way to author concise
- * concrete decorator subclasses.
- *
- * <p>See p.175 of Design Patterns (by Gamma et al.)</p>
- *
- * @see apache::thrift::protocol::TMultiplexedProtocol
- */
-class TProtocolDecorator : public TProtocol {
-public:
- virtual ~TProtocolDecorator() {}
-
- // Desc: Initializes the protocol decorator object.
- TProtocolDecorator(shared_ptr<TProtocol> proto)
- : TProtocol(proto->getTransport()), protocol(proto) {}
-
- virtual uint32_t writeMessageBegin_virt(const std::string& name,
- const TMessageType messageType,
- const int32_t seqid) {
- return protocol->writeMessageBegin(name, messageType, seqid);
- }
- virtual uint32_t writeMessageEnd_virt() { return protocol->writeMessageEnd(); }
- virtual uint32_t writeStructBegin_virt(const char* name) {
- return protocol->writeStructBegin(name);
- }
- virtual uint32_t writeStructEnd_virt() { return protocol->writeStructEnd(); }
-
- virtual uint32_t writeFieldBegin_virt(const char* name,
- const TType fieldType,
- const int16_t fieldId) {
- return protocol->writeFieldBegin(name, fieldType, fieldId);
- }
-
- virtual uint32_t writeFieldEnd_virt() { return protocol->writeFieldEnd(); }
- virtual uint32_t writeFieldStop_virt() { return protocol->writeFieldStop(); }
-
- virtual uint32_t writeMapBegin_virt(const TType keyType,
- const TType valType,
- const uint32_t size) {
- return protocol->writeMapBegin(keyType, valType, size);
- }
-
- virtual uint32_t writeMapEnd_virt() { return protocol->writeMapEnd(); }
-
- virtual uint32_t writeListBegin_virt(const TType elemType, const uint32_t size) {
- return protocol->writeListBegin(elemType, size);
- }
- virtual uint32_t writeListEnd_virt() { return protocol->writeListEnd(); }
-
- virtual uint32_t writeSetBegin_virt(const TType elemType, const uint32_t size) {
- return protocol->writeSetBegin(elemType, size);
- }
- virtual uint32_t writeSetEnd_virt() { return protocol->writeSetEnd(); }
-
- virtual uint32_t writeBool_virt(const bool value) { return protocol->writeBool(value); }
- virtual uint32_t writeByte_virt(const int8_t byte) { return protocol->writeByte(byte); }
- virtual uint32_t writeI16_virt(const int16_t i16) { return protocol->writeI16(i16); }
- virtual uint32_t writeI32_virt(const int32_t i32) { return protocol->writeI32(i32); }
- virtual uint32_t writeI64_virt(const int64_t i64) { return protocol->writeI64(i64); }
-
- virtual uint32_t writeDouble_virt(const double dub) { return protocol->writeDouble(dub); }
- virtual uint32_t writeString_virt(const std::string& str) { return protocol->writeString(str); }
- virtual uint32_t writeBinary_virt(const std::string& str) { return protocol->writeBinary(str); }
-
- virtual uint32_t readMessageBegin_virt(std::string& name,
- TMessageType& messageType,
- int32_t& seqid) {
- return protocol->readMessageBegin(name, messageType, seqid);
- }
- virtual uint32_t readMessageEnd_virt() { return protocol->readMessageEnd(); }
-
- virtual uint32_t readStructBegin_virt(std::string& name) {
- return protocol->readStructBegin(name);
- }
- virtual uint32_t readStructEnd_virt() { return protocol->readStructEnd(); }
-
- virtual uint32_t readFieldBegin_virt(std::string& name, TType& fieldType, int16_t& fieldId) {
- return protocol->readFieldBegin(name, fieldType, fieldId);
- }
- virtual uint32_t readFieldEnd_virt() { return protocol->readFieldEnd(); }
-
- virtual uint32_t readMapBegin_virt(TType& keyType, TType& valType, uint32_t& size) {
- return protocol->readMapBegin(keyType, valType, size);
- }
- virtual uint32_t readMapEnd_virt() { return protocol->readMapEnd(); }
-
- virtual uint32_t readListBegin_virt(TType& elemType, uint32_t& size) {
- return protocol->readListBegin(elemType, size);
- }
- virtual uint32_t readListEnd_virt() { return protocol->readListEnd(); }
-
- virtual uint32_t readSetBegin_virt(TType& elemType, uint32_t& size) {
- return protocol->readSetBegin(elemType, size);
- }
- virtual uint32_t readSetEnd_virt() { return protocol->readSetEnd(); }
-
- virtual uint32_t readBool_virt(bool& value) { return protocol->readBool(value); }
- virtual uint32_t readBool_virt(std::vector<bool>::reference value) {
- return protocol->readBool(value);
- }
-
- virtual uint32_t readByte_virt(int8_t& byte) { return protocol->readByte(byte); }
-
- virtual uint32_t readI16_virt(int16_t& i16) { return protocol->readI16(i16); }
- virtual uint32_t readI32_virt(int32_t& i32) { return protocol->readI32(i32); }
- virtual uint32_t readI64_virt(int64_t& i64) { return protocol->readI64(i64); }
-
- virtual uint32_t readDouble_virt(double& dub) { return protocol->readDouble(dub); }
-
- virtual uint32_t readString_virt(std::string& str) { return protocol->readString(str); }
- virtual uint32_t readBinary_virt(std::string& str) { return protocol->readBinary(str); }
-
-private:
- shared_ptr<TProtocol> protocol;
-};
-}
-}
+namespace apache
+{
+ namespace thrift
+ {
+ namespace protocol
+ {
+ using boost::shared_ptr;
+
+ /**
+ * <code>TProtocolDecorator</code> forwards all requests to an enclosed
+ * <code>TProtocol</code> instance, providing a way to author concise
+ * concrete decorator subclasses.
+ *
+ * <p>See p.175 of Design Patterns (by Gamma et al.)</p>
+ *
+ * @see apache::thrift::protocol::TMultiplexedProtocol
+ */
+ class TProtocolDecorator : public TProtocol
+ {
+ public:
+ virtual ~TProtocolDecorator() {}
+
+ // Desc: Initializes the protocol decorator object.
+ TProtocolDecorator( shared_ptr<TProtocol> proto )
+ : TProtocol(proto->getTransport()), protocol(proto)
+ {
+ }
+
+ virtual uint32_t writeMessageBegin_virt(
+ const std::string& name,
+ const TMessageType messageType,
+ const int32_t seqid)
+ {
+ return protocol->writeMessageBegin(name, messageType, seqid);
+ }
+ virtual uint32_t writeMessageEnd_virt() { return protocol->writeMessageEnd(); }
+ virtual uint32_t writeStructBegin_virt(const char* name) { return protocol->writeStructBegin(name); }
+ virtual uint32_t writeStructEnd_virt() { return protocol->writeStructEnd(); }
+
+ virtual uint32_t writeFieldBegin_virt(const char* name,
+ const TType fieldType,
+ const int16_t fieldId) { return protocol->writeFieldBegin(name,fieldType,fieldId); }
+
+ virtual uint32_t writeFieldEnd_virt() { return protocol->writeFieldEnd(); }
+ virtual uint32_t writeFieldStop_virt() { return protocol->writeFieldStop(); }
+
+ virtual uint32_t writeMapBegin_virt(const TType keyType,
+ const TType valType,
+ const uint32_t size) { return protocol->writeMapBegin(keyType,valType,size); }
+
+ virtual uint32_t writeMapEnd_virt() { return protocol->writeMapEnd(); }
+
+ virtual uint32_t writeListBegin_virt(const TType elemType, const uint32_t size) { return protocol->writeListBegin(elemType,size); }
+ virtual uint32_t writeListEnd_virt() { return protocol->writeListEnd(); }
+
+ virtual uint32_t writeSetBegin_virt(const TType elemType, const uint32_t size) { return protocol->writeSetBegin(elemType,size); }
+ virtual uint32_t writeSetEnd_virt() { return protocol->writeSetEnd(); }
+
+ virtual uint32_t writeBool_virt(const bool value) { return protocol->writeBool(value); }
+ virtual uint32_t writeByte_virt(const int8_t byte) { return protocol->writeByte(byte); }
+ virtual uint32_t writeI16_virt(const int16_t i16) { return protocol->writeI16(i16); }
+ virtual uint32_t writeI32_virt(const int32_t i32) { return protocol->writeI32(i32); }
+ virtual uint32_t writeI64_virt(const int64_t i64) { return protocol->writeI64(i64); }
+
+ virtual uint32_t writeDouble_virt(const double dub) { return protocol->writeDouble(dub); }
+ virtual uint32_t writeString_virt(const std::string& str) { return protocol->writeString(str); }
+ virtual uint32_t writeBinary_virt(const std::string& str) { return protocol->writeBinary(str); }
+
+ virtual uint32_t readMessageBegin_virt(std::string& name, TMessageType& messageType, int32_t& seqid) { return protocol->readMessageBegin(name,messageType,seqid); }
+ virtual uint32_t readMessageEnd_virt() { return protocol->readMessageEnd(); }
+
+ virtual uint32_t readStructBegin_virt(std::string& name) { return protocol->readStructBegin(name); }
+ virtual uint32_t readStructEnd_virt() { return protocol->readStructEnd(); }
+
+ virtual uint32_t readFieldBegin_virt(std::string& name, TType& fieldType, int16_t& fieldId) { return protocol->readFieldBegin(name, fieldType, fieldId); }
+ virtual uint32_t readFieldEnd_virt() { return protocol->readFieldEnd(); }
+
+ virtual uint32_t readMapBegin_virt(TType& keyType, TType& valType, uint32_t& size) { return protocol->readMapBegin(keyType,valType,size); }
+ virtual uint32_t readMapEnd_virt() { return protocol->readMapEnd(); }
+
+ virtual uint32_t readListBegin_virt(TType& elemType, uint32_t& size) { return protocol->readListBegin(elemType,size); }
+ virtual uint32_t readListEnd_virt() { return protocol->readListEnd(); }
+
+ virtual uint32_t readSetBegin_virt(TType& elemType, uint32_t& size) { return protocol->readSetBegin(elemType,size); }
+ virtual uint32_t readSetEnd_virt() { return protocol->readSetEnd(); }
+
+ virtual uint32_t readBool_virt(bool& value) { return protocol->readBool(value); }
+ virtual uint32_t readBool_virt(std::vector<bool>::reference value) { return protocol->readBool(value); }
+
+ virtual uint32_t readByte_virt(int8_t& byte) { return protocol->readByte(byte); }
+
+ virtual uint32_t readI16_virt(int16_t& i16) { return protocol->readI16(i16); }
+ virtual uint32_t readI32_virt(int32_t& i32) { return protocol->readI32(i32); }
+ virtual uint32_t readI64_virt(int64_t& i64) { return protocol->readI64(i64); }
+
+ virtual uint32_t readDouble_virt(double& dub) { return protocol->readDouble(dub); }
+
+ virtual uint32_t readString_virt(std::string& str) { return protocol->readString(str); }
+ virtual uint32_t readBinary_virt(std::string& str) { return protocol->readBinary(str); }
+
+ private:
+ shared_ptr<TProtocol> protocol;
+ };
+ }
+ }
}
#endif // THRIFT_TPROTOCOLDECORATOR_H_
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TProtocolException.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TProtocolException.h b/lib/cpp/src/thrift/protocol/TProtocolException.h
index 18a8ed0..4ddb81e 100644
--- a/lib/cpp/src/thrift/protocol/TProtocolException.h
+++ b/lib/cpp/src/thrift/protocol/TProtocolException.h
@@ -22,9 +22,7 @@
#include <string>
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
/**
* Class to encapsulate all the possible types of protocol errors that may
@@ -35,29 +33,36 @@ namespace protocol {
*
*/
class TProtocolException : public apache::thrift::TException {
-public:
+ public:
+
/**
* Error codes for the various types of exceptions.
*/
- enum TProtocolExceptionType {
- UNKNOWN = 0,
- INVALID_DATA = 1,
- NEGATIVE_SIZE = 2,
- SIZE_LIMIT = 3,
- BAD_VERSION = 4,
- NOT_IMPLEMENTED = 5,
- DEPTH_LIMIT = 6
+ enum TProtocolExceptionType
+ { UNKNOWN = 0
+ , INVALID_DATA = 1
+ , NEGATIVE_SIZE = 2
+ , SIZE_LIMIT = 3
+ , BAD_VERSION = 4
+ , NOT_IMPLEMENTED = 5
+ , DEPTH_LIMIT = 6
};
- TProtocolException() : apache::thrift::TException(), type_(UNKNOWN) {}
+ TProtocolException() :
+ apache::thrift::TException(),
+ type_(UNKNOWN) {}
- TProtocolException(TProtocolExceptionType type) : apache::thrift::TException(), type_(type) {}
+ TProtocolException(TProtocolExceptionType type) :
+ apache::thrift::TException(),
+ type_(type) {}
- TProtocolException(const std::string& message)
- : apache::thrift::TException(message), type_(UNKNOWN) {}
+ TProtocolException(const std::string& message) :
+ apache::thrift::TException(message),
+ type_(UNKNOWN) {}
- TProtocolException(TProtocolExceptionType type, const std::string& message)
- : apache::thrift::TException(message), type_(type) {}
+ TProtocolException(TProtocolExceptionType type, const std::string& message) :
+ apache::thrift::TException(message),
+ type_(type) {}
virtual ~TProtocolException() throw() {}
@@ -67,39 +72,34 @@ public:
*
* @return Error code
*/
- TProtocolExceptionType getType() { return type_; }
+ TProtocolExceptionType getType() {
+ return type_;
+ }
virtual const char* what() const throw() {
if (message_.empty()) {
switch (type_) {
- case UNKNOWN:
- return "TProtocolException: Unknown protocol exception";
- case INVALID_DATA:
- return "TProtocolException: Invalid data";
- case NEGATIVE_SIZE:
- return "TProtocolException: Negative size";
- case SIZE_LIMIT:
- return "TProtocolException: Exceeded size limit";
- case BAD_VERSION:
- return "TProtocolException: Invalid version";
- case NOT_IMPLEMENTED:
- return "TProtocolException: Not implemented";
- default:
- return "TProtocolException: (Invalid exception type)";
+ case UNKNOWN : return "TProtocolException: Unknown protocol exception";
+ case INVALID_DATA : return "TProtocolException: Invalid data";
+ case NEGATIVE_SIZE : return "TProtocolException: Negative size";
+ case SIZE_LIMIT : return "TProtocolException: Exceeded size limit";
+ case BAD_VERSION : return "TProtocolException: Invalid version";
+ case NOT_IMPLEMENTED : return "TProtocolException: Not implemented";
+ default : return "TProtocolException: (Invalid exception type)";
}
} else {
return message_.c_str();
}
}
-protected:
+ protected:
/**
* Error code
*/
TProtocolExceptionType type_;
+
};
-}
-}
-} // apache::thrift::protocol
+
+}}} // apache::thrift::protocol
#endif // #ifndef _THRIFT_PROTOCOL_TPROTOCOLEXCEPTION_H_
http://git-wip-us.apache.org/repos/asf/thrift/blob/240120c8/lib/cpp/src/thrift/protocol/TProtocolTap.h
----------------------------------------------------------------------
diff --git a/lib/cpp/src/thrift/protocol/TProtocolTap.h b/lib/cpp/src/thrift/protocol/TProtocolTap.h
index 3e56393..f493f88 100644
--- a/lib/cpp/src/thrift/protocol/TProtocolTap.h
+++ b/lib/cpp/src/thrift/protocol/TProtocolTap.h
@@ -22,9 +22,7 @@
#include <thrift/protocol/TVirtualProtocol.h>
-namespace apache {
-namespace thrift {
-namespace protocol {
+namespace apache { namespace thrift { namespace protocol {
using apache::thrift::transport::TTransport;
@@ -35,11 +33,17 @@ using apache::thrift::transport::TTransport;
*
*/
class TProtocolTap : public TVirtualProtocol<TProtocolTap> {
-public:
- TProtocolTap(boost::shared_ptr<TProtocol> source, boost::shared_ptr<TProtocol> sink)
- : TVirtualProtocol<TProtocolTap>(source->getTransport()), source_(source), sink_(sink) {}
-
- uint32_t readMessageBegin(std::string& name, TMessageType& messageType, int32_t& seqid) {
+ public:
+ TProtocolTap(boost::shared_ptr<TProtocol> source,
+ boost::shared_ptr<TProtocol> sink)
+ : TVirtualProtocol<TProtocolTap>(source->getTransport())
+ , source_(source)
+ , sink_(sink)
+ {}
+
+ uint32_t readMessageBegin(std::string& name,
+ TMessageType& messageType,
+ int32_t& seqid) {
uint32_t rv = source_->readMessageBegin(name, messageType, seqid);
sink_->writeMessageBegin(name, messageType, seqid);
return rv;
@@ -63,7 +67,9 @@ public:
return rv;
}
- uint32_t readFieldBegin(std::string& name, TType& fieldType, int16_t& fieldId) {
+ uint32_t readFieldBegin(std::string& name,
+ TType& fieldType,
+ int16_t& fieldId) {
uint32_t rv = source_->readFieldBegin(name, fieldType, fieldId);
if (fieldType == T_STOP) {
sink_->writeFieldStop();
@@ -73,18 +79,22 @@ public:
return rv;
}
+
uint32_t readFieldEnd() {
uint32_t rv = source_->readFieldEnd();
sink_->writeFieldEnd();
return rv;
}
- uint32_t readMapBegin(TType& keyType, TType& valType, uint32_t& size) {
+ uint32_t readMapBegin(TType& keyType,
+ TType& valType,
+ uint32_t& size) {
uint32_t rv = source_->readMapBegin(keyType, valType, size);
sink_->writeMapBegin(keyType, valType, size);
return rv;
}
+
uint32_t readMapEnd() {
uint32_t rv = source_->readMapEnd();
sink_->writeMapEnd();
@@ -97,6 +107,7 @@ public:
return rv;
}
+
uint32_t readListEnd() {
uint32_t rv = source_->readListEnd();
sink_->writeListEnd();
@@ -109,6 +120,7 @@ public:
return rv;
}
+
uint32_t readSetEnd() {
uint32_t rv = source_->readSetEnd();
sink_->writeSetEnd();
@@ -166,12 +178,11 @@ public:
return rv;
}
-private:
+ private:
boost::shared_ptr<TProtocol> source_;
boost::shared_ptr<TProtocol> sink_;
};
-}
-}
-} // apache::thrift::protocol
+
+}}} // apache::thrift::protocol
#endif // #define _THRIFT_PROTOCOL_TPROTOCOLTAP_H_ 1