Reuse core host definitions across requests
This commit is contained in:
+15
-14
@@ -818,7 +818,8 @@ int uce_wasm_apply_context(const char* buf, size_t len)
|
||||
uce_host_log(3, error.data(), error.size());
|
||||
return(1);
|
||||
}
|
||||
wasm_request.call = decoded;
|
||||
wasm_request.call = std::move(decoded);
|
||||
DValue& applied = wasm_request.call;
|
||||
auto apply_map = [](DValue* source, StringMap& dest) {
|
||||
dest.clear();
|
||||
if(source)
|
||||
@@ -826,23 +827,23 @@ int uce_wasm_apply_context(const char* buf, size_t len)
|
||||
dest[key] = item.to_string();
|
||||
});
|
||||
};
|
||||
if(decoded.key("server_config"))
|
||||
apply_map(decoded.key("server_config"), wasm_server.config);
|
||||
apply_map(decoded.key("params"), wasm_request.params);
|
||||
apply_map(decoded.key("get"), wasm_request.get);
|
||||
apply_map(decoded.key("post"), wasm_request.post);
|
||||
apply_map(decoded.key("cookies"), wasm_request.cookies);
|
||||
apply_map(decoded.key("session"), wasm_request.session);
|
||||
if(DValue* session_id = decoded.key("session_id"))
|
||||
if(applied.key("server_config"))
|
||||
apply_map(applied.key("server_config"), wasm_server.config);
|
||||
apply_map(applied.key("params"), wasm_request.params);
|
||||
apply_map(applied.key("get"), wasm_request.get);
|
||||
apply_map(applied.key("post"), wasm_request.post);
|
||||
apply_map(applied.key("cookies"), wasm_request.cookies);
|
||||
apply_map(applied.key("session"), wasm_request.session);
|
||||
if(DValue* session_id = applied.key("session_id"))
|
||||
wasm_request.session_id = session_id->to_string();
|
||||
if(DValue* session_name = decoded.key("session_name"))
|
||||
if(DValue* session_name = applied.key("session_name"))
|
||||
wasm_request.session_name = session_name->to_string();
|
||||
if(DValue* session_loaded_hash = decoded.key("session_loaded_hash"))
|
||||
if(DValue* session_loaded_hash = applied.key("session_loaded_hash"))
|
||||
wasm_request.session_loaded_hash = session_loaded_hash->to_string();
|
||||
DValue* entry = decoded.key("entry_unit");
|
||||
DValue* entry = applied.key("entry_unit");
|
||||
if(entry)
|
||||
wasm_request.resources.current_unit_file = entry->to_string();
|
||||
DValue* raw_in = decoded.key("in");
|
||||
DValue* raw_in = applied.key("in");
|
||||
wasm_request.in = raw_in ? raw_in->to_string() : "";
|
||||
// websocket event context: ws_send()/ws_close() capture into the dispatch
|
||||
// list (the workspace owns no connections), which collect() carries back to
|
||||
@@ -851,7 +852,7 @@ int uce_wasm_apply_context(const char* buf, size_t len)
|
||||
wasm_request.resources.websocket_connection_state_before = DValue();
|
||||
wasm_request.resources.websocket_dispatch_commands = DValue();
|
||||
wasm_request.resources.websocket_dispatch_capture = false;
|
||||
DValue* ws = decoded.key("ws");
|
||||
DValue* ws = applied.key("ws");
|
||||
if(ws)
|
||||
{
|
||||
wasm_request.resources.websocket_connection_id = (*ws)["connection_id"].to_string();
|
||||
|
||||
Reference in New Issue
Block a user