/
srv
/
osrm
/
osrm-backend
/
third_party
/
flatbuffers
/
grpc
/
samples
/
greeter
/
/srv/osrm/osrm-backend/third_party/flatbuffers/grpc/samples/greeter
mkdir
upload
Name
Size
Mode
Actions
client.cpp
2529
0644
edit
dl
rm
greeter.fbs
274
0644
edit
dl
rm
server.cpp
2805
0644
edit
dl
rm
Edit:
/srv/osrm/osrm-backend/third_party/flatbuffers/grpc/samples/greeter/client.cpp
(2529B)
#include "greeter.grpc.fb.h" #include "greeter_generated.h" #include <grpc++/grpc++.h> #include <iostream> #include <memory> #include <string> class GreeterClient { public: GreeterClient(std::shared_ptr<grpc::Channel> channel) : stub_(Greeter::NewStub(channel)) {} std::string SayHello(const std::string &name) { flatbuffers::grpc::MessageBuilder mb; auto name_offset = mb.CreateString(name); auto request_offset = CreateHelloRequest(mb, name_offset); mb.Finish(request_offset); auto request_msg = mb.ReleaseMessage<HelloRequest>(); flatbuffers::grpc::Message<HelloReply> response_msg; grpc::ClientContext context; auto status = stub_->SayHello(&context, request_msg, &response_msg); if (status.ok()) { const HelloReply *response = response_msg.GetRoot(); return response->message()->str(); } else { std::cerr << status.error_code() << ": " << status.error_message() << std::endl; return "RPC failed"; } } void SayManyHellos(const std::string &name, int num_greetings, std::function<void(const std::string &)> callback) { flatbuffers::grpc::MessageBuilder mb; auto name_offset = mb.CreateString(name); auto request_offset = CreateManyHellosRequest(mb, name_offset, num_greetings); mb.Finish(request_offset); auto request_msg = mb.ReleaseMessage<ManyHellosRequest>(); flatbuffers::grpc::Message<HelloReply> response_msg; grpc::ClientContext context; auto stream = stub_->SayManyHellos(&context, request_msg); while (stream->Read(&response_msg)) { const HelloReply *response = response_msg.GetRoot(); callback(response->message()->str()); } auto status = stream->Finish(); if (!status.ok()) { std::cerr << status.error_code() << ": " << status.error_message() << std::endl; callback("RPC failed"); } } private: std::unique_ptr<Greeter::Stub> stub_; }; int main(int argc, char **argv) { std::string server_address("localhost:50051"); auto channel = grpc::CreateChannel(server_address, grpc::InsecureChannelCredentials()); GreeterClient greeter(channel); std::string name("world"); std::string message = greeter.SayHello(name); std::cerr << "Greeter received: " << message << std::endl; int num_greetings = 10; greeter.SayManyHellos(name, num_greetings, [](const std::string &message) { std::cerr << "Greeter received: " << message << std::endl; }); return 0; }
Save
cmd:
run