ToolTalk ユーザーズガイド

ptype ファイルの作成

次のコード例は、ptype ファイルを示しています。

#include "Sun_EditDemo_opnums.h"

ptype Sun_EditDemo {
		/* setenv Sun_EditDemo_HOME to install dir for the demo */
	 start	"${Sun_EditDemo_HOME}/edit";
	 handle:
	 /* edit file named in message, start editor if necessary */
	 session Sun_EditDemo_edit(void)
					=> start opnum=Sun_EditDemo_EDIT;

	 /* tell editor viewing file in message to save file */
	 session Sun_EditDemo_save(void)
					=> opnum=Sun_EditDemo_SAVE;

	 /* save file named in message to new filename */
	 session Sun_EditDemo_save_as(in string new_filename)
					=> opnum=Sun_EditDemo_SAVE_AS;

	 /* bring down editor viewing file in message */
	 session Sun_EditDemo_close(void)
					=> opnum=Sun_EditDemo_CLOSE;
};

次に ptype ファイルの構文を示します。

ptype	::=	'ptype' ptid `{'
		property*		[`observe:' psignature*]
		[`handle:' psignature* ]
		[`handle_push:' psignature*]
		[`handle_rotate:' psignature*]
		`}' [`;']
property	::=	property_id value `;'
property_id	::=	`start'
value	::=	string
ptid	::=	identifier
psignature	::=	[scope] op args [contextdcl]
		[`=>'
		[`start'][`queue']
		[`opnum='number]]
		`;'
scope	::=	`file'
	|	`session'
	|	`file_in_session'
args	::=	`(` argspec {, argspec}* `)'
	|	`(void)'
	|	`()'
contextdcl	::=	`context' `(` identifier {, identifier}* `)' `;'
argspec	::=	mode type name
mode	::=	`in' | `out' | `inout'
type	::=	identifier
name	::=	identifier

property_id 情報

ptid - プロセス型識別子 (ptid) は、プロセスの型を識別します。ptid は、導入システムごとに一意でなければなりません。この識別子はインストール後は変更できません。したがって、選択する個々の名前は一意でなければなりません。たとえば、Sun_EditDemo のように、製品または会社の商標名を使用できます。ptid には、32 文字以内という制限があり、予約済み識別子 (ptype、otype、start、opnum、queue、file、session、observe、または handle) は使用できません。

start - プロセスの起動文字列。ToolTalk サービスが、プロセスを起動する必要がある場合は、シェルとして使われるコマンド /bin/sh を実行します。

コマンドを実行する前に、ToolTalk サービスは、アプリケーションを起動したメッセージのファイル属性値を使って、TT_FILE を環境変数として定義します。このコマンドは、アプリケーションを起動したメッセージ送信側の環境ではなく、ttsession の環境内で実行します。したがって、コンテキスト情報がある場合、メッセージ引数またはコンテキストによって渡される必要があります。

psignature 照合情報

scope - このパターン属性は、メッセージ内の配信範囲属性と照合されます。

op - 操作名。この名前は、メッセージ内の操作属性と照合されます。


注 -

ptype および otype の両方にメッセージシグニチャを指定する場合は、それぞれに固有の操作名を使用してください。たとえば、ptype と otype の両方に表示操作を指定することはできません。


args - 操作のための引数。args リストが void の場合、シグニチャは引数のないメッセージだけに一致します。args リストが空 (つまり ()) の場合は、シグニチャは引数とは無関係に一致します。

contextdcl - コンテキスト名。この名前の付いたコンテキストを持つパターンがシグニチャから生成される場合、パターンは空の値リストを持ちます。

psignature 処置情報

start - psignature がメッセージに一致しても、この ptype を持つ実行中のプロセスの中に、メッセージに一致したパターンを持つものがない場合は、この ptype のプロセスを起動します。

queue - psignature がメッセージに一致しても、この ptype を持つ実行中のプロセスの中にメッセージに一致したパターンを持つものがない場合は、この ptype のプロセスがメッセージに一致したパターンを登録するまでメッセージを待ち行列に入れます。

opnum - 指定された数をメッセージの opnum 属性に書き込み、メッセージと一致したシグニチャを識別できるようにします。

メッセージがシグニチャと一致するとき、シグニチャの opnum がメッセージに組み込まれます。これでアプリケーションは、tt_message_opnum 呼び出しによって opnum を検索できます。シグニチャごとに固有の opnum を指定すると、どのシグニチャがメッセージと一致したかすぐに判定できます。

tt_ptype_opnum_callback_add 呼び出しを使用すると、opnum にコールバックルーチンを接続できます。メッセージが一致すると、ToolTalk サービスはその opnum に接続されたコールバックをすべて調べ、それらを起動します。

Sun_EditDemo_opnums.h ファイルは、edit.c が使用するすべての opnum のシンボリック定義を定義します。これにより、edit.types ファイルと edit.c ファイルは、同じ定義を共有できます。