5.1.12 受信メッセージ判定UOCインタフェース
受信メッセージ判定UOCは,次に示す形式で呼び出します。なお,UOCの関数名称はユーザの任意です。
(1) 形式
- ANSI C,C++の場合
#include <dcmcf.h> #include <dcmcfuoc.h> #include <dcmtcpu.h> DCLONG msgrep_uoc(dctcp_uoc_msgrep *parm)
- K&R版 Cの場合
#include <dcmcf.h> #include <dcmcfuoc.h> #include <dcmtcpu.h> DCLONG msgrep_uoc(parm) dctcp_uoc_msgrep *parm;
(2) 説明
msgrep_uoc(受信メッセージ判定UOC)を呼び出すとき,MCFは次に示す所定のパラメタをparmに設定します。
(3) パラメタの内容
(a) dctcp_uoc_msgrepの内容
typedef struct { DCLONG pro_kind; …プロトコル種別 char cn_name[9]; …コネクションID char reserve1[7]; …予備 char le_name[9]; …論理端末名称 char reserve2[7]; …予備 DCLONG snd_status; …送信状態 char *rcv_data_adr; …受信メッセージ格納アドレス DCLONG rcv_data_size; …受信メッセージ長 DCLONG msg_type; …メッセージ種別 DCLONG reason; …理由コード DCLONG msg_reply; …送達確認メッセージの送信要否 char *snd_data_adr; …送達確認メッセージ格納アドレス DCLONG snd_buff_size; …送達確認メッセージ格納バッファサイズ DCLONG snd_data_size; …送達確認メッセージ長 DCLONG snd_cont; …送信処理の継続可否 DCLONG rtn_detail; …詳細リターンコード char reserve3[16]; …予備 }dctcp_uoc_msgrep;
(4) MCFが値を設定する項目
(a) dctcp_uoc_msgrep
-
pro_kind
プロトコル種別として,次の値が設定されます。
- DCMCF_UOC_PRO_TCP
-
TCP/IPプロトコル
-
cn_name
メッセージを受信したコネクション名が設定されます。
-
le_name
cn_nameに対応する論理端末の名称が設定されます。
-
snd_status
送信状態が設定されます。DCTCP_UOC_MR_ST_SNDが設定されている場合,送受信メッセージの衝突が発生しています。
- DCTCP_UOC_MR_ST_IDL
-
未送信
- DCTCP_UOC_MR_ST_SND
-
送信処理中
-
rcv_data_adr
受信メッセージを格納したバッファのアドレスが設定されます。
ユーザは,このパラメタを使用して受信メッセージを参照・編集できます。ただし,受信メッセージのメッセージ長は変更できません。
-
rcv_data_size
受信メッセージ長が設定されます。
UOCでこのパラメタを変更しても無効となります。
-
snd_data_adr
送達確認メッセージを格納するバッファのアドレスが設定されます。
ユーザは,このパラメタを使用して送達確認メッセージを編集します。
-
snd_buff_size
送達確認メッセージを格納するバッファサイズが設定されます。
UOCでこのパラメタを変更しても無効となります。
(5) ユーザが値を設定する項目
(a) dctcp_uoc_msgrep
-
msg_type
受信したメッセージの種別を設定します。
- DCTCP_UOC_MR_MT_INFO
-
一方送信メッセージ
- DCTCP_UOC_MR_MT_ACK
-
送達確認メッセージ
- DCTCP_UOC_MR_MT_IGN
-
破棄メッセージ
- DCTCP_UOC_MR_MT_CLS
-
コネクション解放
-
reason
破棄メッセージおよびコネクション解放を指定するときの理由を設定します。この理由コードはログメッセージ(KFCA14849-I,KFCA14850-I)に出力されます。値はユーザの任意に設定します。msg_typeが,DCTCP_UOC_MR_MT_IGN,DCTCP_UOC_MR_MT_CLSの場合だけ有効です。
-
msg_reply
送達確認メッセージの送信要否を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOの場合だけ有効です。
- DCTCP_UOC_MR_REP_ON
-
送達確認メッセージの送信要
- DCTCP_UOC_MR_REP_OFF
-
送達確認メッセージの送信不要
-
snd_data_size
送達確認メッセージ長を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOであり,かつmsg_replyがDCTCP_UOC_MR_REP_ONの場合だけ有効です。
-
snd_cont
仕掛り中の送信処理を継続するかどうかを設定します。snd_statusがDCTCP_UOC_MR_ST_SNDの場合で,msg_typeがDCTCP_UOC_MR_MT_INFOまたはDCTCP_UOC_MR_MT_IGNのときだけ有効です。
- DCTCP_UOC_MR_SC_CONT
-
送信処理を継続します。
- DCTCP_UOC_MR_SC_RSND
-
送信処理を中断します。送信中のメッセージは,受信処理および送達確認メッセージの送信処理完了後,再送します。
- DCTCP_UOC_MR_SC_STOP
-
論理端末を閉塞し,送信処理を停止します。
-
rtn_detail
UOCエラーリターン時の詳細リターンコードを設定します。
(6) リターン値
msgrep_uoc()は次のコードでリターンしてください。
リターン値 |
意味 |
---|---|
DCTCP_UOC_MR_OK |
正常リターン |
DCTCP_UOC_MR_NG |
エラーリターン |
(7) MCFメイン関数のコーディング例
受信メッセージ判定UOCをメイン関数に登録する場合のコーディング例を次に示します。
- ANSI C,C++の場合
#include <dcmtcp.h> #include <dcmtcpu.h> extern DCLONG msgrep_uoc(dctcp_uoc_msgrep *); /* 受信メッセージ判定UOC */ extern dcmcf_uoc_t dcmcf_uoctbl; /* UOCテーブルextern宣言 */ int main() { dcmcf_uoctbl.msgrep /* 受信メッセージ判定 UOC */ = (dcmcf_uocfunc)msgrep_uoc; /* アドレス設定 */ dc_mcf_svstart(); return 0; }
- K&R版 Cの場合
#include <dcmtcp.h> extern DCLONG msgrep_uoc(); /* 受信メッセージ判定 UOC */ extern dcmcf_uoc_t dcmcf_uoctbl; /* UOC テーブルextern宣言 */ main() { dcmcf_uoctbl.msgrep = msgrep_uoc; /* 受信メッセージ判定 UOC */ /* アドレス設定 */ dc_mcf_svstart(); }