libcurl
を用いてダウンロードを行うためのストリームクラスです。
[詳解]
#include "nn/nlib/CurlInputStream.h"
libcurl
を用いてダウンロードを行うためのストリームクラスです。
- 説明
- このクラスを用いることで、
libcurl
によって取得したデータをInputStream
のインターフェイスで扱うことができるようになります。 典型的には以下のようなコードを記述して利用することになります。
}
stream.SetUrl("http://www.nintendo.co.jp/");
}
int c;
while ((c = stream.Read()) != -1) {
....
}
}
stream.Close();
- オブジェクトの状態遷移
- オブジェクトの状態遷移の概略は以下のとおりです。
CurlInputStream.h の 18 行目に定義があります。
§ ~CurlInputStream()
nn::nlib::CurlInputStream::~CurlInputStream |
( |
| ) |
|
|
overridevirtualnoexcept |
§ GetCurlError()
nn::nlib::CurlInputStream::GetCurlError |
( |
| ) |
const |
|
noexcept |
§ GetCurlMultiError()
nn::nlib::CurlInputStream::GetCurlMultiError |
( |
| ) |
const |
|
noexcept |
§ GetEasyHandle()
nn::nlib::CurlInputStream::GetEasyHandle |
( |
| ) |
const |
|
noexcept |
§ Init()
nn::nlib::CurlInputStream::Init |
( |
BufferSize |
buffer_size | ) |
|
|
noexcept |
ストリームを初期化します。
- 引数
-
[in] | buffer_size | ストリームが保持するバッファ・サイズ |
- 戻り値
-
0 | 成功した場合 |
EALREADY | 既に初期化済みの場合 |
ENOMEM | メモリの確保に失敗した場合やlibcurl のハンドルの初期化に失敗した場合 |
ENOTSUP | libcurl が古い等の理由でオプションの設定に失敗した場合 |
- 説明
- 引数によりストリームのバッファ・サイズが設定されます。
buffer_size | ストリームのバッファ・サイズ |
BUFFER_SIZE_1X | CURL_MAX_WRITE_SIZE |
BUFFER_SIZE_2X | CURL_MAX_WRITE_SIZE * 2 |
BUFFER_SIZE_3X | CURL_MAX_WRITE_SIZE * 3 |
BUFFER_SIZE_4X | CURL_MAX_WRITE_SIZE * 4 |
- ストリームのバッファを確保した後、
curl_easy_init()
, curl_multi_init()
, curl_multi_add_handle()
によりハンドルが初期化されます。 その後、curl_easy_setopt()
で以下のようなオプションを設定します。
- この関数の実行後、
GetEasyHandle()
によりeasy_handle
を取得しURL等の動作オプションを設定する必要があります。 ただし、CURLOPT_WRITEFUNCTION
, CURLOPT_WRITEDATA
の設定を上書きしてはいけません。
§ SetUrl()
nn::nlib::CurlInputStream::SetUrl |
( |
const char * |
url | ) |
|
|
noexcept |
§ StartDownload()
nn::nlib::CurlInputStream::StartDownload |
( |
| ) |
|
|
noexcept |
- 戻り値
- 成功した場合は
true
- 説明
- この関数を実行することで読み込みを開始します。 この関数を呼ばずに
Read()
でストリームを読んでも問題ありませんが、データを受信するまでブロックします。 読み込みを開始してから実際に読み込むまでに何らかの処理をしたい場合にはこの関数を利用することができます。
- 失敗した場合はストリームにエラーをセットします。
このクラス詳解は次のファイルから抽出されました: