DiagramDesigner/diagramCommunication/include/uiCommunicationBus.h

49 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// uiCommunicationBus.h
#pragma once
#include "export.hpp"
#include <QObject>
#include <QMap>
#include <QVariant>
#include <QMutex>
// UI通信总线
class DIAGRAM_DESIGNER_PUBLIC UiCommunicationBus : public QObject
{
Q_OBJECT
public:
static UiCommunicationBus* instance();
// 发送HTTP请求
void sendHttpRequest(const QString& endpoint, const QVariant& data = QVariant());
// 发送HTTP请求无回复
void sendHttpRequestNoReply(const QString& endpoint, const QVariant& data = QVariant());
// 向UI发送数据
void sendToUi(const QString& uiId, const QString& action, const QVariant& data);
// 广播到所有UI
void broadcastToUis(const QString& action, const QVariant& data);
// 注册/注销UI
void registerUi(const QString& uiId, QObject* uiObject);
void unregisterUi(const QString& uiId);
signals:
void httpDataProcessed(const QString& type,const QVariant& data); //发送分拣过的数据给外部
void websocketDataProcessed(const QVariant& data);
private:
UiCommunicationBus(QObject* parent = nullptr);
// 处理HTTP响应
void onHttpDataReceived(const QByteArray& data);
// 处理WebSocket数据
void onWebSocketDataReceived(const QByteArray& data);
// UI注册表
QMap<QString, QObject*> m_uiObjects;
mutable QMutex m_mutex;
};