guardcore.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #include "guardcore.h"
  2. #include "../AGBoxDog/boxshm.h"
  3. #include "../agVideoProcess/boxdeviceshm.h"
  4. AGBoxShm *agBoxShm;
  5. BoxDeviceShm *boxDeviceShm;
  6. void GuardCore::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 GuardCore::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. GuardCore::GuardCore(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("[agguard] open yt_conf.db failed"));
  47. }
  48. if(shm_load()){
  49. logthread->appendData(QString("[agguard] 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,&GuardCore::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,&GuardCore::dataLog);
  62. connect(httpthread,&HttpThread::mqttData,this,&GuardCore::mqtt_data);
  63. connect(httpthread,&HttpThread::appendSql,this,&GuardCore::append_sql);
  64. tcpserver = new TcpServer(this);
  65. connect(tcpserver,&TcpServer::tcp_log,this,&GuardCore::dataLog);
  66. }
  67. GuardCore::~GuardCore()
  68. {
  69. logthread->stop();
  70. dbthread->stop();
  71. httpthread->stop();
  72. }
  73. void GuardCore::start()
  74. {
  75. tcpserver->start();
  76. }
  77. void GuardCore::onConnected()
  78. {
  79. logthread->appendData(QString("mqtt onConnected"));
  80. }
  81. void GuardCore::dataLog(QString log)
  82. {
  83. logthread->appendData(log);
  84. }
  85. void GuardCore::mqtt_data(QString mqtt_msg)
  86. {
  87. printf("test2222 [%s]\n",mqtt_msg.toUtf8().data());
  88. if((m_client->connectionState()==QMQTT::STATE_INIT)||(m_client->connectionState()==QMQTT::STATE_DISCONNECTED)){
  89. m_client->connectToHost();
  90. }
  91. m_client->publish(QMQTT::Message(mqttIdx++,"data-collector",mqtt_msg.toUtf8()));
  92. if(mqttIdx > 9999){
  93. mqttIdx = 1;
  94. }
  95. }
  96. void GuardCore::append_sql(QString sql)
  97. {
  98. dbthread->appendSql(sql);
  99. }