#ifndef RDBCONN_H #define RDBCONN_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include "RDBHandler.hh" #include #include #include #include namespace iv { struct rdbitem { double mfMsgTime; //when recv this meesage,second double simTime; unsigned int simFrame; uint16_t pkgid; std::shared_ptr mpstr_pkgdata; int mnpkgdatasize; }; } class RDBConn { public: RDBConn(const char * strserip,int port); ~RDBConn(); private: char mstrserverip[256]; int mnserverport; std::thread * mpthreadconn; bool mbthreadconn = true; std::mutex mmutexdata; std::mutex mmutexcv; std::condition_variable mcv; std::vector mvectorrdbitem; const unsigned int rdbitembufsize = 1000; private: void threadconn(char * strserip,int nport); private: void parseRDBMessage( RDB_MSG_t* msg); void parseRDBMessageEntry( const double & simTime, const unsigned int & simFrame, RDB_MSG_ENTRY_HDR_t* entryHdr ); public: int ConsumeBuf(iv::rdbitem & xrdbitem,int nwaitms = 0); public: RDB_OBJECT_STATE_t sOwnObjectState; bool mbEgoUpdate = false; double simTime; unsigned int simFrame; }; #endif // RDBCONN_H