Commit e8a6df12 authored by aligungr's avatar aligungr

JSON utility improvement

parent 4dc22ffc
...@@ -37,10 +37,14 @@ Json ToJson(const GnbConfig &v) ...@@ -37,10 +37,14 @@ Json ToJson(const GnbConfig &v)
Json ToJson(const NgapAmfContext &v) Json ToJson(const NgapAmfContext &v)
{ {
return Json::Obj({ return Json::Obj({
{"ctx-id", v.ctxId},
{"name", v.amfName}, {"name", v.amfName},
{"capacity", v.relativeCapacity},
{"state", ToJson(v.state).str()},
{"address", v.address + ":" + std::to_string(v.port)}, {"address", v.address + ":" + std::to_string(v.port)},
{"state", ToJson(v.state).str()},
{"capacity", v.relativeCapacity},
{"association", ToJson(v.association)},
{"served-guami", ::ToJson(v.servedGuamiList)},
{"served-plmn", ::ToJson(v.plmnSupportList)},
}); });
} }
...@@ -76,4 +80,24 @@ Json ToJson(const EPagingDrx &v) ...@@ -76,4 +80,24 @@ Json ToJson(const EPagingDrx &v)
} }
} }
Json ToJson(const SctpAssociation &v)
{
return Json::Obj({{"id", v.associationId}, {"rx-num", v.inStreams}, {"tx-num", v.outStreams}});
}
Json ToJson(const ServedGuami &v)
{
return Json::Obj({{"guami", ToJson(v.guami)}, {"backup-amf", v.backupAmfName}});
}
Json ToJson(const Guami &v)
{
return Json::Obj({
{"plmn", ToJson(v.plmn)},
{"region-id", ::ToJson(v.amfRegionId)},
{"set-id", ::ToJson(v.amfSetId)},
{"pointer", ::ToJson(v.amfPointer)},
});
}
} // namespace nr::gnb } // namespace nr::gnb
...@@ -303,5 +303,8 @@ Json ToJson(const GnbConfig &v); ...@@ -303,5 +303,8 @@ Json ToJson(const GnbConfig &v);
Json ToJson(const NgapAmfContext &v); Json ToJson(const NgapAmfContext &v);
Json ToJson(const EAmfState &v); Json ToJson(const EAmfState &v);
Json ToJson(const EPagingDrx &v); Json ToJson(const EPagingDrx &v);
Json ToJson(const SctpAssociation &v);
Json ToJson(const ServedGuami &v);
Json ToJson(const Guami &v);
} // namespace nr::gnb } // namespace nr::gnb
\ No newline at end of file
...@@ -40,8 +40,10 @@ Json ToJson(const Plmn &v) ...@@ -40,8 +40,10 @@ Json ToJson(const Plmn &v)
Json ToJson(const SliceSupport &v) Json ToJson(const SliceSupport &v)
{ {
return Json::Obj({ return Json::Obj({{"sst", ToJson(v.sst)}, {"sd", ToJson(v.sd)}});
{"sst", ToJson(v.sst)}, }
{"sd", ToJson(v.sd)}
}); Json ToJson(const PlmnSupport &v)
{
return Json::Obj({{"plmn", ToJson(v.plmn)}, {"nssai", ToJson(v.sliceSupportList)}});
} }
...@@ -121,3 +121,4 @@ struct Supi ...@@ -121,3 +121,4 @@ struct Supi
Json ToJson(const Supi &v); Json ToJson(const Supi &v);
Json ToJson(const Plmn &v); Json ToJson(const Plmn &v);
Json ToJson(const SliceSupport &v); Json ToJson(const SliceSupport &v);
Json ToJson(const PlmnSupport &v);
...@@ -208,10 +208,6 @@ Json::Json(std::string str) : m_type{Type::STRING}, m_strVal(std::move(str)) ...@@ -208,10 +208,6 @@ Json::Json(std::string str) : m_type{Type::STRING}, m_strVal(std::move(str))
{ {
} }
Json::Json(const char *str) : m_type{Type::STRING}, m_strVal(str)
{
}
Json::Json(bool v) : m_type{Type::BOOL}, m_strVal(v ? "true" : "false"), m_intVal{v} Json::Json(bool v) : m_type{Type::BOOL}, m_strVal(v ? "true" : "false"), m_intVal{v}
{ {
} }
...@@ -391,11 +387,6 @@ Json ToJson(const std::string &v) ...@@ -391,11 +387,6 @@ Json ToJson(const std::string &v)
return v; return v;
} }
Json ToJson(const char *v)
{
return v;
}
Json ToJson(uint8_t v) Json ToJson(uint8_t v)
{ {
return v; return v;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <initializer_list> #include <initializer_list>
#include <map> #include <map>
#include <memory>
#include <optional> #include <optional>
#include <string> #include <string>
#include <utility> #include <utility>
...@@ -44,7 +45,6 @@ class Json ...@@ -44,7 +45,6 @@ class Json
Json(); Json();
/* no-explicit */ Json(nullptr_t v); /* no-explicit */ Json(nullptr_t v);
/* no-explicit */ Json(std::string str); /* no-explicit */ Json(std::string str);
/* no-explicit */ Json(const char *str);
/* no-explicit */ Json(bool v); /* no-explicit */ Json(bool v);
/* no-explicit */ Json(uint8_t v); /* no-explicit */ Json(uint8_t v);
/* no-explicit */ Json(int8_t v); /* no-explicit */ Json(int8_t v);
...@@ -55,6 +55,14 @@ class Json ...@@ -55,6 +55,14 @@ class Json
/* no-explicit */ Json(int64_t v); /* no-explicit */ Json(int64_t v);
/* no-explicit */ Json(uint64_t v) = delete; /* no-explicit */ Json(uint64_t v) = delete;
template <std::size_t N>
inline /* no-explicit */ Json(const char (&v)[N]) : Json(std::string(v))
{
}
template <typename T>
Json(T) = delete;
public: public:
static Json Arr(std::initializer_list<Json> &&elements); static Json Arr(std::initializer_list<Json> &&elements);
static Json Obj(std::initializer_list<std::pair<std::string, Json>> &&elements); static Json Obj(std::initializer_list<std::pair<std::string, Json>> &&elements);
...@@ -94,7 +102,6 @@ class Json ...@@ -94,7 +102,6 @@ class Json
Json ToJson(nullptr_t); Json ToJson(nullptr_t);
Json ToJson(bool v); Json ToJson(bool v);
Json ToJson(const std::string &v); Json ToJson(const std::string &v);
Json ToJson(const char *v);
Json ToJson(uint8_t v); Json ToJson(uint8_t v);
Json ToJson(int8_t v); Json ToJson(int8_t v);
Json ToJson(uint16_t v); Json ToJson(uint16_t v);
...@@ -109,6 +116,24 @@ inline Json ToJson(const std::optional<T> &v) ...@@ -109,6 +116,24 @@ inline Json ToJson(const std::optional<T> &v)
return v.has_value() ? ToJson(*v) : Json{nullptr}; return v.has_value() ? ToJson(*v) : Json{nullptr};
} }
template <typename T>
inline Json ToJson(T *v)
{
return v != nullptr ? ToJson(*v) : Json{nullptr};
}
template <typename T>
inline Json ToJson(const std::unique_ptr<T> &v)
{
return v != nullptr ? ToJson(*v) : Json{nullptr};
}
template <typename T>
inline Json ToJson(const T *v)
{
return v != nullptr ? ToJson(*v) : Json{nullptr};
}
template <typename T> template <typename T>
inline Json ToJson(const std::vector<T> &v) inline Json ToJson(const std::vector<T> &v)
{ {
...@@ -117,3 +142,6 @@ inline Json ToJson(const std::vector<T> &v) ...@@ -117,3 +142,6 @@ inline Json ToJson(const std::vector<T> &v)
j.push(ToJson(item)); j.push(ToJson(item));
return j; return j;
} }
template <typename T>
Json ToJson(T) = delete;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment