前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1
SFXElasticStreamWriter
可変長バッファ出力ストリームにアクセスするためのクラスです。
#include <SFXElasticStreamWriter.h.hpp>
class SFXElasticStreamWriter : public SFXOutputStream;
SFMTYPEDEFCLASS(SFXElasticStreamWriter)

継承図

SFXElasticStreamWriter クラスの継承図

協調図

SFXElasticStreamWriter クラスの協調図

解説

SFXElasticStreamWriter とは

SFXElasticStreamWriter は、ファイルや TCP ソケットなどの、可変長バッファ ストリームへデータを書き込むときに使います。

SFXBinaryStreamWriterSFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスは、内部的に SFXElasticStreamWriter クラスを使って可変長バッファ ストリームを取得できます。 従って、通常、明示的に SFXElasticStreamWriter クラスを使う必要はありません。

Attach 関数 と Detach 関数

SFXElasticStreamWriter::Attach 関数を使って、書き込むデータの種類に応じて、SFXOutputStream クラスを継承する SFXBinaryStreamWriterSFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスのインスタンスの動作や管理権限を SFXElasticStreamWriter クラスのインスタンスにデリゲート(委譲)することで、可変長バッファ出力ストリームを利用できます。

SFXElasticStreamWriter::Detach 関数はその逆の操作を行います。

デリゲートとは : オブジェクト指向プログラミングにおいて、あるオブジェクトの振る舞いを別のオブジェクトに肩代わりして振る舞ってもらうことです。 日本語では、「委譲」と訳されます。

参照

SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | SFXElasticStreamReader

メンバ

コンストラクタ/デストラクタ
SFXElasticStreamWriter( Void )
SFXElasticStreamWriter クラスのコンストラクタです。
~SFXElasticStreamWriter( Void )
SFXElasticStreamWriter クラスのデストラクタです。
パブリック関数
Void Attach( SFXOutputStreamPtr stream )
SFXOutputStream クラスのインスタンスの動作や管理権限を SFXElasticStreamWriter クラスのインスタンスにデリゲート(委譲)します。
Void Cancel( Void )
ストレージの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
SFXOutputStreamPtr Detach( Void )
SFXElasticStreamWriter クラスのインスタンスの動作と管理権限を SFXOutputStream クラスのインスタンスにデリゲート(委譲)します。
SFCError Flush( Void )
Flush( CallbackSPP spp , VoidPtr reference )
書き込んだデータをフラッシュします。
UInt32 GetWritableSize( Void )
書き込み可能なサイズを取得します。
Void Release( Void )
ストリームを解放します。
SFCError ResetTrigger( Void )
コールバック関数が呼ばれるトリガーをリセットします。
SFCError SetTrigger( UInt32 size )
SetTrigger( VoidConstPtr buffer , UInt32 size )
SetTrigger( SFXBufferConstRef buffer )
コールバック関数が呼ばれるトリガーを設定します。
Bool Triggers( Void )
トリガーによりコールバックが呼ばれたか判定します。
SFCError Write( SFXBufferConstRef buffer )
Write( VoidConstPtr buffer , UInt32 size )
ストリームにデータを書き込みます。
CallbackSPP (SFXStream から継承)
コールバック関数を表す型です。

SFXElasticStreamWriter::SFXElasticStreamWriter
SFXElasticStreamWriter クラスのコンストラクタです。
[ public, explicit ]
SFXElasticStreamWriter(Void);

SFXElasticStreamWriter::~SFXElasticStreamWriter
SFXElasticStreamWriter クラスのデストラクタです。
[ public, virtual ]
virtual ~SFXElasticStreamWriter(Void);

SFXElasticStreamWriter::Attach
SFXOutputStream クラスのインスタンスの動作や管理権限を SFXElasticStreamWriter クラスのインスタンスにデリゲート(委譲)します。
[ public ]
Void Attach(
    SFXOutputStreamPtr stream   // 設定するストリーム
);

解説

SFXElasticStreamWriter::Attach 関数を呼び出す前に設定されていた SFXElasticStreamWriter クラスのインスタンスの内容は破棄されます。

参照

SFXElasticStreamWriter::Detach


SFXElasticStreamWriter::Cancel
ストレージの Cancel 関数を呼び出します。登録したコールバック関数もキャンセルします。
[ public, virtual ]
Void Cancel(Void);

解説

ファイルの場合は SFXFile::Cancel 関数を、TCP ソケットの場合は SFXTCPSocket::Cancel 関数を呼び出します。

また、SFXElasticStreamWriter::Flush 関数によるコールバック関数の登録もキャンセルします。

参照

SFXElasticStreamWriter::Flush | SFXFile::Cancel | SFXTCPSocket::Cancel


