streamServer.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef __SERVER__GRPC__STREAM__HH_H_
  2. #define __SERVER__GRPC__STREAM__HH_H_
  3. #include "opencv2/opencv.hpp"
  4. #include <pcl/point_cloud.h>
  5. #include <pcl/point_types.h>
  6. #include <thread>
  7. #include <grpcpp/grpcpp.h>
  8. #include "def.grpc.grpc.pb.h"
  9. #include "def.grpc.pb.h"
  10. class CustomServer :public JetStream::StreamServer::Service
  11. {
  12. private:
  13. bool openDataStream_=false;
  14. bool openImageStream_=false;
  15. ::JetStream::ResFrame frame_;
  16. bool update_;
  17. public:
  18. CustomServer();
  19. ~CustomServer();
  20. void update(const ::JetStream::ResFrame& frame);
  21. ::grpc::Status OpenImageStream(::grpc::ServerContext* context,
  22. const ::JetStream::RequestCmd* request, ::grpc::ServerWriter< ::JetStream::ResImage>* writer);
  23. virtual ::grpc::Status OpenMeasureDataStream(::grpc::ServerContext* context, const ::JetStream::RequestCmd* request,
  24. ::grpc::ServerWriter< ::JetStream::MeasureInfo>* writer);
  25. virtual ::grpc::Status Detect(::grpc::ServerContext* context,
  26. const ::JetStream::RequestCmd* request, ::JetStream::ResFrame* response);
  27. virtual ::grpc::Status CloseImageStream(::grpc::ServerContext* context, const ::JetStream::RequestCmd* request,
  28. ::JetStream::Response* response);
  29. virtual ::grpc::Status CloseMeasureDataStream(::grpc::ServerContext* context, const ::JetStream::RequestCmd* request,
  30. ::JetStream::Response* response);
  31. virtual ::grpc::Status GetCloud(::grpc::ServerContext* context, const ::JetStream::RequestCmd* request,
  32. ::JetStream::ResCloud* response);
  33. virtual ::grpc::Status GetImage(::grpc::ServerContext* context, const ::JetStream::RequestCmd* request,
  34. ::JetStream::ResImage* response);
  35. protected:
  36. bool waitForUpdata(float tm);
  37. };
  38. class StreamRpcServer{
  39. private:
  40. grpc::ServerBuilder builder_;
  41. CustomServer service_;
  42. std::unique_ptr<grpc::Server> server_;
  43. std::thread* thread_;
  44. public:
  45. StreamRpcServer();
  46. ~StreamRpcServer();
  47. void Listenning(std::string ip,int port);
  48. void ResetData(const ::JetStream::ResFrame& frame);
  49. static ::JetStream::Image cvMat2JetImage(cv::Mat& image);
  50. static ::JetStream::PointCloud pcl2JetPointCloud(pcl::PointCloud<pcl::PointXYZI>::Ptr pcl);
  51. static ::JetStream::PointCloud cvPointMat2JetPointCloud(cv::Mat& image);
  52. protected:
  53. static void WaitThread(void* p);
  54. };
  55. #endif