DataSubscribe.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "DataSubscribe.h"
  2. #include <QVariant>
  3. #include "LibraryLoader.h"
  4. #include "Publisher.h"
  5. DataSubscribe::DataSubscribe()
  6. {
  7. }
  8. void DataSubscribe::run()
  9. {
  10. while(!isInterruptionRequested()){
  11. if(shares.sem->tryAcquire(1, 500)){
  12. shares.mutex->lock();
  13. shares.commandList.dequeue();
  14. shares.mutex->unlock();
  15. dataConsumer->OnData(QString(dataName.c_str()), "time", QVariant());
  16. }
  17. }
  18. }
  19. void DataSubscribe::Setup(ModuleInfo &mi)
  20. {
  21. std::string assemblyName = mi.AssemblyName;
  22. std::string className = mi.ClassName;
  23. BaseModule* pModule = nullptr;// = (BaseModule)Assembly.LoadFile(Path.GetFullPath(@".\" + assemblyName)).CreateInstance(className);
  24. pModule = LibraryLoader::load<BaseModule>(assemblyName);
  25. if( pModule == nullptr )
  26. {
  27. // qCritical() << LOG_HEADER << " load " << szPlugin.c_str() << " failed.";
  28. return;
  29. }
  30. if( pModule == nullptr )
  31. {
  32. qCritical() << __FILE__ << __LINE__ << " " << assemblyName.c_str() << " load failed.";
  33. return;
  34. }
  35. {
  36. Publisher* runable = dynamic_cast<Publisher*>(pModule);
  37. runable->shares(shares);
  38. runable->Run();
  39. }
  40. }
  41. std::string DataSubscribe::getTypeList()
  42. {
  43. return "DataStorage::RunnableModule";
  44. }
  45. void DataSubscribe::setLoader(QLibrary *)
  46. {
  47. }
  48. void DataSubscribe::regConsumer(DataConsumer *dc)
  49. {
  50. dataConsumer = dc;
  51. }
  52. void DataSubscribe::Run()
  53. {
  54. start();
  55. }