DataManagerProxy.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. mi.Topic = topic.toStdString();
  51. foreach (auto client, clients) {
  52. ConsumerInfo ci;
  53. ci.Name = client["Name"].toString().toStdString();
  54. ci.AssemblyName = client["AssemblyName"].toString().toStdString();
  55. //ci.ClassName = "Alarm";
  56. ci.SubscribeName = topic.toStdString();
  57. ci.Settings = client["Settings"].toVariant().toString().toStdString();
  58. dataManageInfo.consumers.push_back(ci);
  59. }
  60. dataManageInfo.modules.push_back(mi);
  61. listDataManageInfo.push_back(dataManageInfo);
  62. }
  63. }
  64. #if 0
  65. ModuleInfo mi;
  66. mi.Name = "TDengineSubscriber";
  67. mi.AssemblyName = "plugins/TDengineSubscriber.dll";
  68. mi.ClassName = "TDengineSubscriber";
  69. mi.Code = "topic:xxx";
  70. ConsumerInfo ci;
  71. ci.Name = "Alarm";
  72. ci.AssemblyName = "plugins/Alarm.dll";
  73. ci.ClassName = "Alarm";
  74. ci.SubscribeName = "TDengineSubscriber";
  75. DataManagerInfo dataManageInfo;
  76. dataManageInfo.consumers.push_back(ci);
  77. dataManageInfo.modules.push_back(mi);
  78. listDataManageInfo.push_back(dataManageInfo);
  79. #endif
  80. //return di;
  81. return listDataManageInfo;
  82. }