共通デスクトップ環境 ToolTalk メッセージの概要

ptype ファイルの作成

ToolTalk 型機構は、ToolTalk サービス・ルート・メッセージに役立つように設計されています。ツールが ptype を宣言すると、そこにリストされているメッセージ・パターンが自動的に登録されます。ToolTalk サービスは、受信するメッセージとこれらの登録されたパターンを一致させます。これらの静的メッセージ・パターンは、ツールが ToolTalk サービスとの通信を終了するまで有効です。

ToolTalk 型データベースは、本リリースに付いているツール用の ptype をすでにインストールしてあります。次のようにして、ToolTalk 型データベースからインストールされた ptype のリストを取り出すことができます。

% tt_type_comp -d user|system|network -P

ptype の名前は、ソース形式で出力されます。

他のツールすべて (つまり、本リリースには含まれていないツール) に対して、最初に ptype ファイルを作成してアプリケーションの ptype を定義し、ToolTalk 型コンパイラ tt_type_comp で、ptype をコンパイルする必要があります。ptype を定義するには、次の情報をファイルに入れる必要があります。

ptype ファイルを作成するには、どのテキスト・エディタ (viemacsdtpad など) でも使用できます。例 2-2 は、CoEd アプリケーション用の ptype ファイルからの一部分です。


例 2-2 CoEd ptype ファイル

ptype DT_CoEd {         /* Process type identifier */
    start "CoEd";       /* Start string */
    handle:             /* Receiving process */
    /*
     * Display ISO_Latin_1
     */
    session     Display(  in  ISO_Latin_1 contents) => start opnum = 1;
                                                            /* Signature */
        /* NOTE: A signature is divided
         * into two parts by the => as follows:
         * Part 1 specifies how the message is to be matched;
         * Part 2 specifies what is to be taken when 
         * a match occurs.
         */

}

ptype ファイルを作成したら、ptype をインストールします。このためには、ToolTalk 型コンパイラを実行します。コマンド行に次のように入力してください。

% tt_type_comp CoEd.ptype

CoEd.ptype は、CoEd ptype ファイル名です。

現在のセッションにおける既存の ptype に対するテスト

ToolTalk サービスは、指定の ptype がすでに現在のセッションに登録されているかどうか、テストする単純関数を提供します。

// Test for existing ptype registered in current session
tt_ptype_exists(const char *ptid)

ptid は登録用にテストするセッションの識別子です。

コンパイルされた ptype ファイルと現在実行中の ttsession のマージ

ToolTalk サービスは、コンパイルされた ToolTalk 型ファイルを現在実行中の ttsession にマージする関数を提供します。

// Merge new compiled ptypes into currently running ttsession
tt_session_types_load(current_session, compiled_types_file)

上記の current_session は、現在のデフォルトの ToolTalk セッションです。compiled_types_file はコンパイルされた ToolTalk 型ファイル名です。この関数は、新しい型を追加し、同じ名前の既存の型と置換します。その他の既存の型は変更されません。