Commit e8a6df12 authored by aligungr's avatar aligungr

JSON utility improvement

parent 4dc22ffc
......@@ -37,10 +37,14 @@ Json ToJson(const GnbConfig &v)
Json ToJson(const NgapAmfContext &v)
{
return Json::Obj({
{"ctx-id", v.ctxId},
{"name", v.amfName},
{"capacity", v.relativeCapacity},
{"state", ToJson(v.state).str()},
{"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)
}
}
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
......@@ -303,5 +303,8 @@ Json ToJson(const GnbConfig &v);
Json ToJson(const NgapAmfContext &v);
Json ToJson(const EAmfState &v);
Json ToJson(const EPagingDrx &v);
Json ToJson(const SctpAssociation &v);
Json ToJson(const ServedGuami &v);
Json ToJson(const Guami &v);
} // namespace nr::gnb
\ No newline at end of file
......@@ -40,8 +40,10 @@ Json ToJson(const Plmn &v)
Json ToJson(const SliceSupport &v)
{
return Json::Obj({
{"sst", ToJson(v.sst)},
{"sd", ToJson(v.sd)}
});
return Json::Obj({{"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
Json ToJson(const Supi &v);
Json ToJson(const Plmn &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))
{
}
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}
{
}
......@@ -391,11 +387,6 @@ Json ToJson(const std::string &v)
return v;
}
Json ToJson(const char *v)
{
return v;
}
Json ToJson(uint8_t v)
{
return v;
......
......@@ -10,6 +10,7 @@
#include <initializer_list>
#include <map>
#include <memory>
#include <optional>
#include <string>
#include <utility>
......@@ -44,7 +45,6 @@ class Json
Json();
/* no-explicit */ Json(nullptr_t v);
/* no-explicit */ Json(std::string str);
/* no-explicit */ Json(const char *str);
/* no-explicit */ Json(bool v);
/* no-explicit */ Json(uint8_t v);
/* no-explicit */ Json(int8_t v);
......@@ -55,6 +55,14 @@ class Json
/* no-explicit */ Json(int64_t v);
/* 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:
static Json Arr(std::initializer_list<Json> &&elements);
static Json Obj(std::initializer_list<std::pair<std::string, Json>> &&elements);
......@@ -94,7 +102,6 @@ class Json
Json ToJson(nullptr_t);
Json ToJson(bool v);
Json ToJson(const std::string &v);
Json ToJson(const char *v);
Json ToJson(uint8_t v);
Json ToJson(int8_t v);
Json ToJson(uint16_t v);
......@@ -109,6 +116,24 @@ inline Json ToJson(const std::optional<T> &v)
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>
inline Json ToJson(const std::vector<T> &v)
{
......@@ -117,3 +142,6 @@ inline Json ToJson(const std::vector<T> &v)
j.push(ToJson(item));
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