nlib
nn::nlib::Base64OutputStream クラスfinal

データをBase64でエンコードして書きこむためのクラスです。 [詳解]

#include "nn/nlib/Base64OutputStream.h"

+ nn::nlib::Base64OutputStream の継承関係図

公開型

enum  NewLineMode {
  NEWLINEMODE_NONE = 0,
  NEWLINEMODE_CRLF,
  NEWLINEMODE_LF
}
 出力されるBase64テキストの改行オプションです。デフォルトはNEWLINEMODE_NONEです。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承公開型
enum  BufferingMode {
  BUFFERINGMODE_BLOCKBUFFERED = 0,
  BUFFERINGMODE_LINEBUFFERED,
  BUFFERINGMODE_UNBUFFERED
}
 OutputStreamのバッファリングモードです。 [詳解]
 

公開メンバ関数

errno_t Init (CharOption char_option) noexcept
 オブジェクトを初期化します。引数についてはBase64Encoder::CharOptionをご覧ください。
 
errno_t Init () noexcept
 Init(Base64Encoder::BASE64_DEFAULT)を実行します。
 
void SetNewLineMode (NewLineMode mode) noexcept
 改行モードを設定します。 [詳解]
 
- 基底クラス nn::nlib::OutputConverterStream に属する継承公開メンバ関数
errno_t SetStream (OutputStream *ostr) noexcept
 ベースとなる出力ストリームを設定します。 [詳解]
 
OutputStreamGetStream () const noexcept
 ベースとなる入力ストリームを取得します。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承公開メンバ関数
size_t Pos () const noexcept
 ストリーム上の現在位置を返します。 [詳解]
 
uint64_t Pos64 () const noexcept
 ストリーム上の現在位置を64bit整数で返します。 [詳解]
 
bool Write (int b) noexcept
 ストリームに1バイトのデータを書き込みます。 [詳解]
 
bool Write (const void *p, size_t n) noexcept
 ストリームにn バイトのデータを書き込みます。 [詳解]
 
bool WriteGather (const nlib_fd_iovec *iov, int iovcnt) noexcept
 複数の非連続のバッファからデータをストリームに書き出します。 [詳解]
 
bool Flush () noexcept
 ストリームをフラッシュします。 [詳解]
 
bool Close () noexcept
 ストリームをフラッシュした後、ストリームを閉じます。成功した場合にはtrueを返します。 [詳解]
 
errno_t GetErrorValue () const noexcept
 エラー値を取得します。 [詳解]
 
BufferingMode GetBufferingMode () const noexcept
 バッファリングモードを取得します。
 
 operator bool () const
 内部でエラーが発生していなければtrueを返します。
 
constexpr OutputStream () noexcept
 デフォルトコンストラクタです。
 
virtual ~OutputStream () noexcept
 デストラクタです。何もしません。
 

その他の継承メンバ

- 基底クラス nn::nlib::OutputStream に属する継承限定公開メンバ関数
void ResetBuffer (void *p, size_t nbytes) noexcept
 OutputStreamが持つバッファを設定します。 [詳解]
 
void SetError (errno_t e) const noexcept
 OutputStreamにエラーを設定します。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承限定公開変数類
BufferingMode m_BufferingMode
 バッファリングモードが格納されています。 [詳解]
 

詳解

データをBase64でエンコードして書きこむためのクラスです。

説明
OutputConverterStreamを基底クラスに持ちます。 OutputStreamとして動作する際にデータをBase64にエンコードします。 InputConverterStream::SetStream()関数で、Base64変換されたデータの書き込み先ストリームを設定して利用します。
Base64OutputStreamがフラッシュされた場合、書き込み先ストリームにBase64変換された文字列が書き込まれた後フラッシュされますが、対応するBase64の文字が確定していないデータは書き込み先ストリームには書き込まれずに保留されます。
Base64OutputStreamをクローズした場合、データが全て書き込まれ書き込み先ストリームをフラッシュした後に、書き込み先ストリームを切り離します。ただし書き込み先ストリームはクローズされません。
OutputStream& os = .....;
Base64OutputStream ostr;
// 初期化
if (nlib_is_error(ostr.Init())) { ERROR; }
// 書き込み先ストリームをセット
if (nlib_is_error(ostr.SetStream(&os))) { ERROR; }
...
// OutputStreamのI/Fを利用したostrに対する書き込み
...
// デストラクタでもClose()するが、エラーの確認ができない。
if (nlib_is_error(ostr.Close())) { ERROR; }
if (nlib_is_error(os.Close())) { ERROR; }
覚え書き
2015-01-26版よりInit()による初期化が必要となっていることに注意してください。
参照
https://www.ietf.org/rfc/rfc2045.txt (RFC2045, Base64)
オブジェクトの状態遷移
オブジェクトの状態遷移の概略は以下のとおりです。
dot_inline_dotgraph_4.png

Base64OutputStream.h11 行目に定義があります。

列挙型メンバ詳解

§ NewLineMode

出力されるBase64テキストの改行オプションです。デフォルトはNEWLINEMODE_NONEです。

列挙値
NEWLINEMODE_NONE 

改行せずにBase64のテキストを出力します。デフォルトです。

NEWLINEMODE_CRLF 

76文字毎にCRLFで改行します。RFC2045で期待される動作となります。

NEWLINEMODE_LF 

76文字毎にLFで改行します。

Base64OutputStream.h15 行目に定義があります。

関数詳解

§ SetNewLineMode()

nn::nlib::Base64OutputStream::SetNewLineMode ( NewLineMode  mode)
noexcept

改行モードを設定します。

引数
[in]mode改行モード

このクラス詳解は次のファイルから抽出されました: