4

抱歉,如果我遗漏了一些非常明显的东西,但我正在尝试了解如何使用Pantheios编写自定义前端后端。(我在 C++ 中使用它,而不是 C。)

我可以遵循初始化函数的目的(我认为),但我不确定其他函数pantheios_be_logEntrypantheios_fe_getProcessIdentitypantheios_fe_isSeverityLogged.

特别是,我对前端和后端之间的关系感到困惑。我如何让他们相互交流?

4

1 回答 1

3

不确定我是否完全理解您不理解的内容,但也许这是问题的一部分。;-) 所以我会尽力而为,你让我知道它是否在附近。

pantheios_fe_getProcessIdentity()在Pantheios初始化时调用一次。您需要返回一个标识该进程的字符串。(实际上,它标识了链接单元;这是由 Pantheios 的创建者 Matthew Wilson 编写的Imperfect C++中定义的术语,表示链接名称的范围,即可执行程序模块或动态库模块。)

pantheios_fe_isSeverityLogged()每当在应用程序代码中执行日志语句时调用。它返回非零值表示该语句应该被处理并发送到输出(通过后端)。如果它返回零,则不进行任何处理。FWIU,这就是Pantheios 这么快的主要原因。

pantheios_be_logEntry()每当要发送日志语句以供输出时调用,何时pantheios_fe_isSeverityLogged()返回非零并且Pantheios 核心已处理该语句(将代码中的所有参数形成单个字符串)。它将语句字符串发送到它应该去的任何地方。例如,be.fprintf 后端使用fprint().

一旦你了解了这些方面,你问题的第二部分就是它变得有趣的地方。当您的前端和后端初始化时,它们会创建 Pantheios 核心为它们保存的一些上下文(例如 C++ 对象),并在每次调用前端/后端 API 函数时将它们返回。当您自定义两者时,您可以让它们通过一些他们都知道但 Pantheios 核心不(也不应该)知道的共享上下文进行通信,除了有一个不透明的句柄 ( void*) 之外。

高温高压

于 2009-10-02T23:03:02.000 回答