void NullPlugin::getFunction()

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;
  }
}