我正在开发一个系统,需要将各种数据从极低级别的库传递到更高级别的C ++应用程序。一般流程是C ++应用程序层向低级库发出请求,然后低级库将与结果异步回复。在C ++应用程序和低级库之间有许多层。例如,应用程序可能有一个名为GetEventDetails的方法,它在低级库之前调用其他几个类。 E.g。
App::GetEventDetails
--ClassA::GetEventDetails
---ClassB::GetEventDetails
-----LowLevelLib::GetEventDetails
..
.. at some point in future...
..
LowLevelLib::ReturnEventDetails
现在,当低级库返回结果时,它不知道要传递结果的Application层。因此,一种方法可能是从App类向低级代码传递指向某种通知处理程序的指针,但它可以在每个级别添加大量额外代码以传递此指针。
我想知道其他人是如何处理类似问题的?
答案 0 :(得分:2)
我建议你看一下Boost.Asio。如果你不打算使用它,至少通过查看它的架构描述,你会很清楚要做什么和处理的典型问题。但我建议你使用它,因为很难以一种非常强大,实用和快速的方式进行异步I / O,Boost.Asio做得很好。
答案 1 :(得分:0)
通知处理程序与任何其他参数相同。把它传递给你的图层。如果您有深度嵌套,则需要检查您的体系结构,并且通常需要从最高层传递许多参数。