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§
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<()>
Implementations§
Sourcepub fn default() -> &'static dyn SharedQueue
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".