diff options
Diffstat (limited to 'ext/kv/interface.rs')
-rw-r--r-- | ext/kv/interface.rs | 14 |
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>>, } |