Browse Source

change driver_cloud_grpc_server_thread. add latency response.

yuchuli 3 years ago
parent
commit
ec249828d4

+ 7 - 2
src/driver/driver_cloud_grpc_server_thread/cumsgbuffer.cpp

@@ -109,7 +109,7 @@ int cumsgbuffer::getmsg(std::string strVIN,std::string strqueryMD5, qint64 nlast
 }
 
 void cumsgbuffer::addPicData(std::string strVIN, const char *strdata, const unsigned int ndatasize,
-                             qint64 npictime, int nCamPos)
+                             qint64 npictime, int nCamPos,qint64 nLatency)
 {
     mMutex.lock();
     iv::cumsg * pmsg = 0;
@@ -141,6 +141,7 @@ void cumsgbuffer::addPicData(std::string strVIN, const char *strdata, const unsi
             xPicData.mdatasize = ndatasize;
             xPicData.mnMsgTime = npictime;
             pmsg->mpicbuf[nCamPos].AddData(xPicData);
+            pmsg->mpicbuf[nCamPos].SetLatency(nLatency);
         }
     }
 
@@ -148,7 +149,7 @@ void cumsgbuffer::addPicData(std::string strVIN, const char *strdata, const unsi
 }
 
 int cumsgbuffer::getPicData(std::string strVIN, std::string strqueryMD5,std::shared_ptr<char> &pdata_ptr,
-                            unsigned int &ndatasize,std::string strclientid, int nCamPos,qint64 & nPicTime)
+                            unsigned int &ndatasize,std::string strclientid, int nCamPos,qint64 & nPicTime,qint64 & nPicLatency,int & nFrameRate)
 {
     mMutex.lock();
     iv::cumsg * pmsg = 0;
@@ -202,9 +203,13 @@ int cumsgbuffer::getPicData(std::string strVIN, std::string strqueryMD5,std::sha
         nPicTime = nLastPicTime;
     }
 
+    nPicLatency = pmsg->mpicbuf[nCamPos].GetLatency();
+    nFrameRate = pmsg->mpicbuf[nCamPos].GetFrameRate();
+
     mclienttime.SetClientCamLastTime(strclientid,nCamPos,nLastPicTime);
 
 
     mMutex.unlock();
     return nrtn;
 }
+

+ 5 - 2
src/driver/driver_cloud_grpc_server_thread/cumsgbuffer.h

@@ -59,10 +59,13 @@ public:
                 std::vector<char> * pxdata);
 
 
-    void addPicData(std::string strVIN,const char * strdata,const unsigned int ndatasize,qint64 npictime,int nCamPos);
+    void addPicData(std::string strVIN,const char * strdata,const unsigned int ndatasize,qint64 npictime,int nCamPos,qint64 nLatency);
 
     int getPicData(std::string strVIN,std::string strqueryMD5,std::shared_ptr<char> & pdata_ptr,unsigned int & ndatasize,
-                   std::string strclientid,int nCamPos,qint64 & nPicTime);
+                   std::string strclientid,int nCamPos,qint64 & nPicTime,qint64 & nPicLatency,int & nFrameRate);
+
+
+
 
 
 };

+ 9 - 2
src/driver/driver_cloud_grpc_server_thread/main.cpp

@@ -114,8 +114,10 @@ class UploadServiceImpl final : public iv::UploadThread::Service {
   Status uploadpic(ServerContext* context, const iv::PicUpRequestThread* request,
                   iv::PicUpReplyThread* reply) override {
       gcumsgbuf.addPicData(request->strvin(),request->xdata().data(),
-                           request->xdata().size(),request->npictime(),request->ncampos());
+                           request->xdata().size(),request->npictime(),request->ncampos(),request->nlatency());
       reply->set_nres(0);
+      reply->set_npicsendtime(request->npictime());
+
 
       return Status::OK;
 
@@ -126,13 +128,18 @@ class UploadServiceImpl final : public iv::UploadThread::Service {
         std::shared_ptr<char> pstr_data;
         unsigned int ndatasize;
         qint64 nPicTime;
-        int nres =gcumsgbuf.getPicData(request->strvin(),request->strquerymd5(),pstr_data,ndatasize,request->strclientid(), request->ncampos(),nPicTime);
+        qint64 nPicLatency;
+        int nFrameRate;
+        int nres =gcumsgbuf.getPicData(request->strvin(),request->strquerymd5(),pstr_data,ndatasize,request->strclientid(), request->ncampos(),nPicTime,
+                                       nPicLatency,nFrameRate);
         response->set_nres(nres);
         if(nres == 1)
         {
             response->set_ncampos(request->ncampos());
             response->set_npictime(nPicTime);
             response->set_xdata(pstr_data.get(),ndatasize);
+            response->set_npicframerate(nFrameRate);
+            response->set_npicuplatency(nPicLatency);
         }
 
         return Status::OK;

+ 10 - 0
src/driver/driver_cloud_grpc_server_thread/picbuf.cpp

@@ -123,3 +123,13 @@ int PicBuf::GetFrameRate()
 {
     return mnFrameRate;
 }
+
+void PicBuf::SetLatency(qint64 nlatency)
+{
+    mnUpLatency = nlatency;
+}
+
+qint64 PicBuf::GetLatency()
+{
+    return mnUpLatency;
+}

+ 4 - 1
src/driver/driver_cloud_grpc_server_thread/picbuf.h

@@ -22,7 +22,7 @@ class PicBuf
 private:
     std::vector<iv::PicData> mvectordata_ptr;
     qint64 mBufTime = 500;
-    qint64 mnReceiveBufTime = 50;
+    qint64 mnReceiveBufTime = 0;
     qint64 mLastBufTime = 0;
     QMutex mMutexBuf;
 
@@ -30,12 +30,15 @@ private:
     int mnFrameRate = 0;
     qint64 mnSecondTime = 0;   //Time  Second.
     int mnFrameSecondCount =0; //Last Second Receive message
+    qint64 mnUpLatency = 1000;
 public:
     PicBuf();
     PicBuf(const PicBuf & other);
     void AddData(iv::PicData xPicData);
     int GetData(qint64 & nLastTime,iv::PicData & xPicData);  //0 No Data  1 Have Data
     int GetFrameRate();
+    void SetLatency(qint64 nlatency);
+    qint64 GetLatency();
 };
 
 #endif // PICBUF_H