aboutsummaryrefslogtreecommitdiff
path: root/src/serialization/json_object.h
diff options
context:
space:
mode:
authorLee Clagett <code@leeclagett.com>2020-05-31 01:22:33 -0400
committerLee Clagett <code@leeclagett.com>2020-08-14 23:01:00 +0000
commit4e2377995d286eb01456ed1dfd29cd278282ec19 (patch)
treec722a778b7c07d71008d35ce6d5907f92a7de25e /src/serialization/json_object.h
parentMerge pull request #6582 (diff)
downloadmonero-4e2377995d286eb01456ed1dfd29cd278282ec19.tar.xz
Change ZMQ-JSON txextra to hex and remove unnecessary base fields
Diffstat (limited to 'src/serialization/json_object.h')
-rw-r--r--src/serialization/json_object.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/serialization/json_object.h b/src/serialization/json_object.h
index 2a9b63b08..9f652a679 100644
--- a/src/serialization/json_object.h
+++ b/src/serialization/json_object.h
@@ -153,6 +153,9 @@ inline void toJsonValue(rapidjson::Writer<epee::byte_stream>& dest, const std::s
}
void fromJsonValue(const rapidjson::Value& val, std::string& str);
+void toJsonValue(rapidjson::Writer<epee::byte_stream>& dest, const std::vector<std::uint8_t>&);
+void fromJsonValue(const rapidjson::Value& src, std::vector<std::uint8_t>& i);
+
void toJsonValue(rapidjson::Writer<epee::byte_stream>& dest, bool i);
void fromJsonValue(const rapidjson::Value& val, bool& b);
@@ -353,6 +356,10 @@ inline typename std::enable_if<sfinae::is_map_like<Map>::value, void>::type from
template <typename Vec>
inline typename std::enable_if<sfinae::is_vector_like<Vec>::value, void>::type toJsonValue(rapidjson::Writer<epee::byte_stream>& dest, const Vec &vec)
{
+ using value_type = typename Vec::value_type;
+ static_assert(!std::is_same<value_type, char>::value, "encoding an array of chars is faster as hex");
+ static_assert(!std::is_same<value_type, unsigned char>::value, "encoding an array of unsigned char is faster as hex");
+
dest.StartArray();
for (const auto& t : vec)
toJsonValue(dest, t);
@@ -362,6 +369,10 @@ inline typename std::enable_if<sfinae::is_vector_like<Vec>::value, void>::type t
template <typename Vec>
inline typename std::enable_if<sfinae::is_vector_like<Vec>::value, void>::type fromJsonValue(const rapidjson::Value& val, Vec& vec)
{
+ using value_type = typename Vec::value_type;
+ static_assert(!std::is_same<value_type, char>::value, "encoding a vector of chars is faster as hex");
+ static_assert(!std::is_same<value_type, unsigned char>::value, "encoding a vector of unsigned char is faster as hex");
+
if (!val.IsArray())
{
throw WRONG_TYPE("json array");