アプリケーションは、プロセスを初期化して初期 ToolTalk セッションに登録するために、プロセス識別子 (procid) を取得する必要があります。その後、新規に初期化した ToolTalk プロセスに対応するファイル記述子 (fd) を取得できます。
次のコード例では、まずサンプルプログラムを初期化し、ToolTalk サービスに登録します。その後、対応するファイル記述子を取得します。
int ttfd; char *my_procid; /* * Initialize ToolTalk, using the initial default session */ my_procid = tt_open(); /* * obtain the file descriptor that will become active whenever * ToolTalk has a message for this process. */ ttfd = tt_fd(); |
tt_open はプロセスの procid を返し、それをデフォルトの procid として設定します。tt_fd は、現在の procid のファイル記述子を返します。このファイル記述子は、アプリケーションにメッセージが到着すると使用可能になります。
アプリケーションは他の tt_ 呼び出しをする前に、tt_open を呼び出さなければなりません。そうしないと、エラーが発生する場合があります。ただし、いくつかの例外があります。tt_default_session_set と tt_X_session は、tt_open の前に呼び出して、接続するセッションを制御できます。ToolTalk をマルチスレッド環境で使用する場合は、tt_feature_required と tt_feature_enabled を呼び出すことができます。ToolTalk ファイル名マッピング API コールである tt_file_netfile、tt_netfile_file、tt_host_file_netfile、および tt_host_netfile_file を、tt_open を呼び出すことなく呼び出すことができます。
ToolTalk サービスに対する最初の呼び出しが tt_open である場合、デフォルトのセッションとして初期セッションが設定されます。デフォルトのセッション識別子 (sessid) は、ToolTalk メッセージの配信にとって重要です。アプリケーションがセッションのメッセージ属性を明示的に設定しない場合、ToolTalk サービスは、デフォルトの sessid を自動的に設定します。メッセージを TT_SESSION
に配信範囲と指定すると、メッセージは、この型のメッセージを処理対象として登録したデフォルトのセッション内のすべてのアプリケーションに配信されます。
プログラムは、初期セッション以外のセッションに登録する場合には、そのセッション名を検索し、新しいセッションをデフォルトとして設定し、ToolTalk サービスに登録しなければなりません。
次のコード例は、somehost:0 と命名された X セッションを結合する方法を示しています。このセッションは、初期セッションではありません。
char *my_session; char *my_procid; my_session = tt_X_session("somehost:0"); tt_default_session_set(my_session); my_procid = tt_open(); ttfd = tt_fd(); |
必要な呼び出しは、指定されている順番で行わなければなりません。
この呼び出しは、X ディスプレイサーバーに関連付けられているセッション名を検索します。tt_X_session() は、引数 char *xdisplay_name をとります。
xdisplay_name は、X ディスプレイサーバー名です (この例では、somehost:0 です)。
この呼び出しは、新しいセッションをデフォルトのセッションとして設定します。
この呼び出しは、プロセスの procid を返し、それをデフォルトの procid として設定します。
この呼び出しは、現在の procid のファイル記述子を返します。
メッセージを複数のセッション間で送受信したい場合もあります。複数のセッションに登録する場合、プログラムは接続したいセッションの識別子を検索し、新しいセッションを設定し、ToolTalk サービスに登録しなければなりません。
次のコード例は、procid を sessid1 に、procid2 を sessid2 に接続する方法を示しています。
tt_default_session_set(sessid1); my_procid1 = tt_open(); tt_default_session_set(sessid2); my_procid2 = tt_open(); tt_fd2 = tt_fd(); |
こうしておくと、tt_default_procid_set() を使用して、セッション間を切り替えることができます。