| 230 | } |
| 231 | |
| 232 | static void console_command_refresh_list(ConsoleServer &cs, u32 client_id, const char *json, void *user_data) |
| 233 | { |
| 234 | DataCompiler *dc = (DataCompiler *)user_data; |
| 235 | |
| 236 | TempAllocator4096 ta; |
| 237 | StringStream ss(ta); |
| 238 | JsonObject obj(ta); |
| 239 | sjson::parse(obj, json); |
| 240 | |
| 241 | const u32 revision = (u32)sjson::parse_int(obj["revision"]); |
| 242 | |
| 243 | ss << "{\"type\":\"refresh_list\",\"list\":["; |
| 244 | auto cur = hash_map::begin(dc->_data_revisions); |
| 245 | auto end = hash_map::end(dc->_data_revisions); |
| 246 | for (; cur != end; ++cur) { |
| 247 | HASH_MAP_SKIP_HOLE(dc->_data_revisions, cur); |
| 248 | |
| 249 | DynamicString deffault(ta); |
| 250 | if (cur->second > revision) { |
| 251 | ss << "\""; |
| 252 | ss << hash_map::get(dc->_data_index, cur->first, deffault).c_str(); |
| 253 | ss << "\","; |
| 254 | } |
| 255 | } |
| 256 | ss << "]}"; |
| 257 | |
| 258 | cs.send(client_id, string_stream::c_str(ss)); |
| 259 | } |
| 260 | |
| 261 | static void parse_data_versions(HashMap<StringId64, u32> &versions |
| 262 | , Buffer &json |