前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXStreamWriter
書き込み用ストリームにアクセスするためのクラスです。
#include <SFXStreamWriter.h.hpp>
class SFXStreamWriter : public SFXOutputStream;
SFMTYPEDEFCLASS(SFXStreamWriter)

継承図

SFXStreamWriter クラスの継承図

協調図

SFXStreamWriter クラスの協調図

解説

SFXStreamWriter クラスは、 ストレージストリームへデータを書き込むときに使います。

書き込むデータの種類に応じて、 SFXStreamWriter クラスを継承する SFXBinaryStreamWriter / SFXAnsiStringStreamWriter / SFXWideStringStreamWriter クラスのいずれかを使います。

可変長バッファストリームの場合は、 内部で SFXElasticStreamWriter クラスが利用されますが、 開発者はこれについて意識する必要はありません。

参照

SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | SFXElasticStreamWriter | SFXStreamReader | ストリーム | ストレージ

メンバ

コンストラクタ/デストラクタ
SFXStreamWriter( Void )
SFXStreamWriter クラスのコンストラクタです。
パブリック関数
Void Attach( SFXOutputStreamPtr stream )
このストリームに指定されたストリームを結び付けます。
Void Cancel( Void )
ストリームへの書き込みをキャンセルします。
SFXOutputStreamPtr Detach( Void )
このストリームに結び付けられているストリームを切り離します。
SFCError Flush( Void )
ストリームのデータをストレージに書き込みます。
SFCError Flush( CallbackSPP spp , VoidPtr reference )
ストリームのデータをストレージに書き込みます。
UInt32 GetWritableSize( Void )
ストリームに書き込み可能なデータサイズを取得します。[単位: バイト]
Void Release( Void )
ストリームを解放します。
SFCError ResetTrigger( Void )
トリガー(コールバック関数が呼ばれるタイミング)をリセットします。
SFCError SetTrigger( UInt32 size )
トリガー(コールバック関数が呼ばれるタイミング)を設定します。
SFCError SetTrigger( SFXBufferConstRef buffer )
トリガー(コールバック関数が呼ばれるタイミング)を設定します。
SFCError SetTrigger( VoidConstPtr buffer , UInt32 size )
トリガー(コールバック関数が呼ばれるタイミング)を設定します。
Bool Triggers( Void )
トリガーによりコールバック関数が呼び出されたか判定します。
SFCError Write( SFXBufferConstRef buffer )
ストリームにデータを書き込みます。
SFCError Write( VoidConstPtr buffer , UInt32 size )
ストリームにデータを書き込みます。
CallbackSPP (SFXStream から継承)
コールバック関数を表す型です。

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

解説

特に何も行いません。


SFXStreamWriter::Attach
このストリームに指定されたストリームを結び付けます。
[ public ]
Void Attach(
    SFXOutputStreamPtr stream   // 設定するストリーム
);

解説

この関数は、このストリームに指定されたストリームを結び付けます。

この関数を呼び出す前にこのストリームに設定されていたストリームは破棄されます。

参照

SFXStreamWriter::Detach


SFXStreamWriter::Cancel
ストリームへの書き込みをキャンセルします。
[ public, virtual ]
Void Cancel(Void);

解説

この関数は、 このストリームからへの書き込みをキャンセルします。

具体的には、下記の処理を内部で行います。

  1. このストリームに関連付けられたストレージの Cancel 関数を呼び出します。

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

  2. SFXStreamWriter::Flush 関数による、 このストリームについてのコールバック関数の登録をキャンセルします。

[Note] 注意
この関数は、内部的に SFXStreamWriter::Release 関数から呼び出されます。

参照

SFXStreamWriter::Release | SFXStreamWriter::Flush | SFXFile::Cancel | SFXTCPSocket::Cancel


SFXStreamWriter::Detach
このストリームに結び付けられているストリームを切り離します。
[ public ]
SFXOutputStreamPtr Detach(Void);

戻り値

このストリームに結び付けられていたストリーム

解説

この関数を呼び出した後、 このストリームにはストリームが設定されていない状態になります。

参照

SFXStreamWriter::Attach


