コールバックの実装
非同期通信をサポートするプロトコルのリストについては,「64 ビットの記録,非同期,および IPv6 に対するプロトコル・サポート」を参照してください。
VuGen が仮想ユーザ・スクリプトで非同期通信をスキャンした後,デザイン・スタジオの[非同期]タブにスクリプトで見つかった非同期会話をリストします。スキャン中に見つかった非同期会話ごとに,VuGen は web_reg_async_attributes ステップで宣言されているコールバック関数に一致するコールバック関数の署名を追加します。この署名は,AsyncCallbacks.c 追加ファイルに追加されます。
コールバック関数の名前の先頭は,非同期会話の会話 ID です。たとえば,ID が「LongPoll_0」である非同期会話の RequestCB コールバックは,LongPoll_0_RequestCB になります。
コールバック関数の名前は,スクリプトの web_reg_async_attributes ステップで宣言されます。
使用可能なコールバックは,次のとおりです。
-
RequestCB
このコールバックは,要求が送信される前に呼び出されます。
-
ResponseBodyBufferCB
このコールバックは,応答ボディ・バッファ内および応答ボディの終わりに内容がある場合に呼び出されます。このコールバックは,プッシュ・タイプの会話に対して VuGen によって自動的に生成されます。ただし,ポーリングおよびロング・ポーリング会話でも使用できます。
-
ResponseCB
このコールバックは,会話で各応答が受信された後に呼び出されます。
例 1:
次のサンプル・コードでは,web_reg_async_attributes ステップで 3 つのコールバック関数が宣言されています。
例 2:
次のサンプル・コードでは,AsyncCallbacks.c 追加ファイルに 2 つのコールバックが実装されています。
必要な動作を実装するように,このコールバックを変更できます。詳細については,「コールバックの変更」 を参照してください。
例 3:
次のサンプル・コードでは,HTTP ステータス・コード,累積ヘッダ文字列,累積ヘッダ文字列長の 3 つの引数を含む,ResponseHeader コールバック関数の実装を示します。
int Push_0_ResponseHeadersCB(
int aHttpStatusCode,
const char * aAccumulatedHeadersStr,
int aAccumulatedHeadersLen)
{
//Enter your implementation for ResponseHeadersCB() here.
lr_output_message("Response status code is :[%d]", aHttpStatusCode);
lr_output_message("Response headers are :/n[%s]", aAccumulatedHeadersStr);
return WEB_ASYNC_CB_RC_OK;
}
上記のコールバック関数のサンプル出力は次のようになります。
Response status code is :[200]
Response headers are :
[HTTP/1.1 200 OK
Connection: close
Date: Tue, 25 Jun 2013 09:03:33 GMT
Server: Microsoft-IIS/6.0
Content-Type: text/html
Cache-control: private]