Proxy-Wasm 项目使用教程
specWebAssembly for Proxies (ABI specification)项目地址:https://gitcode.com/gh_mirrors/spec8/spec
1. 项目的目录结构及介绍
Proxy-Wasm 项目的目录结构如下:
spec/
├── abi-versions
├── c-api
├── context.md
├── design
├── examples
├── extensions
├── include
├── sdk
├── specification.md
├── status.md
└── tests
目录介绍
abi-versions
: 包含不同版本的 ABI(Application Binary Interface)规范。c-api
: 包含 C 语言 API 的相关文件。context.md
: 描述上下文相关的文档。design
: 包含项目的设计文档。examples
: 包含示例代码。extensions
: 包含扩展相关的文件。include
: 包含头文件。sdk
: 包含 SDK 相关的文件。specification.md
: 项目的详细规范文档。status.md
: 项目的状态文档。tests
: 包含测试文件。
2. 项目的启动文件介绍
Proxy-Wasm 项目的启动文件通常位于 examples
目录下。以下是一个典型的启动文件示例:
#include "proxy_wasm_intrinsics.h"
class ExampleRootContext : public RootContext {
public:
explicit ExampleRootContext(uint32_t id, StringView root_id) : RootContext(id, root_id) {}
bool onStart(size_t) override {
LOG_INFO("Starting example plugin");
return true;
}
};
class ExampleContext : public Context {
public:
explicit ExampleContext(uint32_t id, RootContext* root) : Context(id, root) {}
FilterHeadersStatus onRequestHeaders(uint32_t, bool) override {
LOG_INFO(std::string("onRequestHeaders ") + std::to_string(id()));
return FilterHeadersStatus::Continue;
}
};
static RegisterContextFactory register_ExampleContext(CONTEXT_FACTORY(ExampleContext),
ROOT_FACTORY(ExampleRootContext));
启动文件介绍
ExampleRootContext
: 定义根上下文类,处理插件的启动逻辑。ExampleContext
: 定义请求上下文类,处理请求头部的逻辑。RegisterContextFactory
: 注册上下文工厂,用于创建上下文实例。
3. 项目的配置文件介绍
Proxy-Wasm 项目的配置文件通常是一个 JSON 文件,用于配置插件的行为。以下是一个典型的配置文件示例:
{
"config": {
"vm_config": {
"engine": "wasmtime",
"code": {
"local": {
"filename": "example.wasm"
}
}
},
"root_id": "example",
"listeners": [
{
"address": "0.0.0.0:8080",
"filters": [
{
"name": "example",
"config": {
"key": "value"
}
}
]
}
]
}
}
配置文件介绍
vm_config
: 配置 Wasm 虚拟机,包括引擎类型和代码路径。root_id
: 根上下文的唯一标识符。listeners
: 配置监听器,包括地址和过滤器。filters
: 配置过滤器,包括名称和配置项。
以上是 Proxy-Wasm 项目的基本使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望对您有所帮助。
specWebAssembly for Proxies (ABI specification)项目地址:https://gitcode.com/gh_mirrors/spec8/spec
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考