6.4.8 蓄積ファイル内容表示コマンドデータ編集UOC
機能
蓄積ファイル内容表示コマンド編集時にUOCを実行します。
形式
ANSI C、C++の形式
#include <esafl.h> ESLONG es_afl_data_mask( char *userobj, ESLONG protocol, void *parm, ESLONG flags);
説明
蓄積ファイル表示コマンドに指定した関数名で、表示すべき電文を蓄積ファイルから読み込むごとに実行します。編集UOCは必要であれば引数に指定したユーザデータを更新することができます。更新した内容で蓄積ファイル表示コマンドは、ユーザデータを出力します。コマンドに編集UOC名を指定しなかった場合(デフォルト名で関数を作成した場合を除く)やesaflfillsコマンドに「-d」オプションを指定しなかった場合、又はユーザデータが存在しない電文の場合は編集UOCを実行しません。
関数名(es_afl_data_mask)はデフォルト名であり、任意の関数名で作成可能です。その場合はコマンドのオプションに指定してください。
パラメタの内容
ESAFLUOCRPCのパラメタ内容
typedef struct es_afl_uoc_rpc { char key[32]; ………… 電文キー char group[32]; ………… サービスグループ名 char service[32]; ………… サービス名 char *data; ………… ユーザデータ ESULONG datalen; ………… ユーザデータ長 ESLONG telegram_type; ………… 電文種別 } ESAFLUOCRPC;
ESAFLUOCCOMのパラメタ内容
typedef struct es_afl_uoc_com { char key[32]; ………… 電文キー char *data; ………… ユーザデータ ESULONG datalen; ………… ユーザデータ長 ESLONG telegram_type; ………… 電文種別 char yobi[48]; ………… 予備領域 } ESAFLUOCCOM;
ESAFLUOCIIOPのパラメタ内容
typedef struct es_afl_uoc_iiop { char key[32]; ………… 電文キー char byte_order; ……… バイトオーダー char yobi1[7]; ……… 予備 char *objectkey; ……… オブジェクトキー ESULONG objectkey_size; ……… オブジェクトキー長 char yobi2[4]; ……… 予備 char *operation; ……… オペレーション名 ESULONG operation_size; ……… オペレーション名長 char yobi3[4]; ……… 予備 void *context; ……… サービスコンテキスト ESULONG context_size; ……… サービスコンテキスト長 char yobi4[4]; ……… 予備 char *data; ……… プロトコル電文 ESULONG datalen; ……… プロトコル電文長 ESULONG proto_datalen; ……… プロトコルヘッダ長 ESULONG user_datalen; ……… ユーザデータ長 ESLONG telegram_type; ……… 電文種別 } ESAFLUOCIIOP;
システムテスト支援が設定するパラメタ項目
- userobj
-
起動UOCで指定されたアドレスを設定します。
起動UOCがない場合はNULLを設定します。
- protocol
-
電文のプロトコルを設定します。
-
RPC/RAPプロトコルの場合:ESAFL_PROTOCOL_RPC
-
TCPプロトコルの場合:ESAFL_PROTOCOL_TCP
-
HTTPプロトコルの場合:ESAFL_PROTOCOL_HTTP
-
IIOPプロトコルの場合:ESAFL_PROTOCOL_IIOP
-
- parm
-
- RPC/RAPプロトコルの場合
-
構造体ESAFLUOCRPCのアドレスを設定します。構造体の各メンバ変数には以下の値を設定します。
-
key
電文キーを設定します。
-
group
サービスグループ名を設定します。要求電文の場合は、要求時に指定したサービスグループ名となります。応答電文の場合は、受け付けたサービスグループ名となります。
-
service
サービス名を設定します。要求電文の場合は、要求時に指定したサービス名となります。応答電文の場合は、受け付けたサービス名となります。
-
data
ユーザデータの先頭アドレスを設定します。
-
datalen
電文キーが示す電文のユーザデータ長を設定します。
-
telegram_type
電文種別を設定します。
要求電文のとき …… ESAFL_TYPE_REQUEST
応答電文のとき …… ESAFL_TYPE_RESPONSE
-
- TCP/HTTPプロトコルの場合
-
構造体ESAFLUOCCOMのアドレスを設定します。構造体の各メンバ変数には以下の値を設定します。
-
key
電文キーを設定します。
-
data
ユーザデータの先頭アドレスを設定します。
-
datalen
電文キーが示す電文のユーザデータ長を設定します。
-
telegram_type
電文種別を設定します。
要求電文のとき …… ESAFL_TYPE_REQUEST
応答電文のとき …… ESAFL_TYPE_RESPONSE
-
- IIOPプロトコルの場合
-
構造体ESAFLUOCIIOPのアドレスを設定します。応答電文のときは、リプライステータスがNO_EXCEPTION(正常応答)の場合のみ編集UOCを実行します。構造体の各メンバ変数には以下の値を設定します。
-
key
電文キーを設定します。
-
byte_order
プロトコル電文のバイトオーダーを設定します。
ビッグエンディアンの場合 …… ESAFL_BIG_ENDIAN
リトルエンディアンの場合 …… ESAFL_LITTLE_ENDIAN
-
objectkey
オブジェクトキーの格納領域アドレスを設定します。
-
objectkey_size
オブジェクトキー長を設定します。オブジェクトキーがないときは0を設定します。
-
operation
オペレーション名の格納領域アドレスを設定します。
-
operation_size
オペレーション名長を設定します。オペレーション名がないときは0を設定します。
-
context
サービスコンテキストの格納領域アドレスを設定します。バイトオーダーを考慮して参照してください。
-
context_size
サービスコンテキスト長を設定します。サービスコンテキストがないときは0を設定します。
data
プロトコル電文の先頭アドレスを設定します。バイトオーダーを考慮して参照してください。
-
datalen
プロトコルヘッダを含んたプロトコル電文長を設定します。
-
proto_datalen
プロトコルヘッダ長を設定します。
-
user_datalen
ユーザデータ長を設定します。
-
telegram_type
電文種別を設定します。
要求電文のとき…… ESAFL_TYPE_REQUEST
応答電文のとき……ESAFL_TYPE_RESPONSE
- 注意事項
-
IIOPプロトコルの未サポート電文については、蓄積ファイル内容表示コマンドデータ編集UOCを実行しません。
-
- flags
-
ESNOFLAGSを設定します。
ユーザが設定するパラメタ項目
- data
-
必要に応じてデータ更新してください。その更新内容にしたがってダンプ出力します。
なお、入力情報のユーザデータ長以降の領域は参照・更新しないでください。
- datalen
-
コマンドの「-d」オプションで指定した電文長と本設定値のうち、小さいサイズでダンプ出力します。
入力情報のユーザデータ長より大きい値を設定しても無視します。
リターン値
次のコードでリターン値を設定してください。
- ES_UOC_OK
-
コマンドは処理続行します。
- ES_UOC_NG
-
コマンドを中断します。
- 上記以外
-
コマンドを中断します。