[−][src]Module envoy_sdk::extension::filter::network
Envoy
Network Filter
extension.
Creating a new Network Filter
extension using Envoy SDK
consists of the following steps:
- Implement
NetworkFilter
trait to define core logic of your extension - Implement
ExtensionFactory
trait to create new instances of your extension Register
your extension on WebAssembly module start up
Examples
Basic NetworkFilter
:
use envoy::extension::NetworkFilter; /// My very own `NetworkFilter`. struct MyNetworkFilter; impl NetworkFilter for MyNetworkFilter {}
ExtensionFactory
for MyNetworkFilter
instances:
use envoy::extension::{ExtensionFactory, InstanceId, Result}; /// `ExtensionFactory` for `MyNetworkFilter`. struct MyNetworkFilterFactory; impl ExtensionFactory for MyNetworkFilterFactory { type Extension = MyNetworkFilter; const NAME: &'static str = "my_network_filter"; fn new_extension(&mut self, _instance_id: InstanceId) -> Result<Self::Extension> { Ok(MyNetworkFilter) } }
Registration of MyNetworkFilter
on start up:
use envoy::extension::{entrypoint, Module, Result}; entrypoint! { initialize } // put initialization logic into a function to make it unit testable fn initialize() -> Result<Module> { Module::new() .add_network_filter(|_instance_id| Ok(MyNetworkFilterFactory)) }
Enums
FilterStatus | Return codes for |
Traits
ConnectionCompleteOps | An interface for operations available in the context of |
DownstreamCloseOps | An interface for operations available in the context of |
DownstreamDataOps | An interface for manipulating data in the read buffer (data read from the downstream connection). |
NetworkFilter | An interface of the |
Ops | An interface for manipulating data in both read and write buffers. |
UpstreamCloseOps | An interface for operations available in the context of |
UpstreamDataOps | An interface for manipulating data in the write buffer (data to be written to the downstream connection). |