5 #ifndef _SANDESH_PROTOCOL_TJSONPROTOCOL_H_
6 #define _SANDESH_PROTOCOL_TJSONPROTOCOL_H_ 1
11 #include <boost/shared_ptr.hpp>
12 #include <boost/tokenizer.hpp>
13 #include <boost/algorithm/string.hpp>
14 #include <boost/algorithm/string/replace.hpp>
15 #include <boost/container/set.hpp>
18 namespace contrail {
namespace sandesh {
namespace protocol {
63 xmlstr.reserve(str.length());
64 for (std::string::const_iterator it = str.begin();
65 it != str.end(); ++it) {
67 case '&': xmlstr +=
"&";
break;
68 case '\'': xmlstr +=
"'";
break;
69 case '<': xmlstr +=
"<";
break;
70 case '>': xmlstr +=
">";
break;
71 default: xmlstr += *it;
78 if (strpbrk(str.c_str(),
"&'<>") != NULL) {
86 boost::algorithm::replace_all(str,
"&",
"&");
87 boost::algorithm::replace_all(str,
"'",
"\'");
88 boost::algorithm::replace_all(str,
"<",
"<");
89 boost::algorithm::replace_all(str,
">",
">");
115 const TType fieldType,
116 const int16_t fieldId,
117 const std::map<std::string, std::string> *
const amap = NULL);
125 const uint32_t size);
130 const uint32_t size);
135 const uint32_t size);
143 int32_t
writeI16(
const int16_t i16);
145 int32_t
writeI32(
const int32_t i32);
147 int32_t
writeI64(
const int64_t i64);
149 int32_t
writeU16(
const uint16_t u16);
151 int32_t
writeU32(
const uint32_t u32);
153 int32_t
writeU64(
const uint64_t u64);
157 int32_t
writeIPADDR(
const boost::asio::ip::address& ipaddress);
165 int32_t
writeJSON(
const std::string& str);
236 typedef boost::tokenizer<boost::char_separator<char> >
320 boost::shared_ptr<TProtocol>
getProtocol(boost::shared_ptr<TTransport> trans) {
321 return boost::shared_ptr<TProtocol>(
new TJSONProtocol(trans));
328 #endif // #ifndef _SANDESH_PROTOCOL_TJSONPROTOCOL_H_
std::vector< bool > is_list_begin_list_
int32_t writeBinary(const std::string &str)
int32_t writeU64(const uint64_t u64)
static std::string escapeJSONControlChars(const std::string &str)
bool is_primitive_list_begin_
int32_t writeJSON(const std::string &str)
int32_t writeStructBegin(const char *name)
virtual ~TJSONProtocolFactory()
void setStringPrefixSize(int32_t string_prefix_size)
bool in_non_primitive_map_context_
int32_t writeU16(const uint16_t u16)
int32_t writeIPV4(const uint32_t ip4)
std::vector< bool > is_struct_begin_list_
int32_t writeMapBegin(const TType keyType, const TType valType, const uint32_t size)
bool in_primitive_list_context_
boost::tokenizer< boost::char_separator< char > > tokenizer
static const int32_t DEFAULT_STRING_PREFIX_SIZE
int32_t writeFieldBegin(const char *name, const TType fieldType, const int16_t fieldId, const std::map< std::string, std::string > *const amap=NULL)
bool is_list_elem_string_
int32_t writeString(const std::string &str)
int32_t writeSandeshEnd()
int32_t writeContainerElementBegin()
static const std::string & fieldTypeName(TType type)
int32_t writeSetBegin(const TType elemType, const uint32_t size)
static const int indent_inc
int32_t readAll(uint8_t *buf, uint32_t len)
int32_t writeIPADDR(const boost::asio::ip::address &ipaddress)
int32_t writeContainerElementEnd()
int32_t writePlain(const std::string &str)
int32_t writeI32(const int32_t i32)
void setSandeshEnd(bool val)
int32_t writeMessageBegin(const std::string &name, const TMessageType messageType, const int32_t seqid)
static void unescapeJSONControlChars(std::string &str)
bool is_first_primitve_list_elem_
int32_t string_prefix_size_
static TType getTypeIDForTypeName(const std::string &name)
bool in_non_primitive_list_context_
int32_t writeByte(const int8_t byte)
std::map< TType, bool > complexTypeSet
int32_t writeU32(const uint32_t u32)
static const int32_t DEFAULT_STRING_LIMIT
std::vector< write_state_t > write_state_
static std::string escapeJSONControlCharsInternal(const std::string &str)
std::vector< bool > is_first_element_context_
std::vector< std::string > xml_state_
std::vector< bool > is_map_val_primitive_
LookaheadReader(TTransport &trans)
int32_t writeBool(const bool value)
int32_t writeI16(const int16_t i16)
int32_t writeI64(const int64_t i64)
int32_t writeMessageEnd()
int32_t writeUUID(const boost::uuids::uuid &uuid)
int32_t writeSandeshBegin(const char *name)
std::vector< bool > in_map_val_context_
int32_t writeListBegin(const TType elemType, const uint32_t size)
int32_t writeIndented(const std::string &str)
TJSONProtocol(boost::shared_ptr< TTransport > trans)
boost::shared_ptr< TProtocol > getProtocol(boost::shared_ptr< TTransport > trans)
void setStringSizeLimit(int32_t string_limit)
std::vector< std::string > current_sandesh_context_
std::vector< bool > is_primitive_element_list_
int32_t writeDouble(const double dub)