#include "rpcServer.h" #include #include Status rpcServer::Upload(ServerContext* context, ServerReader* reader, Reply* reply) { //定义接收的对象 ChunkOneLine oneLie; //读 if (!reader->Read(&oneLie)) { // qDebug() << "Read Error "; } cv::Mat mat; //把接收到的buff用str_decon存储,其实在protobuf这个IDL语言里,bytes对应的就是string std::string str_decon = oneLie.databuf().buff(); //解码的前必须的data格式,用一个uchar类型的vector std::vectordata(str_decon.begin(), str_decon.end()); //直接解码 mat = cv::imdecode(data, 1); //读 if (!reader->Read(&oneLie)) { // qDebug() << "Read Error "; } qDebug() << "UserName " << oneLie.databuf().name().c_str(); qDebug() << "UserId " << oneLie.databuf().id(); qDebug() << "Image size " << mat.size().width; cv::imshow("img", mat); return grpc::Status::OK; } Status rpcServer:: ListFeatures(ServerContext* context, const Request* request, ServerWriter< Response>* writer) { for (int i = 0; i <= 100; i+=20) { Response reMsg; char tmp[3]; sprintf_s(tmp, "%d", i); std::string strNum(tmp); std::string msg = strNum + "%"; reMsg.add_result(msg); writer->Write(reMsg); std::cout << "Write" << msg << "\n"; } return grpc::Status::OK; }