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
-
コマンドを中断します。
- 上記以外
-
コマンドを中断します。