use super::broker::Broker;
use crate::error::BroccoliError;
use derive_more::Display;
#[async_trait::async_trait]
pub trait QueueManagement {
async fn get_queue_status(
&self,
queue_name: String,
disambiguator: Option<String>,
) -> Result<QueueStatus, BroccoliError>;
}
#[derive(Debug, Clone, PartialEq, Eq, Display)]
pub enum QueueType {
#[display("failed")]
Failed,
#[display("processing")]
Processing,
#[display("main")]
Main,
#[display("fairness")]
Fairness,
}
pub(crate) trait BrokerWithManagement: Broker + QueueManagement {}
#[derive(Debug, Clone)]
pub struct QueueStatus {
pub name: String,
pub queue_type: QueueType,
pub size: usize,
pub processing: usize,
pub failed: usize,
pub disambiguator_count: Option<usize>,
}