46 lines
1.4 KiB
C++
46 lines
1.4 KiB
C++
// 桌面服务适配层
|
||
//
|
||
// 职责:登录认证、桌面列表、连接票据。
|
||
// 当前为本地演示实现(账号非空即通过;Windows 桌面走 Moonlight,
|
||
// Ubuntu/麒麟未分配连接信息)。后续接入管理平台时替换/扩展本类为
|
||
// API 适配器(/api/v1/terminal/session/login|desktops|connect-ticket),
|
||
// 页面与状态机不感知数据来源变化。
|
||
|
||
#ifndef KIOSK_SHELL_DESKTOP_SERVICE_H
|
||
#define KIOSK_SHELL_DESKTOP_SERVICE_H
|
||
|
||
#include <QString>
|
||
#include <functional>
|
||
#include <vector>
|
||
|
||
#include "desktop_session.h"
|
||
|
||
namespace vdi {
|
||
|
||
class DesktopService {
|
||
public:
|
||
using AuthCallback = std::function<void(const AuthResult&)>;
|
||
using DesktopListCallback = std::function<void(std::vector<DesktopInfo>, const QString& error)>;
|
||
using TicketCallback = std::function<void(const ConnectionTicket&, const QString& error)>;
|
||
|
||
// 异步认证(本地实现立即回调;API 版本将走 HTTPS)
|
||
void login(const QString& username, const QString& password, AuthCallback callback);
|
||
|
||
// 拉取当前用户可用的桌面列表
|
||
void listDesktops(DesktopListCallback callback);
|
||
|
||
// 为指定桌面申请连接票据
|
||
void createTicket(const QString& desktopId, TicketCallback callback);
|
||
|
||
void logout();
|
||
|
||
QString currentUser() const { return currentUser_; }
|
||
|
||
private:
|
||
QString currentUser_;
|
||
};
|
||
|
||
} // namespace vdi
|
||
|
||
#endif // KIOSK_SHELL_DESKTOP_SERVICE_H
|