![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
#include <SFXElasticStreamWriter.h.hpp>
class SFXElasticStreamWriter : public SFXOutputStream;
SFMTYPEDEFCLASS(SFXElasticStreamWriter)


SFXElasticStreamWriter とは
SFXElasticStreamWriter は、ファイルや TCP ソケットなどの、可変長バッファストリームへデータを書き込むときに使います。
SFXBinaryStreamWriter、SFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスは、内部的に SFXElasticStreamWriter クラスを使って可変長バッファストリームを取得できます。 従って、通常、明示的に SFXElasticStreamWriter クラスを使う必要はありません。
Attach 関数 と Detach 関数
SFXElasticStreamWriter::Attach 関数を使って、書き込むデータの種類に応じて、SFXOutputStream クラスを継承する SFXBinaryStreamWriter、SFXAnsiStringStreamWriter、または 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 から継承)
コールバック関数を表す型です。
|
[ public, explicit ] SFXElasticStreamWriter(Void);
[ public, virtual ] virtual ~SFXElasticStreamWriter(Void);
[ public ] Void Attach( SFXOutputStreamPtr stream // 設定するストリーム );
SFXElasticStreamWriter::Attach 関数を呼び出す前に設定されていた SFXElasticStreamWriter クラスのインスタンスの内容は破棄されます。
[ public, virtual ] Void Cancel(Void);
ファイルの場合は SFXFile::Cancel 関数を、TCP ソケットの場合は SFXTCPSocket::Cancel 関数を呼び出します。
また、SFXElasticStreamWriter::Flush 関数によるコールバック関数の登録もキャンセルします。
[ public ] SFXOutputStreamPtr Detach(Void);
[ public, virtual ] SFCError Flush(Void);
[ public, virtual ] SFCError Flush( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数へ渡すデータ );
コールバックを登録するタイプとしないタイプの2種類の関数がありますが、ストレージによって使えるタイプに制限があります。
例えば、SFXTCPSocket クラスから得られるストリームはコールバックを登録する必要があります。ファイルストリームは両方のタイプが使えます。
コールバックを使わないタイプの Flush を呼び出すと、データをすぐにフラッシュされます。
[ public, const ] UInt32 GetWritableSize(Void);
[ public ] Void Release(Void);
[ public, virtual ] SFCError ResetTrigger(Void);
SFXElasticStreamWriter::SetTrigger 関数で設定したコールバック関数が呼ばれるトリガーをリセットします。
[ public, virtual ] SFCError SetTrigger( UInt32 size // 出力ストリームを介して書き込まれたデータのサイズ );
[ public, virtual ] SFCError SetTrigger( SFXBufferConstRef buffer // 出力ストリームを介して書き込まれたバッファ オブジェクト );
[ public, virtual ] SFCError SetTrigger( VoidConstPtr buffer // 出力ストリームを介して書き込まれたデータ UInt32 size // 出力ストリームを介して書き込まれたデータのサイズ );
コールバック関数付きの SFXElasticStreamWriter::Flush 関数を呼ぶと、ストリームのバッファが一杯になったときや、データの終端でコールバック関数が呼び出されます。
SFXElasticStreamWriter::SetTrigger 関数の size パラメータを指定した場合、その文字数を書き込む毎にコールバック関数が呼び出されます。
buffer パラメータを指定した場合、それと同じデータを書き込む毎にコールバック関数が呼び出されます。
改行文字を読み込むたびにコールバック関数を呼び出す方法
SetTrigger("\r\n", 2)
[ public, virtual, const ] Bool Triggers(Void);
SFXElasticStreamWriter::Triggers 関数は SFXElasticStreamWriter::Flush 関数で登録したコールバックの中で使います。
SFXElasticStreamWriter::SetTrigger | SFXElasticStreamWriter::ResetTrigger | SFXElasticStreamWriter::Flush
[ public, virtual ] SFCError Write( SFXBufferConstRef buffer // 書き込むデータ );
[ public, virtual ] SFCError Write( VoidConstPtr buffer // 書き込むデータ UInt32 size // 書き込むデータ サイズ );
書き込むデータ サイズが SFXElasticStreamWriter::GetWritableSize 関数で得られる値より大きい場合、 途中で SFXElasticStreamWriter::Flush 関数を呼び出す必要があります。
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|