SFXElasticStreamWriter::Detach
SFXElasticStreamWriter クラスのインスタンスの動作と管理権限を SFXOutputStream クラスのインスタンスにデリゲート(委譲)します。
[ public ]
SFXOutputStreamPtr Detach(Void);

参照

SFXElasticStreamWriter::Attach


SFXElasticStreamWriter::Flush
書き込んだデータをフラッシュします。
[ public, virtual ]
SFCError Flush(Void);
[ public, virtual ]
SFCError Flush(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数へ渡すデータ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • ストリームが設定されていない、または SFXStreamWriter::Flush 関数が処理中のとき : SFERR_INVALID_STATE
  • 失敗したとき : SFERR_FAILED
  • その他のエラーのとき : AEEError.h で定義されているエラー値

解説

コールバックを登録するタイプとしないタイプの2種類の関数がありますが、ストレージによって使えるタイプに制限があります。

例えば、SFXTCPSocket クラスから得られるストリームはコールバックを登録する必要があります。ファイルストリームは両方のタイプが使えます。

コールバックを使わないタイプの Flush を呼び出すと、データをすぐにフラッシュされます。


SFXElasticStreamWriter::GetWritableSize
書き込み可能なサイズを取得します。
[ public, const ]
UInt32 GetWritableSize(Void);

参照

SFXElasticStreamWriter::Flush


SFXElasticStreamWriter::Release
ストリームを解放します。
[ public ]
Void Release(Void);

SFXElasticStreamWriter::ResetTrigger
コールバック関数が呼ばれるトリガーをリセットします。
[ public, virtual ]
SFCError ResetTrigger(Void);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていない、または SFXElasticStreamWriter::Flush 関数が処理中のとき : SFERR_INVALID_STATE

解説

SFXElasticStreamWriter::SetTrigger 関数で設定したコールバック関数が呼ばれるトリガーをリセットします。

参照

SFXElasticStreamWriter::SetTrigger | SFXElasticStreamWriter::Flush


SFXElasticStreamWriter::SetTrigger
コールバック関数が呼ばれるトリガーを設定します。
[ public, virtual ]
SFCError SetTrigger(
    UInt32 size   // 出力ストリームを介して書き込まれたデータのサイズ
);
[ public, virtual ]
SFCError SetTrigger(
    SFXBufferConstRef buffer   // 出力ストリームを介して書き込まれたバッファ オブジェクト
);
[ public, virtual ]
SFCError SetTrigger(
    VoidConstPtr buffer   // 出力ストリームを介して書き込まれたデータ
    UInt32 size           // 出力ストリームを介して書き込まれたデータのサイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていない、または SFXElasticStreamWriter::Flush 関数が処理中のとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

コールバック関数付きの SFXElasticStreamWriter::Flush 関数を呼ぶと、ストリームのバッファが一杯になったときや、データの終端でコールバック関数が呼び出されます。

SFXElasticStreamWriter::SetTrigger 関数の size パラメーターを指定した場合、その文字数を書き込む毎にコールバック関数が呼び出されます。

buffer パラメーターを指定した場合、それと同じデータを書き込む毎にコールバック関数が呼び出されます。

使用例

改行文字を読み込むたびにコールバック関数を呼び出す方法

SetTrigger("\r\n", 2)

参照

SFXElasticStreamWriter::ResetTrigger | SFXElasticStreamWriter::Flush


SFXElasticStreamWriter::Triggers
トリガーによりコールバックが呼ばれたか判定します。
[ public, virtual, const ]
Bool Triggers(Void);

戻り値

  • SFXElasticStreamWriter::SetTrigger 関数で設定したトリガーによって、コールバック関数が呼び出されたとき : true
  • そうでないとき : false

解説

SFXElasticStreamWriter::Triggers 関数は SFXElasticStreamWriter::Flush 関数で登録したコールバックの中で使います。

参照

SFXElasticStreamWriter::SetTrigger | SFXElasticStreamWriter::ResetTrigger | SFXElasticStreamWriter::Flush


SFXElasticStreamWriter::Write
ストリームにデータを書き込みます。
[ public, virtual ]
SFCError Write(
    SFXBufferConstRef buffer   // 書き込むデータ
);
[ public, virtual ]
SFCError Write(
    VoidConstPtr buffer   // 書き込むデータ
    UInt32 size           // 書き込むデータ サイズ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • ストリームが設定されていないとき : SFERR_INVALID_STATE
  • 引数が不正なとき : SFERR_INVALID_PARAM
  • 書き込めないとき : SFERR_FAILED

解説

書き込むデータ サイズが SFXElasticStreamWriter::GetWritableSize 関数で得られる値より大きい場合、 途中で SFXElasticStreamWriter::Flush 関数を呼び出す必要があります。

参照

SFXElasticStreamWriter::GetWritableSize | SFXElasticStreamWriter::Flush