SharedData

Trait SharedData 

Source
pub trait SharedData {
    // Required methods
    fn get(
        &self,
        key: &str,
    ) -> Result<(Option<ByteString>, Option<OptimisticLockVersion>)>;
    fn set(
        &self,
        key: &str,
        value: &[u8],
        version: Option<OptimisticLockVersion>,
    ) -> Result<()>;
}
Expand description

An interface of the Envoy Shared Data API.

Basic usage of SharedData:

use envoy::host::SharedData;

let shared_data = SharedData::default();

let value = shared_data.get("shared_key")?;

shared_data.set("shared_key", b"shared value", None)?;

Injecting SharedData into a HTTP Filter as a dependency:

use envoy::host::SharedData;

struct MyHttpFilter<'a> {
    shared_data: &'a dyn SharedData,
}

impl<'a> MyHttpFilter<'a> {
    /// Creates a new instance parameterized with a given [`SharedData`] implementation.
    pub fn new(shared_data: &'a dyn SharedData) -> Self {
        MyHttpFilter { shared_data }
    }

    /// Creates a new instance parameterized with the default [`SharedData`] implementation.
    pub fn default() -> Self {
        Self::new(SharedData::default())
    }
}

Required Methods§

Source

fn get( &self, key: &str, ) -> Result<(Option<ByteString>, Option<OptimisticLockVersion>)>

Returns shared data by key.

§Arguments
  • key - key.
§Return value
  • value - an opaque blob of bytes.
  • version - optimistic lock version.
Source

fn set( &self, key: &str, value: &[u8], version: Option<OptimisticLockVersion>, ) -> Result<()>

Shares data under a given key.

§Arguments
  • key - key.
  • value - an opaque blob of bytes.
  • version - optimistic lock version.

Implementations§

Source§

impl dyn SharedData

Source

pub fn default() -> &'static dyn SharedData

Returns the default implementation that interacts with Envoy through its ABI.

Implementors§