rpcServer.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "rpcServer.h"
  2. #include <QThread>
  3. #include <QDebug>
  4. Status rpcServer::Upload(ServerContext* context, ServerReader<ChunkOneLine>* reader, Reply* reply)
  5. {
  6. //定义接收的对象
  7. ChunkOneLine oneLie;
  8. //读
  9. if (!reader->Read(&oneLie))
  10. {
  11. // qDebug() << "Read Error ";
  12. }
  13. cv::Mat mat;
  14. //把接收到的buff用str_decon存储,其实在protobuf这个IDL语言里,bytes对应的就是string
  15. std::string str_decon = oneLie.databuf().buff();
  16. //解码的前必须的data格式,用一个uchar类型的vector
  17. std::vector<uchar>data(str_decon.begin(), str_decon.end());
  18. //直接解码
  19. mat = cv::imdecode(data, 1);
  20. //读
  21. if (!reader->Read(&oneLie))
  22. {
  23. // qDebug() << "Read Error ";
  24. }
  25. qDebug() << "UserName " << oneLie.databuf().name().c_str();
  26. qDebug() << "UserId " << oneLie.databuf().id();
  27. qDebug() << "Image size " << mat.size().width;
  28. cv::imshow("img", mat);
  29. return grpc::Status::OK;
  30. }
  31. Status rpcServer:: ListFeatures(ServerContext* context, const Request* request, ServerWriter< Response>* writer)
  32. {
  33. for (int i = 0; i <= 100; i+=20)
  34. {
  35. Response reMsg;
  36. char tmp[3];
  37. sprintf_s(tmp, "%d", i);
  38. std::string strNum(tmp);
  39. std::string msg = strNum + "%";
  40. reMsg.add_result(msg);
  41. writer->Write(reMsg);
  42. std::cout << "Write" << msg << "\n";
  43. }
  44. return grpc::Status::OK;
  45. }