我知道源代码中有一个示例helloworld程序gRPC.但是,对于这个新手,我不明白如何在服务器中编写多个异步服务.这里的示例讨论了生成类的新实例以处理SayHello服务调用.
SayBye,如何添加新服务,以便我可以从客户端调用它?for*_*ong 10
请参阅此主题和相关
示例.建议是在(在此示例中)添加一个bool参数,实例化两个对象,一个用于,一个用,并且每个对象请求一个不同的RPC.CallDatahello_CallDatahello_ =
truehello_ = false
if (hello_) {
service_->RequestSayHello(...);
} else {
service_->RequestSayBye(...);
}
Run Code Online (Sandbox Code Playgroud)
对于两种以上类型的调用,您可以使用enum而不是a 来实现相同的行为bool.
一种更灵活的方法是CallData为每个RPC 设置一个不同的类.但是,当您从中获取标记时cq_->Next(),您知道它是指向其中一个类的对象的指针,但您不知道它的确切类型.为了解决这个问题,你可以让它们都从具有虚拟Proceed()成员函数的类继承,在每个子类中根据需要实现它,当你得到一个标记时,将它转换为CallData并调用Proceed().
class CallData {
public:
virtual void Proceed() = 0;
};
class HelloCallData final : public CallData {...};
class ByeCallData final : public CallData {...};
...
new HelloCallData(...);
new ByeCallData(...);
cq_->Next(&tag, &ok);
static_cast<CallData*>(tag)->Proceed();
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |