Creat event mod
This commit is contained in:
@@ -18,7 +18,7 @@ impl std::fmt::Display for BandwidthStatusMessage {
|
||||
}
|
||||
}
|
||||
|
||||
impl nym_task::manager::TaskStatusEvent for BandwidthStatusMessage {
|
||||
impl nym_task::TaskStatusEvent for BandwidthStatusMessage {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ impl std::fmt::Display for ClientCoreStatusMessage {
|
||||
}
|
||||
}
|
||||
|
||||
impl nym_task::manager::TaskStatusEvent for ClientCoreStatusMessage {
|
||||
impl nym_task::TaskStatusEvent for ClientCoreStatusMessage {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ impl From<ConnectionError> for Socks5ClientCoreError {
|
||||
}
|
||||
}
|
||||
|
||||
impl nym_task::manager::TaskStatusEvent for Socks5ClientCoreError {
|
||||
impl nym_task::TaskStatusEvent for Socks5ClientCoreError {
|
||||
fn as_any(&self) -> &dyn std::any::Any {
|
||||
self
|
||||
}
|
||||
|
||||
@@ -23,8 +23,7 @@ use nym_client_core::init::types::GatewaySetup;
|
||||
use nym_credential_storage::storage::Storage as CredentialStorage;
|
||||
use nym_sphinx::addressing::clients::Recipient;
|
||||
use nym_sphinx::params::PacketType;
|
||||
use nym_task::manager::TaskStatus;
|
||||
use nym_task::{TaskClient, TaskHandle};
|
||||
use nym_task::{TaskClient, TaskHandle, TaskStatus};
|
||||
|
||||
use anyhow::anyhow;
|
||||
use nym_validator_client::UserAgent;
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// Copyright 2024 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use std::{any::Any, fmt};
|
||||
|
||||
pub type SentStatus = Box<dyn TaskStatusEvent>;
|
||||
pub type StatusSender = futures::channel::mpsc::Sender<SentStatus>;
|
||||
pub type StatusReceiver = futures::channel::mpsc::Receiver<SentStatus>;
|
||||
|
||||
pub trait TaskStatusEvent: Send + Sync + Any + fmt::Display {
|
||||
fn as_any(&self) -> &dyn Any;
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub enum TaskStatus {
|
||||
Ready,
|
||||
ReadyWithGateway(String),
|
||||
}
|
||||
|
||||
impl fmt::Display for TaskStatus {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
TaskStatus::Ready => write!(f, "Ready"),
|
||||
TaskStatus::ReadyWithGateway(gateway) => {
|
||||
write!(f, "Ready and connected to gateway: {gateway}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TaskStatusEvent for TaskStatus {
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,14 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
pub mod connections;
|
||||
pub mod event;
|
||||
pub mod manager;
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
pub mod signal;
|
||||
pub mod spawn;
|
||||
|
||||
pub use manager::{StatusReceiver, StatusSender, TaskClient, TaskHandle, TaskManager};
|
||||
pub use event::{StatusReceiver, StatusSender, TaskStatus, TaskStatusEvent};
|
||||
pub use manager::{TaskClient, TaskHandle, TaskManager};
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
pub use signal::wait_for_signal_and_error;
|
||||
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
// Copyright 2022 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use std::{
|
||||
error::Error,
|
||||
sync::atomic::{AtomicBool, Ordering},
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use futures::{future::pending, FutureExt, SinkExt, StreamExt};
|
||||
use log::{log, Level};
|
||||
use std::any::Any;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::{error::Error, time::Duration};
|
||||
use tokio::sync::{
|
||||
mpsc,
|
||||
watch::{self, error::SendError},
|
||||
};
|
||||
|
||||
use crate::event::{SentStatus, StatusReceiver, StatusSender, TaskStatus};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::{sleep, timeout};
|
||||
|
||||
@@ -23,10 +28,6 @@ pub(crate) type SentError = Box<dyn Error + Send + Sync>;
|
||||
type ErrorSender = mpsc::UnboundedSender<SentError>;
|
||||
type ErrorReceiver = mpsc::UnboundedReceiver<SentError>;
|
||||
|
||||
pub type SentStatus = Box<dyn TaskStatusEvent>;
|
||||
pub type StatusSender = futures::channel::mpsc::Sender<SentStatus>;
|
||||
pub type StatusReceiver = futures::channel::mpsc::Receiver<SentStatus>;
|
||||
|
||||
fn try_recover_name(name: &Option<String>) -> String {
|
||||
if let Some(name) = name {
|
||||
name.clone()
|
||||
@@ -41,33 +42,6 @@ enum TaskError {
|
||||
UnexpectedHalt { shutdown_name: Option<String> },
|
||||
}
|
||||
|
||||
pub trait TaskStatusEvent: Send + Sync + Any + std::fmt::Display {
|
||||
fn as_any(&self) -> &dyn Any;
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub enum TaskStatus {
|
||||
Ready,
|
||||
ReadyWithGateway(String),
|
||||
}
|
||||
|
||||
impl std::fmt::Display for TaskStatus {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
TaskStatus::Ready => write!(f, "Ready"),
|
||||
TaskStatus::ReadyWithGateway(gateway) => {
|
||||
write!(f, "Ready and connected to gateway: {gateway}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TaskStatusEvent for TaskStatus {
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// Listens to status and error messages from tasks, as well as notifying them to gracefully
|
||||
/// shutdown. Keeps track of if task stop unexpectedly, such as in a panic.
|
||||
#[derive(Debug)]
|
||||
|
||||
@@ -30,8 +30,7 @@ use nym_client_core::init::setup_gateway;
|
||||
use nym_client_core::init::types::{GatewaySelectionSpecification, GatewaySetup};
|
||||
use nym_credentials_interface::TicketType;
|
||||
use nym_socks5_client_core::config::Socks5;
|
||||
use nym_task::manager::TaskStatus;
|
||||
use nym_task::{TaskClient, TaskHandle};
|
||||
use nym_task::{TaskClient, TaskHandle, TaskStatus};
|
||||
use nym_topology::provider_trait::TopologyProvider;
|
||||
use nym_validator_client::{nyxd, QueryHttpRpcNyxdClient, UserAgent};
|
||||
use rand::rngs::OsRng;
|
||||
|
||||
Reference in New Issue
Block a user