123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef RDBCONN_H
- #define RDBCONN_H
- #include <sstream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <errno.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <netinet/in.h>
- #include <netinet/tcp.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <sys/socket.h>
- #include <sys/types.h>
- #include "RDBHandler.hh"
- #include <thread>
- #include <vector>
- #include <mutex>
- #include <condition_variable>
- namespace iv {
- struct rdbitem
- {
- double mfMsgTime; //when recv this meesage,second
- double simTime;
- unsigned int simFrame;
- uint16_t pkgid;
- std::shared_ptr<char> 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<iv::rdbitem> 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
|