バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWCacheManager

形式

#include <rw/cacheman.h>
RWFile f("file.dat");       // ファイルを作成する
RWCacheManager(&f, 100);    // file.dat に対して 100 バイトのキャッシュを行う

説明

クラス RWCacheManager は、固定長ブロックを RWFile との間でキャッシュします。ブロックサイズは任意で、作成時に設定します。ブロック数も作成時に設定できます。

ファイルへの書き込みは後で行われることがあります。ただちに書き込みを行うには、メンバー関数 flush() を使用します。

持続性

なし

#include <rw/cacheman.h>
#include <rw/rwfile.h>

struct Record {
  int i;
  float f;
  char str[15];
};

main() {
  RWoffset loc;
  RWFile file("file.dat");        // ファイルを作成する

  // 構造体 Record を 20 スロット分使用して、キャッシュを作成する
  RWCacheManager cache(&file, sizeof(Record), 20);

  Record r;
  // ...
  cache.write(loc, &r);
  // ...
  cache.read(loc, &r);
}

公開コンストラクタ

RWCacheManager(RWFile* file, unsigned blocksz,
               unsigned mxblks = 10);

file が指す RWFile にキャッシュを作成します。固定長ブロックのサイズは blocksz で、ブロック数は mxblks で、それぞれ指定します。キャッシュされる合計バイト数が符号なし int の最大値を超える場合、RWCacheManager はキャッシュするブロック数を少なくします。

公開デストラクタ

~RWCacheManager();

待たされている入出力動作を実行し (すなわち、flush() の呼び出し)、割り当てられたメモリーを解放します。

公開メンバー関数

RWBoolean
flush();

まだ実行していない入出力操作を実行します。成功したら TRUE を、失敗したら FALSE を返します。

void
invalidate();

キャッシュを無効にします。

RWBoolean
read(RWoffset locn, void* dat);

RWFile のオフセット locn にあるデータを返します。データは dat が指すバッファに置かれます。このバッファは、キャッシュを作成したときのブロックサイズ以上でなければなりません。操作が成功すれば TRUE を、失敗すれば FALSE を返します。

RWBoolean
write(RWoffset locn, void* dat);

データブロック datRWFile のオフセット locn に書き込みます。書き込むバイト数は、キャッシュを作成したときのブロックサイズで与えます。ディスクへの実際の書き込みは後で行われることがあります。直ちに書き込みを行うには、メンバー関数 flush() を使用します。操作が成功すれば TRUE を、失敗すれば FALSE を返します。