/**
 * @file Ipc_dbus.h
 * @brief D-Bus 服务接口 - 提供核心服务状态和负载查询
 */

#ifndef IPC_DBUS_H
#define IPC_DBUS_H

#include <QObject>

#include <QString>
// 前向声明
class CoreService;
/**
 * @brief D-Bus 服务适配器 - 暴露核心服务接口
 */
class IpcDBus : public QObject
{
    Q_OBJECT
    Q_CLASSINFO("D-Bus Interface", "com.softbus.Daemon")

public:
    explicit IpcDBus(CoreService* coreService, const QString& role, QObject* parent = nullptr);
    ~IpcDBus();

public slots:
    /**
     * @brief 检查核心服务是否运行
     * @return true 如果核心服务正在运行
     */
    bool isRunning() const;

    QString ping() const;

    QString getVersion() const;

    /**
     * @brief 获取核心服务状态信息
     * @return JSON 格式的状态信息
     */
    QString getStatus() const;

   
    /**
     * @brief 获取守护进程的进程ID
     * @return 进程ID，如果无法获取则返回0
     */
    qint64 getPid() const;

    /**
     * @brief 关闭守护进程
     */
    void shutdown();

    bool reloadConfig();





private slots:
    void updateLoadInfo();

private:
    CoreService* m_coreService{nullptr}; // non-owning
    QString m_role;
};

#endif // IPC_DBUS_H

