我正在尝试为c++中的actor实现消息处理。我正在尝试在c++中实现以下scala中的代码
def receive = {
case Message1 =>{/* logic code */}
case Message2 =>{/* logic code */}
}
因此,该想法是为各种消息类型创建一组处理函数,并创建一个分派(dispatch)方法以将消息路由到其适当的消息处理程序。所有消息将扩展基本消息类型。
解决此问题的最佳方法是:
我将不胜感激任何建议或阅读链接,它们可以使我更接近解决此问题的方法。
最佳答案
既然您已经提到了CAF:为什么要实现自己的actor库而不是使用CAF?如果您正在编写lib作为练习,我建议您开始阅读libcaf_core/caf/match_case.hpp
,libcaf_core/caf/on.hpp
和libcaf_core/caf/detail/try_match.hpp
。这是CAF模式匹配工具的“核心”。警告,您将查看许多元编程代码。该代码应由C++专家阅读。绝对不是学习技术的好地方。
我可以概述发生的事情。
match_case
中的detail::behavior_impl
对象列表message_handler
和behavior
存储指向behavior_impl
的指针others >> ...
)on(...) >> ...
表示法message
对象中存储的元组匹配match_case
对象列表即可我们在模式匹配实现中付出了很多努力,以在用户端获得高级且干净的界面。不过,这并不容易。因此,如果您是在做练习,请警告您需要大量的元编程经验来理解代码。
如果您不做练习,我会很感兴趣,为什么您认为CAF不能涵盖您的用例,也许我们可以说服您参与其开发,而不是从头开始进行其他开发。 ;)
关于c++ - C++ Actor系统的消息接收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29614104/