4

本当に明白な何かが欠けている場合はお詫びしますが、 Pantheiosを使用してカスタムのフロントエンドバックエンドを作成する方法を理解しようとしています。(私はCではなくC ++から使用しています。)

初期化関数の目的に従うことはできますが(私は思います)、他の関数についてはよくわかりません:pantheios_be_logEntry、、。pantheios_fe_getProcessIdentitypantheios_fe_isSeverityLogged

特に、フロントエンドとバックエンドの関係については混乱しています。どうすればそれらを相互に通信させることができますか?

4

1 に答える 1

3

あなたが理解していないことを正確に理解しているのかわかりませんが、それが問題の一部かもしれません。;-)それで、私は最善を尽くします、そして、あなたはそれが近いかどうか私に知らせます。

pantheios_fe_getProcessIdentity()Pantheiosが初期化されているときに一度呼び出されます。プロセスを識別する文字列を返す必要があります。(実際には、リンクユニットを識別します。ImperfectC ++で定義された用語で、Pantheiosの作成者であるMatthew Wilsonによって書かれました。これは、リンク名の範囲、つまり実行可能プログラムモジュールまたはダイナミックライブラリモジュールを意味します。)

pantheios_fe_isSeverityLogged()アプリケーションコードでログステートメントが実行されるたびに呼び出されます。ゼロ以外を返し、ステートメントを処理して出力に送信する必要があることを示します(バックエンドを介して)。ゼロを返す場合、処理は行われません。FWIU、これがPantheiosがとても速い主な理由です。

pantheios_be_logEntry()ログステートメントが出力用に送信されるとき、がpantheios_fe_isSeverityLogged()ゼロ以外を返し、Pantheiosコアがステートメントを処理したとき(コード内のすべての引数を単一の文字列に形成するとき)に呼び出されます。ステートメント文字列をどこにでも送信します。たとえば、be.fprintfバックエンドは、を使用してコンソールに出力しfprint()ます。

これらの側面を理解したら、質問の2番目の部分はそれがどこで面白くなるかです。フロントエンドとバックエンドが初期化されると、Pantheiosコアが保持するコンテキスト(C ++オブジェクトなど)が作成され、フロント/バックエンドAPI関数を呼び出すたびに返されます。両方をカスタマイズする場合、両方が知っている共有コンテキストを介して通信させることができますが、Pantheiosコアは、不透明なハンドル(void*)を使用する以外に、知らない(そして知らないはずです)。

HTH

于 2009-10-02T23:03:02.000 に答える