fix(Workspaces): fix concurrence and move json parser to ipc client

This commit is contained in:
Alex
2019-04-23 11:41:49 +02:00
parent 07dba791cf
commit cccf60c30e
10 changed files with 82 additions and 77 deletions

View File

@ -7,13 +7,14 @@ namespace waybar::util {
struct JsonParser {
JsonParser() : reader_(builder_.newCharReader()) {}
const Json::Value parse(const std::string& data) const {
Json::Value root;
std::string err;
const Json::Value parse(const std::string& data, std::size_t size = 0) const {
Json::Value root(Json::objectValue);
if (data.empty()) {
return root;
}
bool res = reader_->parse(data.c_str(), data.c_str() + data.size(), &root, &err);
std::string err;
auto data_size = size > 0 ? size : data.size();
bool res = reader_->parse(data.c_str(), data.c_str() + data_size, &root, &err);
if (!res) throw std::runtime_error(err);
return root;
}