mockforge_mqtt/
server.rs

1//! MQTT server implementation using rumqttd
2
3use crate::broker::MqttConfig;
4use rumqttd::Broker;
5
6/// Start an MQTT server using rumqttd
7pub async fn start_mqtt_server(
8    config: MqttConfig,
9) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
10    println!(
11        "📡 Starting MQTT broker on {}:{} (MQTT {:?})",
12        config.host, config.port, config.version
13    );
14
15    // Use default rumqttd configuration
16    // Note: rumqttd supports both MQTT v3.1.1 and v5.0 by default
17    // The version configuration is tracked for future enhancements
18    let broker_config = rumqttd::Config::default();
19
20    // Start the rumqttd broker
21    let mut broker = Broker::new(broker_config);
22
23    println!(
24        "✅ MQTT broker started successfully on {}:{} (MQTT {:?})",
25        config.host, config.port, config.version
26    );
27
28    // Keep the broker running
29    broker.start()?;
30
31    Ok(())
32}