CRIミドルウェアリファレンスマニュアル : SJ

定数

[メニュー]

SJ_LIN_~
データライン

解説

チャンクを供給するラインを意味します。

定数 | 説明
--- | ---
SJ_LIN_DATA | データライン（有効なデータを取り出すための識別子）
SJ_LIN_FREE | フリーライン（使用済みデータを取り出すための識別子）

[メニュー]

SJ_ERR_~
エラーコード

解説

SJ_ERR_OKの値は０で、その他のエラーコードは負の値となります。

定数 | 説明
--- | ---
SJ_ERR_OK | 正常終了
SJ_ERR_FATAL | 致命的なエラー（通常起きない）
SJ_ERR_INTERNAL | 内部エラー（通常起きない）
SJ_ERR_PRM | パラメータエラー

[メニュー]

SJUNI_MODE_~
結合モード

解説

汎用型ストリームジョイントを生成する時のパラメータです。SJ_PutChunk関数でデータチャンクを供給したときに結合するか否かを決めます。

定数 | 説明
--- | ---
SJUNI_MODE_SEPA | データチャンクを結合しない
SJUNI_MODE_JOIN | データチャンクを結合する

処理マクロ

[メニュー]

SJUNI_CALC_WORK
作業領域の計算

書式
int SJUNI_CALC_WORK(nck);
入力

nck ： チャンク数

出力

なし

戻り値

作業領域の大きさ [byte]

説明

汎用型ストリームジョイントの作業領域の大きさを計算します。

データ型

[メニュー]

UUID
ライブラリ識別子

解説

空間的にも時間的にも一意に定義されるライブラリ識別子。Visual C++に付属のUUIDGEN.EXEなどを実行するとコードが得られるので、これを以下のメンバーに従って各ライブラリ内で定義しています。

メンバー | 型名 | 説明
--- | --- | ---
Data1 | Uint32 | ID1
Data2 | Uint16 | ID2
Data3 | Uint16 | ID3
Data4[8] | Uint8 | ID4

用例

C:\>uuidgen

211b2800-a6a9-11d1-8f3f-0060089448bc

#define SmD_LID { \

0x211b2800, 0xa6a9, 0x11d1, 0x8f, 0x3f, 0x00, 0x60, 0x08, 0x94, 0x48, 0xbc\

}\

[メニュー]

SJ
ストリームジョイントハンドル

解説 ストリームジョイントを制御するためのハンドルです。

[メニュー]

SJCK
データチャンク

解説

SJを用いてデータを制御する際に使用する構造体。

メンバー | 型名 | 説明
--- | --- | ---
data | Sint8 * | 開始アドレス
len | Sint32 | バイト数

関数

[メニュー]

SJ_Destroy
ストリームジョイントの消去

書式
void SJ_Destroy(SJ sj);
入力

sj ：ストリームジョイント

出力

なし

戻り値

なし

説明

ストリームジョイントを消去する。

[メニュー]

SJ_Reset
ストリームジョイントのリセット

書式
void SJ_Reset(SJ sj);
入力

sj ：ストリームジョイント

出力

なし

戻り値

なし

説明

ストリームジョイントをリセットする。

[メニュー]

SJ_GetChunk
データチャンクの取得

書式
void SJ_GetChunk(SJ sj, Sint32 id, Sint32 nbyte, SJCK *ck);
入力

sj ：ストリームジョイント

id ：チャンク入出力ID(SJ_LIN_DATA／SJ_LIN_FREE)

nbyte ：要求データ量(単位：バイト)

出力

ck ：データチャンク(データの先頭アドレス／サイズ)

戻り値

なし

説明

バッファに対して書き込みや読み出しを行う時に、ストリームジョイントから読み書き可能な領域(データチャンク)を取得する。

[メニュー]

SJ_UngetChunk
データチャンクを戻す

書式
void SJ_UngetChunk(SJ sj, Sint32 id, SJCK *ck);
入力

sj ：ストリームジョイント

id ：チャンク入出力ID(SJ_LIN_DATA／SJ_LIN_FREE)

ck ：データチャンク(データの先頭アドレス／サイズ)

出力

なし

戻り値

なし

説明

取得したデータチャンクに対して、書き込みや読み出しを実際に行えなかった時に、読み書きできなかった領域(データチャンク)をストリームジョイントに戻す。

[メニュー]

SJ_PutChunk
データチャンクを渡す

書式
void SJ_PutChunk(SJ sj, Sint32 id, SJCK *ck);
入力

sj ：ストリームジョイント

id ：チャンク入出力ID(SJ_LIN_DATA／SJ_LIN_FREE)

ck ：データチャンク(データの先頭アドレス／サイズ)

出力

なし

戻り値

なし

説明

