summaryrefslogtreecommitdiff
path: root/ext/kv/interface.rs
diff options
context:
space:
mode:
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>>,
}