Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New ultra-fast JSON Parser and Reader #3285

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
ecb8b99
add install vendor
znvjder Dec 31, 2023
1bf4ce8
create projects and premake files
znvjder Jan 1, 2024
3a65ef7
test server implementation
znvjder Jan 1, 2024
4624530
make vendor to header-only
znvjder Jan 1, 2024
09e8b88
fix error 2039
znvjder Jan 1, 2024
ef949e5
switch to simdjson
znvjder Jan 5, 2024
a53b08d
fix typo
znvjder Jan 5, 2024
799de16
add writer json api (rapidjson)
znvjder Jan 5, 2024
ae7e96c
update rapidjson as vendor
znvjder Jan 5, 2024
412ed0f
remove rapidjson from install_discord
znvjder Jan 5, 2024
c97a8a2
add rapidjson for server as writer api
znvjder Jan 5, 2024
ebd77c8
add install_rapidjson action
znvjder Jan 5, 2024
ec3e608
fix tabbing, add json vendors
znvjder Jan 7, 2024
30f13bc
fix tabbing on server
znvjder Jan 7, 2024
7917192
remove json-c from projects
znvjder Jan 7, 2024
43d6fbb
Add server implementation
znvjder Jan 7, 2024
7ca968f
Add client implementation
znvjder Jan 7, 2024
8bf614c
Add parse and reader functions
znvjder Jan 7, 2024
78f9dc9
Add to server and client functions as table (decode, encode)
znvjder Jan 7, 2024
819fc50
Use new parser and reader in environment on server
znvjder Jan 7, 2024
0579d49
Use new parser in environment on client
znvjder Jan 7, 2024
b340da2
delete dir vendor/json-c
znvjder Jan 7, 2024
47c9f5b
fix linux build - add source files (include only)
znvjder Jan 8, 2024
9f193fd
simdjson removed. Parser has been rewritten to use rapid
znvjder Jan 10, 2024
911de97
fix template. try fix linux build
znvjder Jan 12, 2024
ac22f43
add rapidjson libs to build.yaml
znvjder Jan 13, 2024
f7ea618
remove unnecessary "key" bounds, now its dynamic
znvjder Jan 13, 2024
fc411b8
Test linux build
znvjder Jan 13, 2024
1ad6b23
test unix build
znvjder Jan 13, 2024
b353572
test unix build 2
znvjder Jan 13, 2024
2517c59
Remove links from projects to fix builds
znvjder Jan 13, 2024
4508f72
Fix backwards compatibility for old resources
znvjder Jan 13, 2024
53f98d1
Delete tmp.zip
znvjder Jan 13, 2024
4e97033
Cleanup files, fix indent
znvjder Jan 14, 2024
401e2ad
Merge branch 'master' into feature/new-json
znvjder Feb 29, 2024
847a650
Merge branch 'master' into feature/new-json
znvjder Mar 9, 2024
aafc050
Merge branch 'master' into feature/new-json
znvjder Apr 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Client/mods/deathmatch/logic/CRemoteCalls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,10 @@ void CRemoteCall::DownloadFinishedCallback(const SHttpDownloadResult& result)
arguments.PushNumber(0);
}
else
arguments.ReadFromJSONString(result.pData);
{
if (arguments.ReadJSONString(result.pData))
arguments.PushArguments(arguments);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this line do? arguments.PushArguments(arguments) looks strange

}
}
else
{
Expand Down
364 changes: 182 additions & 182 deletions Client/mods/deathmatch/logic/lua/CLuaArgument.cpp

Large diffs are not rendered by default.

20 changes: 17 additions & 3 deletions Client/mods/deathmatch/logic/lua/CLuaArgument.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,14 @@ extern "C"
}
#include <net/bitstream.h>
#include <string>
#include "json.h"

#include "rapidjson/document.h"
#include "rapidjson/reader.h"
#include "rapidjson/error/en.h"
#include "rapidjson/error/error.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

class CClientEntity;
class CLuaArguments;
Expand Down Expand Up @@ -59,10 +66,17 @@ class CLuaArgument

bool ReadFromBitStream(NetBitStreamInterface& bitStream, std::vector<CLuaArguments*>* pKnownTables = NULL);
bool WriteToBitStream(NetBitStreamInterface& bitStream, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = NULL) const;
json_object* WriteToJSONObject(bool bSerialize = false, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = NULL);
bool ReadFromJSONObject(json_object* object, std::vector<CLuaArguments*>* pKnownTables = NULL);
char* WriteToString(char* szBuffer, int length);

// json parser
bool DeserializeValueFromJSON(const rapidjson::Value& obj, std::vector<CLuaArguments*>* pKnownTables = NULL);

// json serializer
bool GetResourceNameFromUserData(std::string& result) const;

template <typename Writer>
void SerializeToJSON(Writer& writer, bool bSerialize = false, CFastHashMap<CLuaArguments*, unsigned long>* pKnownTables = NULL);

private:
void LogUnableToPacketize(const char* szMessage) const;

Expand Down
Loading