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

ttdt_message_accept

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 が登録する要求

要求 

処理方法 

Get_Geometry, Set_Geometry

shell パラメータが NULL でない場合、これらの要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、これらの要求はコールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Get_Iconified, Set_Iconified

shell パラメータが NULL でない場合、これらの要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、これらの要求はコールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Get_Mapped, Set_Mapped

shell パラメータが NULL でない場合、これらの要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、これらの要求はコールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Raise

shell パラメータが NULL でない場合、この要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、この要求はコールバック・ルーチンに渡されます。それ以外の場合は、この要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Lower

shell パラメータが NULL でない場合、この要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、この要求はコールバック・ルーチンに渡されます。それ以外の場合は、この要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Get_XInfo, Set_XInfo

shell パラメータが NULL でない場合、これらの要求は透過的に処理されます。shell パラメータが NULL で、cb パラメータが NULL でない場合は、これらの要求はコールバック・ルーチンに渡されます。それ以外の場合は、これらの要求はエラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Pause

cb パラメータが NULL でない場合、この要求はコールバック・ルーチンに渡されます。cp パラメータが NULL の場合は、エラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Resume

cb パラメータが NULL でない場合、この要求はコールバック・ルーチンに渡されます。cp パラメータが NULL の場合は、エラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Quit

cb パラメータが NULL でない場合、この要求はコールバック・ルーチンに渡されます。cp パラメータが NULL の場合は、エラー TT_DESKTOP_ENOTSUP とともに異常終了します。

Get_Status

cb パラメータが NULL でない場合、この要求はコールバック・ルーチンに渡されます。cp パラメータが NULL の場合は、エラー TT_DESKTOP_ENOTSUP とともに異常終了します。

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 が返す可能性のあるエラー

エラーの値 

説明 

TT_ERR_NOMP

ttsession プロセスを使用できません。ToolTalk サービスは、ttsession が実行されていない場合はその再起動を試みます。このエラーは、ToolTalk サービスがインストールされていないか正しくインストールされていないかのどちらかを示します。 

TT_ERR_POINTER

渡されたポインタが、このオペレーションに適した型のオブジェクトを指していません。たとえば、文字列が必要なときにポインタは整数を指している場合などです。 

TT_ERR_UNIMP

デフォルト・セッションの ttsession は、tt_message_accept() 関数をサポートしていないバージョン (1.0 または 1.0.1) です。


注 -

contract 引き数のメッセージ・ステータスが TT_WRN_START_MESSAGE の場合、ツールの ptype に対して送信されるメッセージは、contract が拒否、応答、または無視されるまでブロックされます。