Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWCacheManager

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

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);

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