From fd9d6baea311d9b227b130749647a86838ba2ccc Mon Sep 17 00:00:00 2001 From: Igor Zinkovsky Date: Tue, 13 Jun 2023 17:49:57 -0700 Subject: feat(kv) queue implementation (#19459) Extend the unstable `Deno.Kv` API to support queues. --- ext/kv/interface.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'ext/kv/interface.rs') diff --git a/ext/kv/interface.rs b/ext/kv/interface.rs index 31b7638b4..b67ee1243 100644 --- a/ext/kv/interface.rs +++ b/ext/kv/interface.rs @@ -25,6 +25,8 @@ pub trait DatabaseHandler { #[async_trait(?Send)] pub trait Database { + type QMH: QueueMessageHandle + 'static; + async fn snapshot_read( &self, requests: Vec, @@ -35,6 +37,16 @@ pub trait Database { &self, write: AtomicWrite, ) -> Result, AnyError>; + + async fn dequeue_next_message(&self) -> Result; + + fn close(&self); +} + +#[async_trait(?Send)] +pub trait QueueMessageHandle { + async fn take_payload(&mut self) -> Result, AnyError>; + async fn finish(&self, success: bool) -> Result<(), AnyError>; } /// Options for a snapshot read. @@ -242,7 +254,7 @@ pub struct KvMutation { /// keys specified in `keys_if_undelivered`. pub struct Enqueue { pub payload: Vec, - pub deadline_ms: u64, + pub delay_ms: u64, pub keys_if_undelivered: Vec>, pub backoff_schedule: Option>, } -- cgit v1.2.3