qudag_cli/
lib.rs

1#![deny(unsafe_code)]
2#![allow(missing_docs)]
3
4//! Command-line interface for the QuDAG protocol with performance optimizations.
5//!
6//! This module provides a comprehensive CLI for managing QuDAG nodes,
7//! including node operations, peer management, network diagnostics,
8//! and DAG visualization capabilities. Features include:
9//!
10//! - Fast startup with lazy initialization
11//! - Async operation optimization with timeouts and retries
12//! - Resource management and memory tracking
13//! - Performance monitoring and reporting
14//! - Error propagation optimization
15
16pub mod async_optimizations;
17pub mod commands;
18pub mod config;
19pub mod node_manager;
20pub mod output;
21pub mod peer_manager;
22pub mod performance;
23pub mod rpc;
24pub mod startup;
25
26#[cfg(test)]
27pub mod mocks;
28
29pub use commands::{
30    check_node_connectivity, execute_status_command, show_status, start_node, stop_node,
31    CommandRouter, DagStatistics, MemoryUsage, NetworkStatistics, NodeState, NodeStatusResponse,
32    OutputFormat, PeerStatusInfo, StatusArgs,
33};
34
35pub use config::{NodeConfig, NodeConfigManager};
36
37/// CLI-specific error types
38#[derive(Debug, thiserror::Error)]
39pub enum CliError {
40    #[error("Node error: {0}")]
41    Node(String),
42    #[error("Network error: {0}")]
43    Network(String),
44    #[error("Visualization error: {0}")]
45    Visualization(String),
46    #[error("Configuration error: {0}")]
47    Config(String),
48    #[error("Command error: {0}")]
49    Command(String),
50    #[error("RPC error: {0}")]
51    Rpc(String),
52    #[error("Status error: {0}")]
53    Status(String),
54    #[error("Connection error: {0}")]
55    Connection(String),
56    #[error("Timeout error: {0}")]
57    Timeout(String),
58    #[error("Validation error: {0}")]
59    Validation(String),
60}