nlib
|
libcurl
を用いてダウンロードを行うためのストリームクラスです。
[詳解]
#include "nn/nlib/CurlInputStream.h"
公開メンバ関数 | |
CURL * | GetEasyHandle () const noexcept |
libcurl のeasy_handle を返します。 [詳解] | |
CURLcode | GetCurlError () const noexcept |
libcurl のeasy_handle を引数にとる関数で発生したエラーコードを返します。 [詳解] | |
CURLMcode | GetCurlMultiError () const noexcept |
libcurl のmulti_handle を引数にとる関数で発生したエラーコードを返します。 [詳解] | |
CURLcode | SetUrl (const char *url) noexcept |
読み込むURLを設定します。 [詳解] | |
bool | StartDownload () noexcept |
コンストラクタ、デストラクタ、及び初期化 | |
constexpr | CurlInputStream () noexcept |
デフォルトコンストラクタです。実行後Init() による初期化を必要とします。 | |
virtual | ~CurlInputStream () noexcept override |
デストラクタです。 [詳解] | |
errno_t | Init (BufferSize buffer_size) noexcept |
ストリームを初期化します。 [詳解] | |
errno_t | Init () noexcept |
Init(kBufferSize1x) を実行します。 | |
![]() | |
errno_t | GetErrorValue () const noexcept |
エラー値を取得します。 [詳解] | |
size_t | Pos () const noexcept |
ストリーム上の現在位置を返します。 [詳解] | |
uint64_t | Pos64 () const noexcept |
ストリーム上の現在位置を64bit値で返します。 [詳解] | |
bool | IsEos () noexcept |
ストリームを最後まで読み終えている場合true を返します。最後まで読み終えていない場合やエラーが発生している場合はfalse を返します。 [詳解] | |
int | Read () noexcept |
ストリームから1バイトを読み込みます。 [詳解] | |
int | Peek () noexcept |
ストリームを消費せずに次の1バイトを読み込みます。 [詳解] | |
size_t | Skip (size_t nbytes) noexcept |
nbytes を読み飛ばします。 [詳解] | |
size_t | Read (void *ptr, size_t nbytes) noexcept |
ptr で示されるメモリにnbytes 読み込みます。 [詳解] | |
template<size_t N> | |
size_t | Read (nlib_byte_t(&buf)[N]) noexcept |
上記関数のテンプレートオーバーロードです。 | |
bool | Close () noexcept |
ストリームを閉じます。成功した場合にはtrue を返します。 [詳解] | |
bool | Mark (size_t readlimit) noexcept |
現在の読み込み位置にGoBackToMark() で戻ることができるように設定します。 [詳解] | |
bool | GoBackToMark () noexcept |
最後にMark() を実行した読み込み位置に戻ります。 [詳解] | |
bool | IsMarkSupported () const noexcept |
このストリームがMark() とGoBackToMark() をサポートしていればtrue を返します。 | |
operator bool () const | |
オブジェクトが初期化済みで内部でエラーが発生していなければtrue 、発生していればfalse を返します。 | |
constexpr | InputStream () noexcept |
デフォルトコンストラクタです。 派生クラスから呼び出されます。 | |
virtual | ~InputStream () noexcept |
デストラクタです。 派生クラスから呼び出されます。 | |
その他の継承メンバ | |
![]() | |
void | SetBuffer (void *p, size_t nbytes, bool is_mark_supported, bool is_buf_readonly) noexcept |
InputStream が持つバッファを設定します。 [詳解] | |
void | SetError (errno_t e) const noexcept |
InputStream にエラーを設定します。 [詳解] | |
libcurl
を用いてダウンロードを行うためのストリームクラスです。
libcurl
によって取得したデータをInputStream
のインターフェイスで扱うことができるようになります。 典型的には以下のようなコードを記述して利用することになります。 CurlInputStream.h の 31 行目に定義があります。
|
overridevirtualnoexcept |
デストラクタです。
curl_multi_cleanup()
及びcurl_easy_cleanup()
が実行されます。
|
noexcept |
libcurl
のeasy_handle
を引数にとる関数で発生したエラーコードを返します。
CURLcode
型の値libcurl
に起因するエラーでストリームがエラーを返した場合、エラーコードを取得できます。 エラーコードの詳細はlibcurl
のマニュアルを参照してください。
|
noexcept |
libcurl
のmulti_handle
を引数にとる関数で発生したエラーコードを返します。
CURLMcode
型の値libcurl
に起因するエラーでストリームがエラーを返した場合、エラーコードを取得できます。 エラーコードの詳細はlibcurl
のマニュアルを参照してください。
|
noexcept |
|
noexcept |
ストリームを初期化します。
[in] | buffer_size | ストリームが保持するバッファ・サイズ |
0 | 成功した場合 |
EALREADY | 既に初期化済みの場合 |
ENOMEM | メモリの確保に失敗した場合やlibcurl のハンドルの初期化に失敗した場合 |
ENOTSUP | libcurl が古い等の理由でオプションの設定に失敗した場合 |
buffer_size | ストリームのバッファ・サイズ |
---|---|
kBufferSize1x | CURL_MAX_WRITE_SIZE |
kBufferSize2x | CURL_MAX_WRITE_SIZE * 2 |
kBufferSize3x | CURL_MAX_WRITE_SIZE * 3 |
kBufferSize4x | CURL_MAX_WRITE_SIZE * 4 |
curl_easy_init()
, curl_multi_init()
, curl_multi_add_handle()
によりハンドルが初期化されます。 その後、curl_easy_setopt()
で以下のようなオプションを設定します。 オプション名 | |
---|---|
CURLOPT_WRITEFUNCTION | CurlInputStream 内部のコールバック関数 |
CURLOPT_WRITEDATA | CurlInputStream 内部の領域 |
CURLOPT_TIMEOUT | 5 |
CURLOPT_LOW_SPEED_LIMIT | 1024 |
CURLOPT_LOW_SPEED_TIME | 5 |
CURLOPT_FOLLOWLOCATION | 1 |
CURLOPT_MAXREDIRS | 8 |
CURLOPT_ACCEPT_ENCODING | "gzip,deflate" |
GetEasyHandle()
によりeasy_handle
を取得しURL等の動作オプションを設定する必要があります。 ただし、CURLOPT_WRITEFUNCTION
, CURLOPT_WRITEDATA
の設定を上書きしてはいけません。
|
noexcept |
|
noexcept |
true
Read()
でストリームを読んでも問題ありませんが、データを受信するまでブロックします。 読み込みを開始してから実際に読み込むまでに何らかの処理をしたい場合にはこの関数を利用することができます。 © Nintendo Co., Ltd. All rights reserved.