summaryrefslogtreecommitdiff
path: root/ext/kv/interface.rs
diff options
context:
space:
mode:
authorIgor Zinkovsky <igor@deno.com>2023-06-13 17:49:57 -0700
committerGitHub <noreply@github.com>2023-06-13 17:49:57 -0700
commitfd9d6baea311d9b227b130749647a86838ba2ccc (patch)
treef0207f62199d5db463fd7f208d45c9bf09c8db14 /ext/kv/interface.rs
parentd451abfc9154e02f39c08d10c185d1618b2ef6d3 (diff)
feat(kv) queue implementation (#19459)
Extend the unstable `Deno.Kv` API to support queues.
Diffstat (limited to 'ext/kv/interface.rs')
-rw-r--r--ext/kv/interface.rs14
1 files changed, 13 insertions, 1 deletions
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<ReadRange>,
@@ -35,6 +37,16 @@ pub trait Database {
&self,
write: AtomicWrite,
) -> Result<Option<CommitResult>, AnyError>;
+
+ async fn dequeue_next_message(&self) -> Result<Self::QMH, AnyError>;
+
+ fn close(&self);
+}
+
+#[async_trait(?Send)]
+pub trait QueueMessageHandle {
+ async fn take_payload(&mut self) -> Result<Vec<u8>, 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<u8>,
- pub deadline_ms: u64,
+ pub delay_ms: u64,
pub keys_if_undelivered: Vec<Vec<u8>>,
pub backoff_schedule: Option<Vec<u32>>,
}