endpointhash 1.0

This commit is contained in:
flower_linux
2026-04-16 10:39:56 +08:00
parent 11bd86063d
commit 11bc015444
17 changed files with 885 additions and 38 deletions

View File

@@ -1,6 +1,8 @@
#include "api/ipc_dbus/CommandDispatcher.h"
#include "message_bus/pipeline/DynamicRuleRegistry.h"
#include "message_bus/pipeline/rules/DynamicRuleRegistry.h"
#include "message_bus/pipeline/discovery/DiscoveryPool.h"
#include "message_bus/pipeline/mapping/MappingRegistry.h"
namespace softbus::api::ipc
{
@@ -22,6 +24,8 @@ softbus::message_bus::pipeline::RuleScope parseScope(const QJsonObject& params)
DispatchResult CommandDispatcher::dispatch(const QString& action, const QJsonObject& params) const
{
auto& reg = softbus::message_bus::pipeline::DynamicRuleRegistry::instance();
auto& mappingReg = softbus::message_bus::pipeline::MappingRegistry::instance();
auto& discovery = softbus::message_bus::pipeline::DiscoveryPool::instance();
if (action == QStringLiteral("add_filter")) {
softbus::message_bus::pipeline::FilterRule rule;
rule.id = params.value(QStringLiteral("id")).toString();
@@ -57,7 +61,45 @@ DispatchResult CommandDispatcher::dispatch(const QString& action, const QJsonObj
QJsonObject{{QStringLiteral("id"), id}}};
}
if (action == QStringLiteral("list_rules") || action == QStringLiteral("get_status")) {
return {0, QStringLiteral("ok"), reg.status()};
QJsonObject status = reg.status();
status.insert(QStringLiteral("discovery"), discovery.status());
status.insert(QStringLiteral("mapping"), mappingReg.status());
return {0, QStringLiteral("ok"), status};
}
if (action == QStringLiteral("add_mapping_rule")) {
softbus::message_bus::pipeline::MappingRule rule;
const QString keyText = params.value(QStringLiteral("compositeKey")).toString();
rule.compositeKey = keyText.toULongLong();
rule.domPath = params.value(QStringLiteral("domPath")).toString();
rule.scale = params.value(QStringLiteral("scale")).toDouble(1.0);
rule.offset = params.value(QStringLiteral("offset")).toDouble(0.0);
rule.unit = params.value(QStringLiteral("unit")).toString();
if (!mappingReg.upsert(rule)) {
return {4004, QStringLiteral("invalid_mapping_rule"), {}};
}
return {0, QStringLiteral("ok"), QJsonObject{{QStringLiteral("compositeKey"), keyText}}};
}
if (action == QStringLiteral("remove_mapping_rule")) {
const QString keyText = params.value(QStringLiteral("compositeKey")).toString();
const bool ok = mappingReg.remove(keyText.toULongLong());
return {ok ? 0 : 4043, ok ? QStringLiteral("ok") : QStringLiteral("mapping_rule_not_found"),
QJsonObject{{QStringLiteral("compositeKey"), keyText}}};
}
if (action == QStringLiteral("list_mapping_rules")) {
return {0, QStringLiteral("ok"), QJsonObject{{QStringLiteral("items"), mappingReg.list()}}};
}
if (action == QStringLiteral("discovery_start")) {
const auto ttlMs = params.value(QStringLiteral("ttlMs")).toInteger(0);
discovery.startSniffing(ttlMs);
return {0, QStringLiteral("ok"), discovery.status()};
}
if (action == QStringLiteral("discovery_stop")) {
discovery.stopSniffing();
return {0, QStringLiteral("ok"), discovery.status()};
}
if (action == QStringLiteral("discovery_clear")) {
discovery.clear();
return {0, QStringLiteral("ok"), discovery.status()};
}
return {4040, QStringLiteral("unknown_action"), {}};
}