RedisSubscriber.h 890 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include "RedisSubscriber_global.h"
  3. #include "Publisher.h"
  4. #include "RedisClient.h"
  5. #include <QQueue>
  6. #include <QMutex>
  7. #include <QWaitCondition>
  8. struct Msg{
  9. QString key;
  10. QString val;
  11. };
  12. class REDISSUBSCRIBER_EXPORT RedisSubscriber : public Publisher
  13. {
  14. Q_OBJECT
  15. public:
  16. RedisSubscriber();
  17. // virtual void shares(SharedData * share);
  18. virtual void Run(const ModuleInfo& mi);
  19. virtual void setLoader(QLibrary*);
  20. void enqueue(const QString& key,const QString& val);
  21. protected:
  22. virtual void run();
  23. signals:
  24. void pubData(const QString& ,const QString& ,const QVariant&);
  25. private:
  26. RedisClient* redis;
  27. QMutex mutex;
  28. QWaitCondition cond;
  29. QQueue<Msg> msgQueue;
  30. };
  31. extern "C" {//一定要添加上
  32. REDISSUBSCRIBER_EXPORT Publisher* instance();
  33. REDISSUBSCRIBER_EXPORT void destroy(Publisher*);
  34. }