rename JsonSerialize to JsonEncode, JsonDeserialize to JsonDecode

This commit is contained in:
Lion Kortlepel 2022-03-02 13:26:19 +01:00
parent 965935a0e6
commit 9a0cdc6517
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B
5 changed files with 25 additions and 25 deletions

View File

@ -1,7 +1,7 @@
# v3.0.1 # v3.0.1
- ADDED Backup URLs to UpdateCheck (will fail less often now) - ADDED Backup URLs to UpdateCheck (will fail less often now)
- ADDED MP.JsonSerialize() and MP.JsonDeserialize(), which turn lua tables into json and vice-versa - ADDED MP.JsonEncode() and MP.JsonDecode(), which turn lua tables into json and vice-versa
- FIXED a bug where, when run with --working-directory, the Server.log would still be in the original directory - FIXED a bug where, when run with --working-directory, the Server.log would still be in the original directory
- FIXED a bug which could cause the plugin reload thread to spin at 100% if the reloaded plugin's didn't terminate - FIXED a bug which could cause the plugin reload thread to spin at 100% if the reloaded plugin's didn't terminate
- FIXED an issue which would cause servers to crash on mod download via SIGPIPE on POSIX - FIXED an issue which would cause servers to crash on mod download via SIGPIPE on POSIX

View File

