通信管理 XNF/AS プログラマーズガイド OSI編
![[目次]](FIGURE/CONTENT.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
アソシエーションの非活性化(解放)要求およびアソシエーション確立要求に対する拒否応答を行います。次に示す4種類の要求種別があります。
- 正常解放:アソシエーションを正常に解放します。
- 終了応答:相手からのアソシエーション解放要求に対して,肯定応答を返し,アソシエーションを非活性化します。
- 強制解放:アソシエーションを強制的に解放(アボート)します。
- 確立拒否:アソシエーション確立要求を拒否します。
#include <xnfw/xnf.h> /* ヘッダ情報取り込み */
struct cd_s sbuf; /* 通信記述部の領域確保 */
int rcode; /* リターンコード */
sbuf.O_vpart1.O_mode=O_SYN; /* 通信記述部の設定 /
.......................... .................
sbuf.O_vpart2.O_bflen=BFLEN; /* 通信記述部の設定 */
rcode=xnf_dis(&sbuf); /* 関数呼び出し */
|
(3) リターン情報
(a) リターンコード
正の整数:受信バッファ長不足のため,不足分のデータを読み捨てた
0:正常終了
-1:異常終了
(b) 詳細エラー情報
詳細エラー情報は,リターンコードが異常終了のときに,グローバル変数のerrnoに設定されます。詳細エラー情報については,「11. 詳細エラー情報」を参照してください。
(c) 詳細エラーコード
詳細エラーコードは,リターンコードが異常終了でerrno=EINVALのときに,通信記述部のO_statusに設定されます。詳細エラーコードについては,「12. 詳細エラーコード」を参照してください。
- DISABLE関数を発行すると,データの送受信で使用していたアソシエーション端点識別子は無効となります。
- 非同期指定の場合,DISABLE関数は通信管理に動作要求を指定するだけで,要求動作は完了していません。動作完了通知は,CHECK関数を発行して受け取ります。CHECK関数については,「10.6 CHECK」を参照してください。
- 以前に非同期関数が発行されている場合,その非同期関数の種類,および通信管理のアソシエーションの状態によってはDISABLE関数がエラーとなります。
エラー発生時は,CHECK関数またはRECEIVE関数を発行し,エラー要因を取得する必要があります。
- 終了要求のDISABLE関数発行時以前に発行した非同期指定のRECEIVE関数は,取り消されます。その場合,RECEIVE関数に対する動作完了通知は,APに通知されません。
- 異常終了のDISABLE関数発行時,以前に発行した関数はすべて取り消されます。その場合,非同期関数に対する動作完了通知は,APに通知されません。
- アソシエーションの確立時に,O_EXPASIを指定した場合は,確立拒否をするときに「自局PSAPアドレス情報」を指定してください。
- errno=EINVALのときは,以降の通信はできません。異常終了のDISABLE関数またはCLOSE関数を実行し,通信を終了させてください。これら以外の関数を発行した場合,errno=EDEADLKでエラーリターンします。
- DISABLE関数がEDEADLKでエラーリターンした場合,APの手順不正によるシーケンスエラー,または以前に発行した非同期のRECEIVE関数に完了事象があるため受け付けられないという二つの意味があります。
以前に発行した非同期のRECEIVE関数に完了事象があるときは,EVENTS関数,CHECK関数を発行して完了事象を受信してから処理を続行する必要があります。それ以外のときは,APで異常終了するか,シーケンスの見直しを行うようにしてください。
All Rights Reserved. Copyright (C) 2002, 2009, Hitachi, Ltd.