rdbconn.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef RDBCONN_H
  2. #define RDBCONN_H
  3. #include <sstream>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <errno.h>
  8. #include <unistd.h>
  9. #include <fcntl.h>
  10. #include <netinet/in.h>
  11. #include <netinet/tcp.h>
  12. #include <arpa/inet.h>
  13. #include <netdb.h>
  14. #include <sys/socket.h>
  15. #include <sys/types.h>
  16. #include "RDBHandler.hh"
  17. #include <thread>
  18. #include <vector>
  19. #include <mutex>
  20. #include <condition_variable>
  21. namespace iv {
  22. struct rdbitem
  23. {
  24. double mfMsgTime; //when recv this meesage,second
  25. double simTime;
  26. unsigned int simFrame;
  27. uint16_t pkgid;
  28. std::shared_ptr<char> mpstr_pkgdata;
  29. int mnpkgdatasize;
  30. };
  31. }
  32. class RDBConn
  33. {
  34. public:
  35. RDBConn(const char * strserip,int port);
  36. ~RDBConn();
  37. private:
  38. char mstrserverip[256];
  39. int mnserverport;
  40. std::thread * mpthreadconn;
  41. bool mbthreadconn = true;
  42. std::mutex mmutexdata;
  43. std::mutex mmutexcv;
  44. std::condition_variable mcv;
  45. std::vector<iv::rdbitem> mvectorrdbitem;
  46. const unsigned int rdbitembufsize = 1000;
  47. private:
  48. void threadconn(char * strserip,int nport);
  49. private:
  50. void parseRDBMessage( RDB_MSG_t* msg);
  51. void parseRDBMessageEntry( const double & simTime, const unsigned int & simFrame, RDB_MSG_ENTRY_HDR_t* entryHdr );
  52. public:
  53. int ConsumeBuf(iv::rdbitem & xrdbitem,int nwaitms = 0);
  54. public:
  55. RDB_OBJECT_STATE_t sOwnObjectState;
  56. bool mbEgoUpdate = false;
  57. double simTime;
  58. unsigned int simFrame;
  59. };
  60. #endif // RDBCONN_H