备份
This commit is contained in:
Binary file not shown.
@@ -135,8 +135,10 @@ bool rpc_finsTcp::writeData(std::vector<cv::Mat>& vec_mat, QByteArray& data){
|
||||
readDataQueue.append(data);
|
||||
}
|
||||
else {
|
||||
if(data.contains("Heart") == false)
|
||||
qDebug() << data;
|
||||
emit writeCallSignal("excuteCli", QJsonArray{ QString(data) }, "finstcp");
|
||||
//qDebug() << data;
|
||||
//
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -147,13 +149,26 @@ bool rpc_finsTcp::initParas(QByteArray& data){
|
||||
subThread = new QThread(this);
|
||||
write_JsonRpcClient = new JsonRpcClientWorker();
|
||||
write_JsonRpcClient->moveToThread(subThread);
|
||||
|
||||
QObject::connect(this, &rpc_finsTcp::initRpcClient,
|
||||
write_JsonRpcClient, &JsonRpcClientWorker::initClient, Qt::QueuedConnection);
|
||||
emit initRpcClient();
|
||||
|
||||
QObject::connect(this, &rpc_finsTcp::writeCallSignal,
|
||||
write_JsonRpcClient, &JsonRpcClientWorker::writeCallSlot,Qt::QueuedConnection);
|
||||
subThread->start();
|
||||
|
||||
emit writeCallSignal("init", QJsonArray{ m_IP,m_port }, "finstcp");
|
||||
while (write_JsonRpcClient->connection == None)
|
||||
QThread::msleep(1);
|
||||
|
||||
if (write_JsonRpcClient->connection == Disconnected) {
|
||||
qDebug() << "JsonRpcClientSubThread connection failed!";
|
||||
return false;
|
||||
}
|
||||
else if (write_JsonRpcClient->connection == Connected) {
|
||||
qDebug() << "JsonRpcClientSubThread connected successfully!";
|
||||
}
|
||||
//qDebug() << "返回结果:" << result;
|
||||
|
||||
//QList<QPair<QString, QJsonObject>> batchList;
|
||||
@@ -180,9 +195,11 @@ JsonRpcClient::JsonRpcClient(const QString& host, quint16 port)
|
||||
socket_.connectToHost(host_, port_);
|
||||
if (!socket_.waitForConnected(3000)) {
|
||||
qWarning() << "[JsonRpcClient] Initial connection failed:" << socket_.errorString();
|
||||
_connectionStatus = Disconnected;
|
||||
}
|
||||
else {
|
||||
qDebug() << "[JsonRpcClient] Connected to" << host_ << ":" << port_;
|
||||
_connectionStatus = Connected;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,14 +20,21 @@
|
||||
#include <QHostAddress>
|
||||
#include <qmap.h>
|
||||
#include <qthread.h>
|
||||
enum connectionStatus {
|
||||
None,
|
||||
Disconnected,
|
||||
Connected
|
||||
};
|
||||
class JsonRpcClient : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
connectionStatus _connectionStatus = None;
|
||||
JsonRpcClient(const QString& host = "127.0.0.1", quint16 port = 9000);
|
||||
void writeCall(const QString& method, const QJsonArray& params = {}, const QString& module = QString());
|
||||
QVariant call(const QString& method, const QJsonArray& params = {}, const QString& module = QString());
|
||||
bool reconnect(); // 主动重连,或 call() 失败时调用
|
||||
private:
|
||||
|
||||
QMutex mutex_; // 确保线程安全
|
||||
QTcpSocket socket_;
|
||||
QString host_;
|
||||
@@ -38,6 +45,7 @@ private:
|
||||
class JsonRpcClientWorker : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
connectionStatus connection;
|
||||
QQueue<QByteArray> readDataQueue;
|
||||
JsonRpcClientWorker() {
|
||||
|
||||
@@ -45,10 +53,11 @@ public:
|
||||
public slots:
|
||||
void initClient() {
|
||||
_JsonRpcClient = new JsonRpcClient();
|
||||
connection = _JsonRpcClient->_connectionStatus;
|
||||
}
|
||||
void writeCallSlot(const QString& method, const QJsonArray& params, const QString& module = QString()) {
|
||||
if (_JsonRpcClient) {
|
||||
qDebug() << params;
|
||||
//qDebug() << params;
|
||||
_JsonRpcClient->call(method, params, module);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user