streamServer.h 2.5 KB

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