当前位置:  开发笔记 > 程序员 > 正文

gpp在cpp异步服务器中的多个服务

如何解决《gpp在cpp异步服务器中的多个服务》经验,为你挑选了1个好方法。



1> forkbong..:

请参阅此主题和相关 示例.建议是在(在此示例中)添加一个bool参数,实例化两个对象,一个用于,一个用,并且每个对象请求一个不同的RPC.CallDatahello_CallDatahello_ = truehello_ = false

if (hello_) {
  service_->RequestSayHello(...);
} else {
  service_->RequestSayBye(...);
}

对于两种以上类型的调用,您可以使用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(tag)->Proceed();
...

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有