因此,我认为直接调用forward_current_message是可以的吗?
不,forward_current_message
不是CAF中公共API的一部分(因此未在Doxygen中列出).这意味着成员函数可以被重命名,删除,或制成protected
/ private
随时.
将消息转发给类型化actor的最佳实践是delegate
.这是一个新功能(0.14.1引入),遗憾的是手册中还没有提到.目前可用的最佳"文档"是它在类型化演员的单元测试中的使用.
简短版本是:delegate
替代send
它转发请求的责任.在类型化的actor中,您可以返回delegated
而不是T
从消息处理程序返回,以指示其他actor将使用a响应T
原始发件人.
在您的情况下,类A
将实现如下:
class A : public a_type::base { protected: behavior_type make_behavior() override { return { [this](int value) { aout(this) << "Number of tasks: " << value << endl; auto forwardDestination = spawn(bBehavior); this->quit(); return delegate(forwardDestination, value); } }; } };