Не уверен, что я точно понимаю, что вы не понимаете, но, возможно, это часть проблемы. ;-) Так что я буду стараться изо всех сил, и вы дадите мне знать, рядом он или нет.
pantheios_fe_getProcessIdentity()
вызывается один раз, когда Pantheios инициализируется. Вам необходимо вернуть строку, которая идентифицирует процесс. (На самом деле, он идентифицирует блок ссылок; термин, определенный в Imperfect C ++ , написанный создателем Pantheios Мэтью Уилсоном, что означает область имен ссылок, то есть исполняемый программный модуль или модуль динамической библиотеки .)
pantheios_fe_isSeverityLogged()
вызывается всякий раз, когда в коде приложения выполняется инструкция журнала. Он возвращает ненулевое значение, чтобы указать, что оператор должен быть обработан и отправлен на выход (через серверную часть). Если он возвращает ноль, никакой обработки не происходит. Кстати, это главная причина, почему Пантеос так быстр .
pantheios_be_logEntry()
вызывается всякий раз, когда оператор журнала должен быть отправлен для вывода, когда pantheios_fe_isSeverityLogged()
вернул ненулевое значение и ядро Pantheios обработало оператор (сформировав все аргументы в вашем коде в одну строку). Он отправляет строку оператора туда, куда он должен идти. Например, серверная часть be.fprintf выводит ее на консоль, используя fprint()
.
Как только вы поймете эти аспекты, вторая часть вашего вопроса - это то, где это становится интересным. Когда ваш интерфейс и серверная часть инициализируются, они создают некоторый контекст (например, объект C ++), который ядро Pantheios хранит для них, и возвращают их каждый раз, когда он вызывает функцию API интерфейсного интерфейса. Когда вы настраиваете оба, вы можете заставить их общаться через некоторый общий контекст, о котором они оба знают, но о котором ядро Pantheios не знает (и не должно знать), за исключением наличия непрозрачного дескриптора (void*
) к нему.
НТН