DataManagerProxy.cpp 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include "DataManagerProxy.h"
  2. #include "RedisClient.h"
  3. #include <QJsonArray>
  4. #include <QJsonObject>
  5. DataManagerProxy::DataManagerProxy() {
  6. }
  7. QList<DataManagerInfo> DataManagerProxy::loadModuleInfos(const Config& config)
  8. {
  9. RedisClient redis;
  10. QList<DataManagerInfo > listDataManageInfo;
  11. QString key = QString("%1:%2").arg(config.AppName, config.AppId);
  12. DeviceInfo di;
  13. redis.Setup(config.redisCfg.host, config.redisCfg.port, config.redisCfg.au);
  14. // QHash<QString, QString> h = redis->hgetall(key);
  15. // for(auto it = h.begin(); it != h.end(); it++)
  16. // {
  17. // qDebug()<< "key" << it.key();
  18. // //qDebug()<< "val" << it.value();
  19. // QJsonArray ja = QJsonDocument::fromJson(it.value().toUtf8()).array();
  20. // // QJsonObject jo = QJsonDocument::fromJson(it.value().toUtf8()).object();
  21. // }
  22. QStringList lst = redis.hvals(key);
  23. foreach (QString str, lst)
  24. {
  25. if( str.isEmpty() )
  26. {
  27. continue;
  28. }
  29. QJsonParseError jsonParseError;
  30. QJsonDocument jsonDocument(QJsonDocument::fromJson(str.toUtf8(), &jsonParseError));
  31. if(QJsonParseError::NoError != jsonParseError.error)
  32. {
  33. //LOGERROR("parse json file {} error", fullpath.toStdString().c_str());
  34. continue;
  35. }
  36. if(!jsonDocument.isArray()){
  37. continue;
  38. }
  39. QJsonArray ja = jsonDocument.array();
  40. foreach (auto var, ja) {
  41. QJsonObject item = var.toObject();
  42. QString topic = item["topic"].toString();
  43. QJsonArray clients = item["Client"].toArray();
  44. DataManagerInfo dataManageInfo;
  45. ModuleInfo mi;
  46. mi.Name = "TDengineSubscriber";
  47. mi.AssemblyName = "plugins/TDengineSubscriber.dll";
  48. // mi.ClassName = "TDengineSubscriber";
  49. mi.Code = topic.toStdString();
  50. foreach (auto client, clients) {
  51. ConsumerInfo ci;
  52. ci.Name = client["Name"].toString().toStdString();
  53. ci.AssemblyName = client["AssemblyName"].toString().toStdString();
  54. //ci.ClassName = "Alarm";
  55. ci.SubscribeName = topic.toStdString();
  56. ci.Settings = client["Settings"].toVariant().toString().toStdString();
  57. dataManageInfo.consumers.push_back(ci);
  58. }
  59. dataManageInfo.modules.push_back(mi);
  60. listDataManageInfo.push_back(dataManageInfo);
  61. }
  62. }
  63. #if 0
  64. ModuleInfo mi;
  65. mi.Name = "TDengineSubscriber";
  66. mi.AssemblyName = "plugins/TDengineSubscriber.dll";
  67. mi.ClassName = "TDengineSubscriber";
  68. mi.Code = "topic:xxx";
  69. ConsumerInfo ci;
  70. ci.Name = "Alarm";
  71. ci.AssemblyName = "plugins/Alarm.dll";
  72. ci.ClassName = "Alarm";
  73. ci.SubscribeName = "TDengineSubscriber";
  74. DataManagerInfo dataManageInfo;
  75. dataManageInfo.consumers.push_back(ci);
  76. dataManageInfo.modules.push_back(mi);
  77. listDataManageInfo.push_back(dataManageInfo);
  78. #endif
  79. //return di;
  80. return listDataManageInfo;
  81. }