routproc
routproc 関数は、ルーティング手順のサンプルです。 アプリケーションの一部として指定する必要があります。 これは、動的アクセス モジュール (DMOD) によって呼び出され、このアプリケーションの場合とそうでない可能性があるメッセージが含まれます。DMOD は、メッセージを受け入れるまで順番にルーティング プロシージャを呼び出します。
構文
DWORD routproc(
BUFHDR *msgptr,
USHORT locl,
USHORT retstat
);
パラメーター
msgptr
DMOD によってルーティング プロシージャに渡されるメッセージへのポインター。
locl
メッセージの受信元の局所性 ( retstat がメッセージが返されたことを示す場合)、またはパスが失われた場所 ( retstat がパス エラーを示す場合) のローカリティ。
retstat
通話の理由:
CEDINMSG (1)—メッセージが返されました。
CEDINLLN (2)— パス エラー (下記の「備考」を参照)。
戻り値
TRUE
ルーティング手順がメッセージを受け入れた。
FALSE
メッセージはこのルーティング手順用ではありません。
注釈
ルーティング手順では、まず sbpurcvx を呼び出す必要があります。これは、Open 応答メッセージを次のように処理します。
sbpurcvx(&msgptr, locl, retstat)
sbpurcvx からの TRUE のリターン コードは、sbpurcvx がメッセージを受け入れたことを示します。このアプリケーションに対して Open エラー応答が受信され、リソースの場所が続行されています。 ルーティング プロシージャはメッセージをそれ以上処理せず、さらにルーティング プロシージャを呼び出す DMOD を防ぐために TRUE を 返す必要があります。
sbpurcvx からの FALSE のリターン コードは、ルーティング手順で次のことが必要であることを示します。
メッセージがこのアプリケーション用の場合は、メッセージの責任を負い、 TRUE を 返して、DMOD がそれ以上のルーティング手順を呼び出さないようにします。
メッセージがこのアプリケーション用でない場合は、 FALSE を 返して、DMOD がそれ以上のルーティング手順を試みるようにします。
パス エラーが返された場合、 msgptr は有効なメッセージを指させず、指定されたローカリティ値に対して関数管理インターフェイス (FMI) メッセージは返されません。 アプリケーションは、このローカリティを使用してすべてのセッションを終了する役割を担います。 ルーティング プロシージャは FALSE を返す必要があります。 これにより、失われた局所性が他のすべてのルーティング手順に確実に報告されます。
メッセージがこのアプリケーション用の場合、ルーティング手順では、メッセージをすぐに処理するか、アプリケーション キューにメッセージを配置してから、セマフォを使用してアプリケーションをポストできます。 詳細については、「 メッセージの受信」を参照してください。