Tt_pattern * ttdt_message_accept( Tt_message contract, Ttdt_contract_cb cb, void * clientdata, Widget shell, int accept, int sendStatus );
ttdt_message_accept() 関数は、ToolTalk 要求を処理することを受け入れます。ツールは、要求の処理 (つまり、無視したり拒否すること) を受け入れる場合にこの関数を呼び出します。
Ttdt_contract_cb 引き数は、表 A-10 に示すパラメータを取ります。
表 A-10 Ttdt_contract_cb 引き数が取るパラメータ
パラメータ |
説明 |
---|---|
Tt_message msg |
送信状態にある要求 クライアント・プログラムは、この要求を無視または拒否する、あるいはメッセージに応答します。 |
Tttk_op op |
着信中の要求のオペレーション |
Widget shell |
ttdt_message_accept() 関数に渡すシェル |
void *clientdata |
ttdt_message_accept() 関数に渡すクライアント・データ |
Tt_message contract |
ttdt_message_accept() 関数に渡すコントラクト |
メッセージ msg を正常に処理すると、コールバックはゼロを返します。そうでない場合は、Tt_message に送られた tt_error_pointer を返します。
メッセージ msg を処理しない場合、コールバックはメッセージを返し、TT_CALLBACK_CONTINUE ルーチンを呼び出しスタックに渡してメッセージを他のコールバックに提供するか、メッセージを tt_message_receive() 呼び出しに返します。
ttdt_message_accept() 関数は、ハンドラを宛先とする要求 (表 A-11 を参照してください) をデフォルト・セッションで登録します。
表 A-11 ttdt_message_accept が登録する要求
contract 引き数が TT_WRN_START_MESSAGE メッセージ・ステータスの時、メッセージはツールを起動します。
起動したツールは、その ptype にすでにディスパッチされている他のメッセージを受信するため、コントラクトを受け入れる前に使用したい配信範囲に参加する必要があります。そうしないと、ツールは動作中にその ptype の宣言を解除しなければなりません。ツールがどの配信範囲にも参加していないと、ディスパッチされたメッセージによって ptype の他のインスタンスが起動されます。
tt_message_accept( contract )
sendStatus 引き数が true の場合、ttdt_open() 関数に渡されたパラメータ (存在する場合) を使用して、ttdt_message_accept() 関数は要求側に Status 通知を送信します。
この関数は、NULL で終了する Tt_pattern 型の配列を返します。この配列を破棄する場合は、tttk_patterns_destroy() 関数を使用します。エラーが返される場合、返された配列は tt_ptr_error で解読されるエラー・ポインタになります。表 A-12 は、ttdt_message_accept() 関数が返す可能性のあるエラーの一覧です。
表 A-12 ttdt_message_accept が返す可能性のあるエラー
エラーの値 |
説明 |
---|---|
ttsession プロセスを使用できません。ToolTalk サービスは、ttsession が実行されていない場合はその再起動を試みます。このエラーは、ToolTalk サービスがインストールされていないか正しくインストールされていないかのどちらかを示します。 |
|
渡されたポインタが、このオペレーションに適した型のオブジェクトを指していません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。 |
|
デフォルト・セッションの ttsession は、tt_message_accept() 関数をサポートしていないバージョン (1.0 または 1.0.1) です。 注 - contract 引き数のメッセージ・ステータスが TT_WRN_START_MESSAGE の場合、ツールの ptype に対して送信されるメッセージは、contract が拒否、応答、または無視されるまでブロックされます。 |