8.3.2 GET要求
機能
入力用の蓄積ファイルから電文情報の読み込み要求(GET要求)を行います。
形式
ANSI Cの形式
#include <esafl.h> int es_afl_get(ESAFL_DTPARAM *dtparam_pt, ESLONG flags)
パラメタの内容
ESAFL_DTPARAMのパラメタ内容
typedef struct es_afl_dtparam_t{ ………データ管理パラメタ構造体 ESAFL_HEAD *head_pt; ………ヘッダパラメタ構造体アドレス ESAFL_DATA *data_pt; ………データパラメタ構造体アドレス char yobi1[64]; ………予備 char hsic_area1[512]; ………HSIC使用領域1 char hsic_area2[512]; ………HSIC使用領域2 } ESAFL_DTPARAM;
ESAFL_HEADのパラメタ内容
typedef struct es_afl_head_t{ ………ヘッダパラメタ構造体 unsigned char src_ip[4]; ………送信元IPアドレス unsigned char dst_ip[4]; ………送信先IPアドレス unsigned short src_port; ………送信元ポート番号 unsigned short dst_port; ………送信先ポート番号 ESULONG protocol; ………プロトコル種別 char data_key[32]; ………電文キー char yobi[80]; ………予備 } ESAFL_HEAD;
ESAFL_DATAのパラメタ内容
typedef struct es_afl_data_t{ ………データパラメタ構造体 ESLONG data_area_len; ………電文格納エリア長 char yobi1[4]; ………予備 ESLONG indata_len; ………入力電文長 ESLONG indata_len1; ………実入力電文長 char *indata_area_pt; ………入力電文格納エリアアドレス ESLONG outdata_len; ………出力電文長 char yobi2[4]; ………予備 char *outdata_area_pt; ………出力電文格納エリアアドレス char yobi[88]; ………予備 } ESAFL_DATA;
UAPで値を設定するパラメタ項目
- dtparam_pt
-
データ管理パラメタ構造体のアドレスを設定してください。
データ管理パラメタ構造体に次の情報を設定してください。
-
ヘッダパラメタ構造体アドレス
ヘッダパラメタ構造体のアドレスを設定してください。
-
データパラメタ構造体アドレス
データパラメタ構造体のアドレスを設定してください。
データパラメタ構造体に次の情報を設定してください。
-
電文格納エリア長
電文を格納するエリア長を設定します。1以上の値を設定してください。
-
入力電文格納エリアアドレス
電文を格納するエリアのアドレスを設定します。
-
- flags
-
ESNOFLAGSを設定してください。
HSICから値が返されるパラメタ項目
- dtparam_pt
-
データ管理パラメタ構造体に次の情報を設定します。
-
HSIC使用領域1
HSICが使用する情報が返されます。
PUT要求時に、本パラメタ情報をデータ管理パラメタ構造体のHSIC使用領域1に設定してください。
-
HSIC使用領域2
HSICが使用する情報が返されます。
PUT要求時に、本パラメタ情報をデータ管理パラメタ構造体のHSIC使用領域2に設定してください。
ヘッダパラメタ構造体に次の情報を設定します。
-
送信元IPアドレス
取得した電文の送信元IPアドレスが次に示す形式で返されます。
例) 172.165.112.20
[0]
[1]
[2]
[3]
0xAC
0x A5
0x70
0x14
-
送信先IPアドレス
取得した電文の送信先IPアドレスが次に示す形式で返されます。
例) 172.165.112.20
[0]
[1]
[2]
[3]
0xAC
0x A5
0x70
0x14
-
送信元ポート番号
取得した電文の送信元ポート番号が返されます。
-
送信先ポート番号
取得した電文の送信先ポート番号が返されます。
-
プロトコル種別
取得した電文のプロトコル種別が返されます。
ESAFL_PROTOMOD_TCP :TCPプロトコル
ESAFL_PROTOMOD_UDP :UDPプロトコル
ESAFL_PROTOMOD_HTTP:HTTPプロトコル
-
電文キー
取得した電文の電文キー(16進数)が返されます。
データパラメタ構造体に次の情報を設定します。
-
入力電文長
入力電文格納エリアに取得した電文のサイズが返されます。ESAFLER_OVERFLOWでリターンしたときは、電文格納エリア長が返されます。
コネクション切断、もしくはパケットロストが発生している場合、入力電文長は0が返されます。複数のGET要求で取得した電文を組み立ててPUT要求を行っているときは、本GET要求を契機にして後処理を行ってください。
-
実入力電文長
取得した電文の実サイズが返されます。
-
入力電文格納エリアアドレス
入力電文格納エリアに取得した電文が返されます。
-
リターン値
リターン値 |
意味 |
---|---|
ES_OK |
正常に終了しました。 |
ESAFLER_ARGUMENT |
引数に設定した値が間違っています。 |
ESAFLER_TIMING |
この関数を発行できる状態ではありません。 |
ESAFLER_CONDITION |
INIT要求時に入力ファイルパラメタ構造体を設定していません。 |
ESAFLER_NO_DATA |
取得できる電文情報がありません。 |
ESAFLER_OVERFLOW |
入力電文格納エリアが小さいです。 |
ESAFLER_IOERR |
蓄積ファイルへのI/Oエラーが発生しました。 |
ESAFLER_SYSERR |
システムエラーが発生しました。 |
ESAFLER_UNRESOLVABLE |
その他のエラーが発生しました。 |
注意事項
-
各パラメタ構造体の予備領域はNULLクリアしてください。
-
取得した電文のサイズが電文格納エリア長より大きいときは、入力電文格納エリア長までの電文を取得し、ESAFLER_OVERFLOWでエラーリターンします。入力電文格納エリア長を実入力電文長以上にして、再度GET要求を行うことで、先ほど全て取得できなかった電文を全て取得することができます。
-
以下のエラーリターンのあとに再度GET要求を行うと、ESAFLER_TIMINGでエラーリターンします。
-
ESAFLER_NO_DATA
-
ESAFLER_IOERR
-