跳到主要内容

数据通信

  • 通过 xplugin::xPluginInterface() 接口访问。详细签名见 接口说明。

插件间通信​

  • commandCustomData接口用于控制器侧自定义插件通信,返回 QJsonArray(元素为各插件名与键值 JSON)。
// 自定义控制器插件名称 "ControllerPluginName"

// 读
auto arr = xplugin::xPluginInterface().commandCustomData(
this, "ControllerPluginName", "key");

// 写 key-val
xplugin::xPluginInterface().commandCustomData(
this, "ControllerPluginName", "key", "value");

// 写 JSON 对象 / 数组
xplugin::xPluginInterface().commandCustomData(
this, "ControllerPluginName", QJsonObject{{"k", "v"}});
  • 协议设计可与控制器插件约定 JSON 结构;控制器册参见 客户端交互。

xservice 读写与订阅​

auto &iface = xplugin::xPluginInterface();

QJsonValue v = iface.getXServiceData("project.tasks_pointer");
iface.setXServiceData("some.key", QVariant(1));

iface.connectXServiceData(PLUGIN_NAME, "project.tasks_pointer",
[](const QVariant &data) { /* 变化回调 */ },
""); // *key* 默认为空

iface.disconnectXServiceData(PLUGIN_NAME, "project.tasks_pointer");

commandXServiceData() 异步下发 command,不等待结果。execCommandXServiceData() 同步执行 command 并返回 QJsonValue。

RC 接口请求​

auto &iface = xplugin::xPluginInterface();

iface.rcRequest("module", "command", QJsonValue());

QJsonValue result = iface.rcExecRequest("module", "command", QJsonValue(), true, 1600);
iface.rcRequestFullCommand("full.path.command", QJsonValue());
  • 默认超时:异步 4800 ms,同步 1600 ms。

网络状态​

方式一:Qt 信号

connect(&xplugin::xPluginInterface(), &xplugin::InterfaceManager::sigNetworkConnect,
this, &MyClass::onConnected);

方式二:回调注册

auto &iface = xplugin::xPluginInterface();
QString id = iface.connectNetworkStatus(true, PLUGIN_NAME, this, [](){});
iface.disconnectNetworkStatus(true, PLUGIN_NAME, id);

方式三:事件总线 — NetworkConnected / NetworkDisconnected,见 事件系统。

相关阅读​