package com.ruoyi.common.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * MQTT连接属性配置类
 *
 * <p>用于从application.yml或application.properties文件中加载MQTT相关的配置项，
 * 支持自定义MQTT服务器地址、客户端ID、用户名密码等各种连接参数。</p>
 *
 * @author andy
 * @version 1.0.0
 * @since 2025-06-17
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "mqtt")
public class MqttProperties {

    /**
     * 服务器地址URI，例如: tcp://localhost:1883
     */
    private String serverUri;

    /**
     * 客户端ID
     */
    private String clientId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 超时时间，单位秒
     */
    private int timeout = 30;

    /**
     * 保活时间，单位秒
     */
    private int keepAlive = 60;

    /**
     * 是否自动重连
     */
    private boolean autoReconnect = true;

    /**
     * 是否清除会话
     */
    private boolean cleanSession = true;

    /**
     * 默认QoS级别
     */
    private int defaultQos = 1;

    /**
     * 默认主题
     */
    private String defaultTopic = "test/topic";

    /**
     * 消息发布/订阅超时，单位秒
     */
    private int commandTimeout = 10;
}