取得したデータチャンクに対して、書き込みや読み出しを実際に行った時に、読み書きできた領域(データチャンク)をストリームジョイントに渡す。

[メニュー]

SJ_GetNumData
読み書き可能なデータ容量の取得

書式
Sint32 SJ_GetNumData(SJ sj, Sint32 id);
入力

sj ：ストリームジョイント

id ：チャンク入出力ID(SJ_LIN_DATA／SJ_LIN_FREE)

出力

なし

戻り値

読み書き可能なデータ容量(単位：バイト)

・書き込む場合：空き容量

・読み出す場合：データ容量

説明

ストリームジョイントにデータを書き込む場合は、バッファの空き容量を取得し、読み出す場合は、バッファのデータ容量を取得する。

[メニュー]

SJ_GetUuid
ストリームジョイントUUIDの取得

書式
UUID *SJ_GetUuid(SJ sj);
入力

sj ：ストリームジョイント

出力

なし

戻り値

ストリームジョイントのUUID

説明

ストリームジョイントUUIDを取得する。

[メニュー]

SJ_EntryErrFunc
エラー処理関数の登録

書式
void SJ_EntryErrFunc(SJ sj, void (*func)(void *obj, Sint32 ecode), void *obj);
入力

sj ：ストリームジョイント

func：エラー発生時に呼び出される関数

obj ：func関数の第1引数

出力

なし

戻り値

なし

説明

エラーが発生した時に呼び出される関数を登録する。

funcにNULLを設定すると、エラー処理関数が未登録になる。

[メニュー]

SJ_SplitChunk
データチャンクの分解

書式
void SJ_SplitChunk(SJCK *ck, Sint32 nbyte, SJCK *ck1, SJCK *ck2);
入力

ck ：分解対象となるデータチャンク

nbyte ：ck1 のサイズ(単位：バイト)

出力

ck1 ：分解された前半のデータチャンク

ck2 ：分解された後半のデータチャンク

戻り値

データチャンクck2のサイズ(単位：バイト)

説明

データチャンクckを２つのデータチャンクck1とck2に分解する。

ck1は、nbyte の長さになる。ck1のサイズがnbyteに満たない場合は分解されず、ck1にckが代入され、ck2のサイズは０となる。ck1とckは、同じものを指定しても良い。

用例

SJ_SplitChunk(&ck, 100, &ck, &ck2);

[メニュー]

SJRBF_Init
初期化

書式
void SJRBF_Init(void);
入力

なし

出力

なし

戻り値

なし

説明

リングバッファタイプのストリームジョイントを初期化する。

[メニュー]

SJRBF_Create
ストリームジョイントの生成

書式
SJ SJRBF_Create(Sint8 *buf, Sint32 bsize, Sint32 xsize);
入力

buf ：リングバッファ

bsize ：リングバッファのサイズ(単位：バイト)

xsize ：エキストラバッファサイズ(単位：バイト)

出力

なし

戻り値

ストリームジョイント

説明

リングバッファタイプのストリームジョイントを生成する。

引数bufには、bsize＋xsizeで確保したバッファを指定します。

[メニュー]

SJMEM_Init
初期化

書式
void SJMEM_Init(void);
入力

なし

出力

なし

戻り値

なし

説明

メモリタイプのストリームジョイントを初期化する。

[メニュー]

SJMEM_Create
ストリームジョイントの生成

書式
SJ SJMEM_Create(Sint8 *data, Sint32 bsize);
入力

data ：データ領域

bsize ：データサイズ(単位：バイト)

出力

なし

戻り値

ストリームジョイント

説明

メモリタイプのストリームジョイントを生成する。

[メニュー]

SJUNI_Init
初期化

書式
void SJUNI_Init(void);
入力

なし

出力

なし

戻り値

なし

説明

汎用タイプのストリームジョイントを初期化する。

[メニュー]

SJUNI_Create
ストリームジョイントの生成

書式
SJ SJUNI_Create(Sint32 mode, Sint8 *work, Sint32 wksize);
入力

mode ：結合モード (SJUNI_MODE_SEPA, SJUNI_MODE_JOIN)

work ：作業領域

wksize ：作業領域のサイズ

出力

なし

戻り値

ストリームジョイント

説明

汎用タイプのストリームジョイントを生成する。

データチャンクを分離したまま扱う場合は、SJUNI_MODE_SEPAを指定し、データチャンクを結合する場合は、SJUNI_MODE_JOINを指定する。

ストリームジョイントの扱う最大データチャンク数より作業領域を確保し、workとwksizeに引数として渡す。

用例

#define MAX_NCK (256)

Sint8 work[SJUNI_CALC_WORK(MAX_NCK)];

sj = SJUNI_Create(SJUNI_MODE_SEPA, work, sizeof(work));

Copyright (c) 2001-2006 CRI Middleware Co.,LTD.