[][src]Trait envoy_sdk::host::shared_queue::SharedQueue

pub trait SharedQueue {
    fn register(&self, name: &str) -> Result<SharedQueueHandle>;
fn lookup(
        &self,
        vm_id: &str,
        name: &str
    ) -> Result<Option<SharedQueueHandle>>;
fn dequeue(&self, queue_id: SharedQueueHandle) -> Result<Option<Bytes>>;
fn enqueue(
        &self,
        queue_id: SharedQueueHandle,
        value: Option<&[u8]>
    ) -> Result<()>; }

An interface of the Envoy Shared Queue API.

Basic usage of SharedQueue:

use envoy::host::SharedQueue;

let shared_queue = SharedQueue::default();

let queue_handle = shared_queue.register("shared_queue")?;

shared_queue.enqueue(queue_handle, Some(b"some value"))?;

Injecting SharedQueue into a HTTP Filter as a dependency:

use envoy::host::SharedQueue;

struct MyHttpFilter<'a> {
    shared_queue: &'a dyn SharedQueue,
}

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

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

Required methods

fn register(&self, name: &str) -> Result<SharedQueueHandle>

fn lookup(&self, vm_id: &str, name: &str) -> Result<Option<SharedQueueHandle>>

fn dequeue(&self, queue_id: SharedQueueHandle) -> Result<Option<Bytes>>

fn enqueue(
    &self,
    queue_id: SharedQueueHandle,
    value: Option<&[u8]>
) -> Result<()>

Loading content...

Implementations

impl dyn SharedQueue[src]

pub fn default() -> &'static dyn SharedQueue[src]

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

Implementors

Loading content...