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
.