TDAgent.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "TDAgent.h"
  2. #include "TDengine.h"
  3. TDengine objTD;
  4. TDAgent::TDAgent()
  5. : QObject()
  6. {
  7. }
  8. TDAgent::~TDAgent()
  9. {
  10. }
  11. void TDAgent::SubCB(const std::string topic, const std::string msg)
  12. {
  13. emit sigEvent(topic, msg);
  14. }
  15. bool TDAgent::Connect(tagSetup ts)
  16. {
  17. objTD.Setup(ts);
  18. return true;
  19. }
  20. bool TDAgent::Subscribe(std::list<std::string> topics)
  21. {
  22. std::map<std::string,int> mpTopics;
  23. std::list<std::string>::iterator itr;
  24. for (itr = topics.begin(); itr != topics.end(); ++itr)
  25. {
  26. std::string key = *itr;
  27. if( key.find(".") != std::string::npos)
  28. {
  29. key = key.substr(0,key.find("."));
  30. }
  31. mpTopics[key] = 1;
  32. }
  33. std::map<std::string,int>::iterator itrM;
  34. for( itrM = mpTopics.begin(); itrM != mpTopics.end(); ++itrM)
  35. {
  36. objTD.subscribe(itrM->first.c_str(), this);
  37. }
  38. objTD.start();
  39. return true;
  40. }
  41. void TDAgent::Publish(std::string szKey,QVariant v)
  42. {
  43. std::string szContent;
  44. switch( v.type() )
  45. {
  46. case QMetaType::Bool:
  47. szContent = v.toBool() ? "true":"false";
  48. break;
  49. case QMetaType::Int:
  50. szContent = std::to_string(v.toInt());
  51. break;
  52. case QMetaType::UInt:
  53. szContent = std::to_string(v.toUInt());
  54. break;
  55. case QMetaType::LongLong:
  56. szContent = std::to_string(v.toLongLong());
  57. break;
  58. case QMetaType::ULongLong:
  59. szContent = std::to_string(v.toULongLong());
  60. break;
  61. case QMetaType::Double:
  62. szContent = std::to_string(v.toDouble());
  63. break;
  64. case QMetaType::QString:
  65. szContent = v.toString().toLocal8Bit().toStdString();
  66. break;
  67. }
  68. objTD.publish(szKey.c_str(), szContent.c_str());
  69. //objRedis.publish(szKey.c_str(), szContent.c_str()); //把数据发送到对应主题
  70. }