generatorcore.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include "generatorcore.h"
  2. #include "../AGBoxDog/boxshm.h"
  3. #include "../agVideoProcess/boxdeviceshm.h"
  4. AGBoxShm *agBoxShm;
  5. BoxDeviceShm *boxDeviceShm;
  6. void GeneratorCore::shm_init(){
  7. QSqlQuery qry;
  8. QString sql = QString("select mqtt_ip,mqtt_port,user_name,pass_word from yt_t_mqtt where item_name = 'data-agbox'");
  9. qry = db.exec(sql);
  10. while (qry.next()) {
  11. ip = qry.value(0).toString();
  12. port = qry.value(1).toString();
  13. username = qry.value(2).toString();
  14. password = qry.value(3).toString();
  15. }
  16. qry.clear();
  17. sql.clear();
  18. }
  19. bool GeneratorCore::shm_load(){
  20. key_t key;
  21. int shmid;
  22. if((key=ftok(SHM_PATH,static_cast<int>(SHM_PORT)))==-1){
  23. return false;
  24. }
  25. if((shmid=shmget(key,sizeof(AGBoxShm),IPC_CREAT|0666))==-1){
  26. return false;
  27. }
  28. agBoxShm = static_cast<AGBoxShm *>(shmat(shmid,nullptr,0));
  29. if((key=ftok(VIDEO_PATH,static_cast<int>(VIDEO_PORT)))==-1){
  30. return false;
  31. }
  32. if((shmid=shmget(key,sizeof(BoxDeviceShm),IPC_CREAT|0666))==-1){
  33. return false;
  34. }
  35. boxDeviceShm = static_cast<BoxDeviceShm *>(shmat(shmid,nullptr,0));
  36. shm_init();
  37. return true;
  38. }
  39. GeneratorCore::GeneratorCore(QObject *parent) : QObject(parent)
  40. {
  41. logthread = new LogThread(this);
  42. logthread->start();
  43. db = QSqlDatabase::addDatabase("QSQLITE","conf_db");
  44. db.setDatabaseName(QString("/opt/db/yt_conf.db"));
  45. if(!db.open()){
  46. logthread->appendData(QString("[aggenerator] open yt_conf.db failed"));
  47. }
  48. if(shm_load()){
  49. logthread->appendData(QString("[aggenerator] shm load success"));
  50. }
  51. mqttIdx = 1;
  52. m_client = new QMQTT::Client(QHostAddress(ip),static_cast<quint16>(port.toInt()),this);
  53. connect(m_client,&QMQTT::Client::connected,this,&GeneratorCore::onConnected);
  54. m_client->setUsername(username);
  55. m_client->setPassword(password.toLatin1());
  56. m_client->setCleanSession(true);
  57. m_client->connectToHost();
  58. dbthread = new DatabaseThread(this);
  59. dbthread->start();
  60. httpthread = new HttpThread(this);
  61. connect(httpthread,&HttpThread::dataLog,this,&GeneratorCore::dataLog);
  62. connect(httpthread,&HttpThread::mqttData,this,&GeneratorCore::mqtt_data);
  63. connect(httpthread,&HttpThread::appendSql,this,&GeneratorCore::append_sql);
  64. }
  65. GeneratorCore::~GeneratorCore()
  66. {
  67. logthread->stop();
  68. dbthread->stop();
  69. httpthread->stop();
  70. }
  71. void GeneratorCore::start()
  72. {
  73. }
  74. void GeneratorCore::onConnected()
  75. {
  76. logthread->appendData(QString("mqtt onConnected"));
  77. }
  78. void GeneratorCore::dataLog(QString log)
  79. {
  80. logthread->appendData(log);
  81. }
  82. void GeneratorCore::mqtt_data(QString mqtt_msg)
  83. {
  84. printf("test4444 [%s]\n",mqtt_msg.toUtf8().data());
  85. if((m_client->connectionState()==QMQTT::STATE_INIT)||(m_client->connectionState()==QMQTT::STATE_DISCONNECTED)){
  86. m_client->connectToHost();
  87. }
  88. m_client->publish(QMQTT::Message(mqttIdx++,"data-collector",mqtt_msg.toUtf8()));
  89. if(mqttIdx > 9999){
  90. mqttIdx = 1;
  91. }
  92. }
  93. void GeneratorCore::append_sql(QString sql)
  94. {
  95. dbthread->appendSql(sql);
  96. }