1use std::{any::Any, fmt};
5
6pub type SentStatus = Box<dyn TaskStatusEvent>;
7pub type StatusSender = futures::channel::mpsc::Sender<SentStatus>;
8pub type StatusReceiver = futures::channel::mpsc::Receiver<SentStatus>;
9
10pub trait TaskStatusEvent: Send + Sync + Any + fmt::Display {
11 fn as_any(&self) -> &dyn Any;
12}
13
14#[derive(Debug, PartialEq, Eq)]
15pub enum TaskStatus {
16 Ready,
17 ReadyWithGateway(String),
18}
19
20impl fmt::Display for TaskStatus {
21 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22 match self {
23 TaskStatus::Ready => write!(f, "Ready"),
24 TaskStatus::ReadyWithGateway(gateway) => {
25 write!(f, "Ready and connected to gateway: {gateway}")
26 }
27 }
28 }
29}
30
31impl TaskStatusEvent for TaskStatus {
32 fn as_any(&self) -> &dyn Any {
33 self
34 }
35}