73 lines
2.4 KiB
C
73 lines
2.4 KiB
C
// ChannelConfig.h
|
|
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QUrl>
|
|
#include <QVariantMap>
|
|
#include <QDateTime>
|
|
#include "export.hpp"
|
|
|
|
// 简化配置结构
|
|
struct DIAGRAM_DESIGNER_PUBLIC ChannelConfig {
|
|
// 通用配置
|
|
QString id; // 通道ID: "http_channel" 或 "websocket_channel"
|
|
QString name; // 通道名称
|
|
QString endpoint; // 连接地址
|
|
int timeout = 30000; // 超时时间(ms)
|
|
bool enabled = true; // 是否启用
|
|
bool autoConnect = false; // 是否自动连接
|
|
QVariantMap headers; //头
|
|
|
|
// 认证
|
|
QString username;
|
|
QString password;
|
|
|
|
// 状态
|
|
bool connected = false;
|
|
QDateTime lastConnectTime;
|
|
int errorCount = 0;
|
|
|
|
// WebSocket特有
|
|
int heartbeatInterval = 30000; // 心跳间隔
|
|
|
|
// 转换为Map
|
|
QVariantMap toMap() const {
|
|
return {
|
|
{"id", id},
|
|
{"name", name},
|
|
{"endpoint", endpoint},
|
|
{"timeout", timeout},
|
|
{"enabled", enabled},
|
|
{"autoConnect", autoConnect},
|
|
{"username", username},
|
|
{"password", password},
|
|
{"connected", connected},
|
|
{"lastConnectTime", lastConnectTime.toString(Qt::ISODate)},
|
|
{"errorCount", errorCount},
|
|
{"headers", headers},
|
|
{"heartbeatInterval", heartbeatInterval}
|
|
};
|
|
}
|
|
|
|
// 从Map创建
|
|
static ChannelConfig fromMap(const QVariantMap& map) {
|
|
ChannelConfig config;
|
|
config.id = map.value("id").toString();
|
|
config.name = map.value("name").toString();
|
|
config.endpoint = map.value("endpoint").toString();
|
|
config.timeout = map.value("timeout", 30000).toInt();
|
|
config.enabled = map.value("enabled", true).toBool();
|
|
config.autoConnect = map.value("autoConnect", false).toBool();
|
|
config.username = map.value("username").toString();
|
|
config.password = map.value("password").toString();
|
|
config.connected = map.value("connected", false).toBool();
|
|
config.lastConnectTime = QDateTime::fromString(
|
|
map.value("lastConnectTime").toString(), Qt::ISODate);
|
|
config.errorCount = map.value("errorCount", 0).toInt();
|
|
config.headers = map.value("headers").toMap();
|
|
config.heartbeatInterval = map.value("heartbeatInterval", 30000).toInt();
|
|
return config;
|
|
}
|
|
};
|