8.2 非請求メッセージ・ハンドラの定義
非請求メッセージ・ハンドラ関数を定義するには、次のシグネチャを使用してtpsetunsol(3c)関数を呼び出します。
int
tpsetunsol(*myfunc)
Windowsベースのオペレーティング・システムを実行している場合、以下のような非請求メッセージ・ハンドラ関数を宣言する必要があります。
void _TMDLLENTRY CustomerUnsolFunc(char *data, long len, long flags)
Tuxedoライブラリと使用中のコードの間の適切な呼出し規約を取得するために、Windowsベースのオペレーティング・システムでは_TMDLLENTRY
マクロが必要になります。
UnixシステムではNULL文字列に拡張されるため、_TMDLLENTRY
マクロは必要ありません。
次の表は、tpsetunsol()
関数に渡すことができる唯一の引数を示しています。
表8-2 tpsetunsol()関数の引数
引数 | 説明 |
---|---|
myfunc
|
コールバック関数のプロトタイプに準拠する関数へのポインタ。このプロトタイプに準拠するには、関数で次の3つのパラメータを使用できることが必要です。
|
クライアントが非請求メッセージを受信すると、そのメッセージと共にコールバック関数がディスパッチされます。できるかぎりタスクが中断されないようにするには、非請求メッセージのハンドラ関数で最小限の処理しか行われないようにコーディングする必要があります。このようにすると、ハンドラ関数が待機中のプロセスにすぐに戻ることができます。