@ -22,7 +22,7 @@ namespace MP {
bool IsPlayerConnected(int ID); bool IsPlayerConnected(int ID);
void Sleep(size_t Ms); void Sleep(size_t Ms);
void PrintRaw(sol::variadic_args); void PrintRaw(sol::variadic_args);
std::string JsonSerialize(const sol::table& object); std::string JsonEncode(const sol::table& object);
} }
namespace FS { namespace FS {
std::pair<bool, std::string> CreateDirectory(const std::string& Path); std::pair<bool, std::string> CreateDirectory(const std::string& Path);

View File

@ -190,7 +190,7 @@ private:
std::string Lua_GetPlayerName(int ID); std::string Lua_GetPlayerName(int ID);
sol::table Lua_GetPlayerVehicles(int ID); sol::table Lua_GetPlayerVehicles(int ID);
sol::table Lua_HttpCreateConnection(const std::string& host, uint16_t port); sol::table Lua_HttpCreateConnection(const std::string& host, uint16_t port);
sol::table Lua_JsonDeserialize(const std::string& str); sol::table Lua_JsonDecode(const std::string& str);
int Lua_GetPlayerIDByName(const std::string& Name); int Lua_GetPlayerIDByName(const std::string& Name);
std::string mName; std::string mName;

View File

@ -354,7 +354,7 @@ std::string LuaAPI::FS::ConcatPaths(sol::variadic_args Args) {
return Result; return Result;
} }
static void JsonSerializeRecursive(nlohmann::json& json, const sol::object& left, const sol::object& right, size_t depth = 0) { static void JsonEncodeRecursive(nlohmann::json& json, const sol::object& left, const sol::object& right, size_t depth = 0) {
if (depth > 100) { if (depth > 100) {
beammp_lua_error("json serialize will not go deeper than 100 nested tables, internal references assumed, aborted this path"); beammp_lua_error("json serialize will not go deeper than 100 nested tables, internal references assumed, aborted this path");
return; return;
@ -371,7 +371,7 @@ static void JsonSerializeRecursive(nlohmann::json& json, const sol::object& left
case sol::type::thread: case sol::type::thread:
case sol::type::function: case sol::type::function:
case sol::type::table: case sol::type::table:
beammp_lua_error("JsonSerialize: left side of table field is unexpected type"); beammp_lua_error("JsonEncode: left side of table field is unexpected type");
return; return;
case sol::type::string: case sol::type::string:
key = left.as<std::string>(); key = left.as<std::string>();
@ -387,19 +387,19 @@ static void JsonSerializeRecursive(nlohmann::json& json, const sol::object& left
case sol::type::none: case sol::type::none:
return; return;
case sol::type::poly: case sol::type::poly:
beammp_lua_warn("unsure what to do with poly type in JsonSerialize, ignoring"); beammp_lua_warn("unsure what to do with poly type in JsonEncode, ignoring");
return; return;
case sol::type::boolean: case sol::type::boolean:
value = right.as<bool>(); value = right.as<bool>();
break; break;
case sol::type::lightuserdata: case sol::type::lightuserdata:
beammp_lua_warn("unsure what to do with lightuserdata in JsonSerialize, ignoring"); beammp_lua_warn("unsure what to do with lightuserdata in JsonEncode, ignoring");
return; return;
case sol::type::userdata: case sol::type::userdata:
beammp_lua_warn("unsure what to do with userdata in JsonSerialize, ignoring"); beammp_lua_warn("unsure what to do with userdata in JsonEncode, ignoring");
return; return;
case sol::type::thread: case sol::type::thread:
beammp_lua_warn("unsure what to do with thread in JsonSerialize, ignoring"); beammp_lua_warn("unsure what to do with thread in JsonEncode, ignoring");
return; return;
case sol::type::string: case sol::type::string:
value = right.as<std::string>(); value = right.as<std::string>();
@ -408,11 +408,11 @@ static void JsonSerializeRecursive(nlohmann::json& json, const sol::object& left
value = right.as<double>(); value = right.as<double>();
break; break;
case sol::type::function: case sol::type::function:
beammp_lua_warn("unsure what to do with function in JsonSerialize, ignoring"); beammp_lua_warn("unsure what to do with function in JsonEncode, ignoring");
return; return;
case sol::type::table: case sol::type::table:
for (const auto& pair : right.as<sol::table>()) { for (const auto& pair : right.as<sol::table>()) {
JsonSerializeRecursive(value, pair.first, pair.second, depth + 1); JsonEncodeRecursive(value, pair.first, pair.second, depth + 1);
} }
break; break;
} }
@ -423,11 +423,11 @@ static void JsonSerializeRecursive(nlohmann::json& json, const sol::object& left
} }
} }
std::string LuaAPI::MP::JsonSerialize(const sol::table& object) { std::string LuaAPI::MP::JsonEncode(const sol::table& object) {
nlohmann::json json; nlohmann::json json;
// table // table
for (const auto& entry : object) { for (const auto& entry : object) {
JsonSerializeRecursive(json, entry.first, entry.second); JsonEncodeRecursive(json, entry.first, entry.second);
} }
return json.dump(); return json.dump();
} }

View File

@ -483,7 +483,7 @@ static void AddToTable(sol::table& table, const std::string& left, const T& valu
} }
} }
static void JsonDeserializeRecursive(sol::state_view& StateView, sol::table& table, const std::string& left, const nlohmann::json& right) { static void JsonDecodeRecursive(sol::state_view& StateView, sol::table& table, const std::string& left, const nlohmann::json& right) {
switch (right.type()) { switch (right.type()) {
case nlohmann::detail::value_t::null: case nlohmann::detail::value_t::null:
return; return;
@ -491,7 +491,7 @@ static void JsonDeserializeRecursive(sol::state_view& StateView, sol::table& tab
auto value = table.create(); auto value = table.create();
value.clear(); value.clear();
for (const auto& entry : right.items()) { for (const auto& entry : right.items()) {
JsonDeserializeRecursive(StateView, value, entry.key(), entry.value()); JsonDecodeRecursive(StateView, value, entry.key(), entry.value());
} }
AddToTable(table, left, value); AddToTable(table, left, value);
break; break;
@ -500,7 +500,7 @@ static void JsonDeserializeRecursive(sol::state_view& StateView, sol::table& tab
auto value = table.create(); auto value = table.create();
value.clear(); value.clear();
for (const auto& entry : right.items()) { for (const auto& entry : right.items()) {
JsonDeserializeRecursive(StateView, value, "", entry.value()); JsonDecodeRecursive(StateView, value, "", entry.value());
} }
AddToTable(table, left, value); AddToTable(table, left, value);
break; break;
@ -521,31 +521,31 @@ static void JsonDeserializeRecursive(sol::state_view& StateView, sol::table& tab
AddToTable(table, left, right.get<double>()); AddToTable(table, left, right.get<double>());
break; break;
case nlohmann::detail::value_t::binary: case nlohmann::detail::value_t::binary:
beammp_lua_error("JsonDeserialize can't handle binary blob in json, ignoring"); beammp_lua_error("JsonDecode can't handle binary blob in json, ignoring");
return; return;
case nlohmann::detail::value_t::discarded: case nlohmann::detail::value_t::discarded:
return; return;
} }
} }
sol::table TLuaEngine::StateThreadData::Lua_JsonDeserialize(const std::string& str) { sol::table TLuaEngine::StateThreadData::Lua_JsonDecode(const std::string& str) {
sol::state_view StateView(mState); sol::state_view StateView(mState);
auto table = StateView.create_table(); auto table = StateView.create_table();
if (!nlohmann::json::accept(str)) { if (!nlohmann::json::accept(str)) {
beammp_lua_error("string given to JsonDeserialize is not valid json."); beammp_lua_error("string given to JsonDecode is not valid json.");
return sol::lua_nil; return sol::lua_nil;
} }
nlohmann::json json = nlohmann::json::parse(str); nlohmann::json json = nlohmann::json::parse(str);
if (json.is_object()) { if (json.is_object()) {
for (const auto& entry : json.items()) { for (const auto& entry : json.items()) {
JsonDeserializeRecursive(StateView, table, entry.key(), entry.value()); JsonDecodeRecursive(StateView, table, entry.key(), entry.value());
} }
} else if (json.is_array()) { } else if (json.is_array()) {
for (const auto& entry : json) { for (const auto& entry : json) {
JsonDeserializeRecursive(StateView, table, "", entry); JsonDecodeRecursive(StateView, table, "", entry);
} }
} else { } else {
beammp_lua_error("JsonDeserialize expected array or object json, instead got " + std::string(json.type_name())); beammp_lua_error("JsonDecode expected array or object json, instead got " + std::string(json.type_name()));
return sol::lua_nil; return sol::lua_nil;
} }
return table; return table;
@ -634,9 +634,9 @@ TLuaEngine::StateThreadData::StateThreadData(const std::string& Name, std::atomi
mEngine->CancelEventTimers(EventName, mStateId); mEngine->CancelEventTimers(EventName, mStateId);
}); });
MPTable.set_function("Set", &LuaAPI::MP::Set); MPTable.set_function("Set", &LuaAPI::MP::Set);
MPTable.set_function("JsonSerialize", &LuaAPI::MP::JsonSerialize); MPTable.set_function("JsonEncode", &LuaAPI::MP::JsonEncode);
MPTable.set_function("JsonDeserialize", [this](const std::string& str) { MPTable.set_function("JsonDecode", [this](const std::string& str) {
return Lua_JsonDeserialize(str); return Lua_JsonDecode(str);
}); });
auto HttpTable = StateView.create_named_table("Http"); auto HttpTable = StateView.create_named_table("Http");