RedisAgent.cpp 1.6 KB

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