|
1 | 1 | #include "source/common/common/logger.h" |
2 | 2 | #include "source/extensions/common/wasm/ext/declare_property.pb.h" |
| 3 | +#include "source/extensions/common/wasm/ext/inject_encoded_data.pb.h" |
3 | 4 | #include "source/extensions/common/wasm/wasm.h" |
4 | 5 |
|
5 | 6 | #if defined(WASM_USE_CEL_PARSER) |
@@ -271,6 +272,46 @@ RegisterForeignFunction |
271 | 272 | registerDeclarePropertyForeignFunction("declare_property", |
272 | 273 | createFromClass<DeclarePropertyFactory>()); |
273 | 274 |
|
| 275 | +#if defined(HIGRESS) |
| 276 | +class InjectEncodedDataToFilterChainFactory: public Logger::Loggable<Logger::Id::wasm> { |
| 277 | +public: |
| 278 | + WasmForeignFunction create(std::shared_ptr<InjectEncodedDataToFilterChainFactory> self) const { |
| 279 | + WasmForeignFunction f = [self](WasmBase&, std::string_view arguments, |
| 280 | + const std::function<void*(size_t size)>&) -> WasmResult { |
| 281 | + envoy::source::extensions::common::wasm::InjectEncodedDataToFilterChainArguments args; |
| 282 | + if (args.ParseFromArray(arguments.data(), arguments.size())) { |
| 283 | + auto context = static_cast<Context*>(proxy_wasm::current_context_); |
| 284 | + return context->injectEncodedDataToFilterChain(args.body(), args.endstream()); |
| 285 | + } |
| 286 | + return WasmResult::BadArgument; |
| 287 | + }; |
| 288 | + return f; |
| 289 | + } |
| 290 | +}; |
| 291 | +RegisterForeignFunction |
| 292 | + registerInjectEncodedDataToFilterChainFactory("inject_encoded_data_to_filter_chain", |
| 293 | + createFromClass<InjectEncodedDataToFilterChainFactory>()); |
| 294 | + |
| 295 | +class InjectEncodedDataToFilterChainOnHeaderFactory: public Logger::Loggable<Logger::Id::wasm> { |
| 296 | + public: |
| 297 | + WasmForeignFunction create(std::shared_ptr<InjectEncodedDataToFilterChainOnHeaderFactory> self) const { |
| 298 | + WasmForeignFunction f = [self](WasmBase&, std::string_view arguments, |
| 299 | + const std::function<void*(size_t size)>&) -> WasmResult { |
| 300 | + envoy::source::extensions::common::wasm::InjectEncodedDataToFilterChainArguments args; |
| 301 | + if (args.ParseFromArray(arguments.data(), arguments.size())) { |
| 302 | + auto context = static_cast<Context*>(proxy_wasm::current_context_); |
| 303 | + return context->injectEncodedDataToFilterChainOnHeader(args.body(), args.endstream()); |
| 304 | + } |
| 305 | + return WasmResult::BadArgument; |
| 306 | + }; |
| 307 | + return f; |
| 308 | + } |
| 309 | + }; |
| 310 | + RegisterForeignFunction |
| 311 | + registerInjectEncodedDataToFilterChainOnHeaderFactory("inject_encoded_data_to_filter_chain_on_header", |
| 312 | + createFromClass<InjectEncodedDataToFilterChainOnHeaderFactory>()); |
| 313 | +#endif |
| 314 | + |
274 | 315 | } // namespace Wasm |
275 | 316 | } // namespace Common |
276 | 317 | } // namespace Extensions |
|
0 commit comments