streamServer.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 "proto/def.grpc.grpc.pb.h"
  9. #include "proto/def.grpc.pb.h"
  10. class CustomServer : public JetStream::StreamServer::Service {
  11. private:
  12. bool openDataStream_ = false;
  13. bool openImageStream_ = false;
  14. bool update_;
  15. public:
  16. CustomServer();
  17. ~CustomServer();
  18. ::grpc::Status OpenImageStream(::grpc::ServerContext *context,
  19. const ::JetStream::RequestCmd *request,
  20. ::grpc::ServerWriter<::JetStream::ResImage> *writer);
  21. virtual ::grpc::Status OpenMeasureDataStream(::grpc::ServerContext *context, const ::JetStream::RequestCmd *request,
  22. ::grpc::ServerWriter<::JetStream::MeasureInfo> *writer);
  23. virtual ::grpc::Status CloseImageStream(::grpc::ServerContext *context, const ::JetStream::RequestCmd *request,
  24. ::JetStream::Response *response);
  25. virtual ::grpc::Status
  26. CloseMeasureDataStream(::grpc::ServerContext *context, const ::JetStream::RequestCmd *request,
  27. ::JetStream::Response *response);
  28. virtual ::grpc::Status GetCloud(::grpc::ServerContext *context, const ::JetStream::RequestCmd *request,
  29. ::JetStream::ResCloud *response);
  30. virtual ::grpc::Status GetImage(::grpc::ServerContext *context, const ::JetStream::RequestCmd *request,
  31. ::JetStream::ResImage *response);
  32. protected:
  33. static ::JetStream::Image cvMat2JetImage(cv::Mat &image);
  34. };
  35. class StreamRpcServer {
  36. private:
  37. grpc::ServerBuilder builder_;
  38. CustomServer service_;
  39. std::unique_ptr<grpc::Server> server_;
  40. std::thread *thread_;
  41. public:
  42. StreamRpcServer();
  43. ~StreamRpcServer();
  44. void Listenning(std::string ip, int port);
  45. protected:
  46. static void WaitThread(void *p);
  47. };
  48. #endif