Skip to main content

SharedQueue

Trait SharedQueue 

Source
pub trait SharedQueue {
    // 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<ByteString>>;
    fn enqueue(&self, queue_id: SharedQueueHandle, value: &[u8]) -> Result<()>;
}
Expand description

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, 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§

Source

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

Source

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

Source

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

Source

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

Implementations§

Source§

impl dyn SharedQueue

Source

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

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

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§