clientthread.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifndef CLIENTTHREAD_H
  2. #define CLIENTTHREAD_H
  3. #include <QThread>
  4. #include <QTcpSocket>
  5. #include <QDateTime>
  6. #include <QList>
  7. class PData
  8. {
  9. public:
  10. explicit PData(quint16 chk=0, QByteArray data=nullptr){
  11. Data = data;
  12. Chk = chk;
  13. }
  14. quint16 check(){
  15. return Chk;
  16. }
  17. QByteArray data(){
  18. return Data;
  19. }
  20. private:
  21. QByteArray Data;
  22. quint16 Chk;
  23. };
  24. class AppPData
  25. {
  26. public:
  27. explicit AppPData(QString id="", QString chksum="", int majro=0, int minro=0, uint prolen=0, uint time=0){
  28. PId = id;
  29. Checksum = chksum;
  30. MajroVersion = majro;
  31. MinroVersion = minro;
  32. ProgramLength = prolen;
  33. UpTime = time;
  34. DataList.clear();
  35. }
  36. void SetPId(QString id){
  37. PId = id;
  38. }
  39. void ClearData(){
  40. DataList.clear();
  41. }
  42. void AppendData(PData data){
  43. DataList.append(data);
  44. }
  45. QString AppId(){
  46. return PId;
  47. }
  48. QString chksum(){
  49. return Checksum;
  50. }
  51. int Size(){
  52. return DataList.length();
  53. }
  54. int majroVersion(){
  55. return MajroVersion;
  56. }
  57. int minroVersion(){
  58. return MinroVersion;
  59. }
  60. uint programLength(){
  61. return ProgramLength;
  62. }
  63. uint upTime(){
  64. return UpTime;
  65. }
  66. PData DataAt(int idx){
  67. if(idx<DataList.length())
  68. return DataList.at(idx);
  69. return PData(0,nullptr);
  70. }
  71. private:
  72. QString PId;
  73. int MajroVersion, MinroVersion;
  74. uint ProgramLength, UpTime;
  75. QString Checksum;
  76. QList<PData> DataList;
  77. };
  78. class ClientThread : public QThread
  79. {
  80. Q_OBJECT
  81. public:
  82. explicit ClientThread(qintptr socketDescriptor, QObject *parent = nullptr);
  83. ~ClientThread() override;
  84. void run() override;
  85. void close_self(QTcpSocket *so);
  86. bool readData(QTcpSocket *so);
  87. bool chkversion(QByteArray body, QTcpSocket *so);
  88. bool getversion(QByteArray body, QTcpSocket *so);
  89. void setAppPDataList(QList<AppPData> list);
  90. signals:
  91. void commlog(QByteArray data, bool flag);
  92. void datalog(QString log);
  93. public slots:
  94. private:
  95. qintptr SocketDescriptor;
  96. bool keepcomm;
  97. QList<AppPData> AppPDataList;
  98. };
  99. #endif // CLIENTTHREAD_H