道歉,如果我遗漏了一些非常明显的内容,但我正在尝试了解如何使用front end编写自定义back end和Pantheios。 (我使用的是C ++,而不是C语言。)
我可以遵循初始化函数的目的(我认为),但我不确定其他人:pantheios_be_logEntry
,pantheios_fe_getProcessIdentity
和pantheios_fe_isSeverityLogged
。
特别是,我对前端和后端之间的关系感到困惑。如何让他们互相沟通?
答案 0 :(得分:3)
不确定我完全理解你不理解的东西,但也许这是问题的一部分。 ;-)所以我会尽我所能让你知道它是否接近。
当Pantheios正在初始化时, pantheios_fe_getProcessIdentity()
被调用一次。您需要返回标识进程的字符串。 (实际上,它标识了链接单元; Imperfect C++中定义的术语,由Pantheios的创建者Matthew Wilson编写,这意味着链接名称的范围,即可执行程序模块或动态库模块。)< / p>
只要在应用程序代码中执行日志语句,就会调用
pantheios_fe_isSeverityLogged()
。它返回非零值,表示应该处理语句并将其发送到输出(通过后端)。如果返回零,则不进行处理。 FWIU,这是Pantheios is so fast的主要原因。
pantheios_be_logEntry()
,当pantheios_fe_isSeverityLogged()
返回非零且Pantheios core已处理该语句时(在您的语句中形成所有参数)代码成单个字符串)。它将语句字符串发送到它应该去的任何地方。例如,be.fprintf后端使用fprint()
将其打印到控制台。
一旦你了解了这些方面,问题的第二部分就是它变得有趣的地方。当您的前端和后端被初始化时,他们可以创建Pantheios核心为其保留的一些上下文(例如C ++对象),并在每次调用前端/后端API函数时将其返回。当你自定义两者时,你可以让他们通过他们都知道的一些共享上下文进行通信,但Pantheios核心不会(也不应该)知道,除了有一个不透明的句柄(void*
)之外它
HTH