pub mod config;
pub mod connection;
pub mod loop_prevention;
pub mod manager;
pub use config::{BridgeConfig, BridgeDirection, BridgeProtocol, TopicMapping};
pub use connection::{BridgeConnection, ConnectedBroker};
pub use loop_prevention::LoopPrevention;
pub use manager::BridgeManager;
use crate::time::Instant;
#[derive(Debug, Clone, Default)]
pub struct BridgeStats {
pub connected: bool,
pub connection_attempts: u64,
pub messages_sent: u64,
pub messages_received: u64,
pub bytes_sent: u64,
pub bytes_received: u64,
pub last_error: Option<String>,
pub connected_since: Option<Instant>,
pub current_broker: Option<String>,
pub on_primary: bool,
pub failback_attempts: u64,
}
pub type Result<T> = std::result::Result<T, BridgeError>;
#[derive(Debug, thiserror::Error)]
pub enum BridgeError {
#[error("Connection failed: {0}")]
ConnectionFailed(String),
#[error("Configuration error: {0}")]
ConfigurationError(String),
#[error("Topic mapping error: {0}")]
TopicMappingError(String),
#[error("Message loop detected for topic: {0}")]
LoopDetected(String),
#[error("Client error: {0}")]
ClientError(#[from] crate::error::MqttError),
}