about summary refs log tree commit diff
path: root/kittybox-rs/util/src/queue.rs
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2023-07-29 21:59:56 +0300
committerVika <vika@fireburn.ru>2023-07-29 21:59:56 +0300
commit0617663b249f9ca488e5de652108b17d67fbaf45 (patch)
tree11564b6c8fa37bf9203a0a4cc1c4e9cc088cb1a5 /kittybox-rs/util/src/queue.rs
parent26c2b79f6a6380ae3224e9309b9f3352f5717bd7 (diff)
Moved the entire Kittybox tree into the root
Diffstat (limited to 'kittybox-rs/util/src/queue.rs')
-rw-r--r--kittybox-rs/util/src/queue.rs66
1 files changed, 0 insertions, 66 deletions
diff --git a/kittybox-rs/util/src/queue.rs b/kittybox-rs/util/src/queue.rs
deleted file mode 100644
index c880597..0000000
--- a/kittybox-rs/util/src/queue.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-use futures_util::Stream;
-use std::pin::Pin;
-use uuid::Uuid;
-
-#[async_trait::async_trait]
-/// A job queue that can store and return jobs.
-pub trait JobQueue<T: JobItem>: Send + Sync + Sized + Clone + 'static {
-    /// A type of job object that will be returned by the queue.
-    type Job: Job<T, Self>;
-    /// Error type that the queue can produce in its work.
-    type Error: std::error::Error + Send + Sync + Sized;
-
-    /// Get one item from the job queue, if the job queue has pending
-    /// items available.
-    ///
-    /// # Errors
-    ///
-    /// Returns an error if a job queue failed in some way. Having no
-    /// items is not a failure, in which case `Ok(None)` is returned.
-    async fn get_one(&self) -> Result<Option<Self::Job>, Self::Error>;
-    /// Put an item into a job queue, returning its UUID.
-    async fn put(&self, item: &T) -> Result<Uuid, Self::Error>;
-
-    /*
-    /// Check the amount of pending and stuck items in the job queue.
-    async fn len(&self) -> Result<(usize, usize), Self::Error>;
-    /// Returns whether the job queue has some pending items.
-    async fn is_empty(&self) -> Result<bool, Self::Error> {
-        Ok(self.len().await?.0 == 0)
-    }
-    /// Returns whether the job queue has some stuck items that
-    /// require manual cleanup.
-    async fn has_stuck(&self) -> Result<bool, Self::Error> {
-        Ok(self.len().await?.1 > 0)
-    }
-    */
-
-    /// Consume the job queue object and return a stream of unstuck
-    /// items from the job queue.
-    ///
-    /// Note that one item may be returned several times if it is not
-    /// marked as done.
-    async fn into_stream(self) -> Result<Pin<Box<dyn Stream<Item = Result<Self::Job, Self::Error>> + Send>>, Self::Error>;
-}
-
-#[async_trait::async_trait]
-/// A job description yielded from a job queue.
-///
-/// # Implementors
-///
-/// On [`Drop`], the job should be returned to a job queue. If your
-/// job queue tracks attempts, the counter should be incremented by
-/// one.
-///
-/// Figuring how to do this asynchronously from a synchronous trait
-/// is left as an exercise to the reader.
-pub trait Job<T: JobItem, Q: JobQueue<T>>: Send + Sync + Sized {
-    /// Get the object describing the task itself.
-    fn job(&self) -> &T;
-    /// Mark the job as done and remove it from the job queue.
-    async fn done(self) -> Result<(), Q::Error>;
-}
-
-/// An object describing the job itself, returned as part of a
-/// [`Job`].
-pub trait JobItem: Send + Sync + Sized + std::fmt::Debug {}