nym_task/
event.rs

1// Copyright 2024 - Nym Technologies SA <contact@nymtech.net>
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}