SFXStreamWriter::Flush
ストリームのデータをストレージに書き込みます。
[ public, virtual ]
SFCError Flush(Void);
[ public, virtual ]
SFCError Flush(
    CallbackSPP spp     // コールバック関数
    VoidPtr reference   // コールバック関数に渡すデータ(参照値)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ストリームが設定されていない、 または 既にこの関数を呼び出してコールバックを待っているとき: SFERR_INVALID_STATE
  • 失敗したとき: SFERR_FAILED または AEEError.h で定義されるエラー値

解説

この関数は、 ストリームバッファ内のデータをストリームに関連付けられたストレージに書き込みます。

この関数には、コールバック関数を登録するタイプと登録しないタイプがあります。 利用可能なタイプはストレージの種類に依存します。

例えば、SFXTCPSocket クラスから得られるストリームでは、 コールバック関数を登録するタイプだけが利用可能です。 一方、SFXFile クラスから得られるストリームでは、 両方のタイプが使用できます。

コールバック関数を登録する場合、 ストレージから内部バッファへのデータ書き込みが完了したタイミングでコールバック関数が呼び出されます。 データ書き込み時のエラーは、コールバック関数の第 1 引数に渡されます。 なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。

コールバック関数を登録しないタイプの場合、 この関数を呼び出すと、内部バッファのデータはすぐにストレージに書き込まれます。

[Tip] Tip
SFXStreamWriter::Write 関数を呼び出すことにより、 ストリームバッファにデータを書き込みます。

参照

SFXStreamWriter::Write | SFXStreamWriter::SetTrigger | ストリームバッファ | ストレージ


SFXStreamWriter::GetWritableSize
ストリームに書き込み可能なデータサイズを取得します。[単位: バイト]
[ public, virtual, const ]
UInt32 GetWritableSize(Void);

戻り値

ストリームバッファに書き込み可能なデータサイズ[単位: バイト]

解説

この関数は、 ストリームバッファに書き込み可能なデータサイズを取得します。

書き込むデータサイズがこの関数で得られる値より大きい場合は、 書き込むデータを複数個に分割し、 SFXStreamWriter::Write 関数と SFXStreamWriter::Flush 関数を複数回呼び出す必要があります。

[Note] 注意
ストリームバッファの物理的サイズは、ストレージクラスの GetStreamReader 関数の size 引数に指定します。

参照

SFXStreamWriter::Write | SFXStreamWriter::Flush | ストリームバッファ | ストレージ


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

解説

この関数は、 このストリームへの書き込みをキャンセルし、ストリームを解放します。

[Note] 注意

この関数は、ストリームのデストラクタから呼び出されます。

また、SFXStreamWriter::Cancel 関数を呼び出して、 このストリームからの書き込みをキャンセルします。

参照

SFXStreamWriter::Cancel


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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ストリームが設定されていない、 または 既に SFXStreamWriter::Flush 関数を呼び出してコールバックを待っているとき: SFERR_INVALID_STATE

解説

この関数は、 SFXStreamWriter::SetTrigger 関数で設定したトリガー(コールバック関数が呼ばれるタイミング)をリセットします。

参照

SFXStreamWriter::SetTrigger | SFXStreamWriter::Triggers | SFXStreamWriter::Flush


SFXStreamWriter::SetTrigger
トリガー(コールバック関数が呼ばれるタイミング)を設定します。
[ public, virtual ]
SFCError SetTrigger(
    UInt32 size   // トリガーとなるサイズ
);
[ public, virtual ]
SFCError SetTrigger(
    SFXBufferConstRef buffer   // トリガーとなるデータ
);
[ public, virtual ]
SFCError SetTrigger(
    VoidConstPtr buffer   // トリガーとなるデータ
    UInt32 size           // トリガーとなるデータのサイズ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ストリームが設定されていない、 または SFXStreamWriter::Flush 関数によりコールバック関数が登録された状態であるとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

SFXStreamWriter::Flush 関数で登録されたコールバック関数は、 ストリームバッファ内のデータをこのストリームに設定されたストレージに書き込んだときに呼び出されます。

この関数は、これ以外のタイミングでコールバック関数を呼び出すためのトリガーを設定します。

size 引数だけを指定した場合は、 そのサイズのデータを書き込む毎にコールバック関数が呼び出されます。

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

使用例

改行文字を書き込む毎にコールバック関数を呼び出す方法は、以下の通りです。

SetTrigger("\r\n", 2);

参照

SFXStreamWriter::ResetTrigger | SFXStreamWriter::Triggers | SFXStreamWriter::Flush


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

戻り値

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

解説

この関数は、 SFXStreamWriter::SetTrigger 関数で設定したトリガーによって、 コールバック関数が呼び出されたか判定します。

[Tip] Tip
SFXStreamWriter::Flush 関数で登録したコールバック関数の中で使います。

参照

SFXStreamWriter::SetTrigger | SFXStreamWriter::ResetTrigger | SFXStreamWriter::Flush


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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ストリームが設定されていないとき: SFERR_INVALID_STATE
  • ストリームバッファと buffer 引数のメモリ領域が共通部分を持つとき: SFERR_INVALID_PARAM
  • buffer 引数が null、size 引数が 0 以下、または buffer 引数(size 引数)のサイズが SFXStreamWriter::GetWritableSize 関数の戻り値よりも大きいとき: SFERR_FAILED

解説

この関数は、 buffer 引数のデータをストリームバッファに書き込みます。

[Note] 注意
ストリームバッファの物理的サイズは、ストレージクラスの GetStreamWriter 関数の size 引数に指定します。
[Caution] 注意

buffer 引数(size 引数)のサイズが SFXStreamWriter::GetWritableSize 関数の戻り値より大きい場合、 SFERR_FAILED を返します。

ストリームバッファが buffer 引数のメモリ領域の一部を含む場合は、 SFERR_INVALID_PARAM を返します。

[Tip] Tip
SFXStreamWriter::Flush 関数を呼び出すことにより、 ストリームバッファ内のデータはストリームに関連付けられたストレージに書き込まれ、 ストリームバッファは空になります。

参照

SFXStreamWriter::GetWritableSize | SFXStreamWriter::Flush | ストリームバッファ | ストレージ