in plugins/experimental/wasm/lib/src/null/null_plugin.cc [212:252]
void NullPlugin::getFunction(std::string_view function_name, WasmCallWord<3> *f) {
auto *plugin = this;
if (function_name == "proxy_on_downstream_data") {
*f = [plugin](ContextBase *context, Word context_id, Word body_buffer_length,
Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onDownstreamData(context_id, body_buffer_length, end_of_stream));
};
} else if (function_name == "proxy_on_upstream_data") {
*f = [plugin](ContextBase *context, Word context_id, Word body_buffer_length,
Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onUpstreamData(context_id, body_buffer_length, end_of_stream));
};
} else if (function_name == "proxy_on_request_headers") {
*f = [plugin](ContextBase *context, Word context_id, Word headers, Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onRequestHeaders(context_id, headers, end_of_stream));
};
} else if (function_name == "proxy_on_request_body") {
*f = [plugin](ContextBase *context, Word context_id, Word body_buffer_length,
Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onRequestBody(context_id, body_buffer_length, end_of_stream));
};
} else if (function_name == "proxy_on_response_headers") {
*f = [plugin](ContextBase *context, Word context_id, Word headers, Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onResponseHeaders(context_id, headers, end_of_stream));
};
} else if (function_name == "proxy_on_response_body") {
*f = [plugin](ContextBase *context, Word context_id, Word body_buffer_length,
Word end_of_stream) -> Word {
SaveRestoreContext saved_context(context);
return Word(plugin->onResponseBody(context_id, body_buffer_length, end_of_stream));
};
} else if (!wasm_vm_->integration()->getNullVmFunction(function_name, true, 3, this, f)) {
error("Missing getFunction for: " + std::string(function_name));
*f = nullptr;
}
}