NAME

Bric::App::Cache - Object for managing Application-wide global data.

VERSION

$Revision: 1.14 $

DATE

$Date: 2002/08/30 22:13:38 $

SYNOPSIS

use Bric::App::Cache;
my $c = Bric::App::Cache->new;
$c = $c->set($key, $val);
my $val = $c->get($key);

my $time = $c->get_lmu_time;
$c = $c->set_lmu_time;

DESCRIPTION

This module provides a cache object to cache data that needs to persist across all processes and across all requests, through time and space. The cache is cleared on server restart - for more permenant storage see Bric::Util::DBI.

A Bric::App::Cache object is available from Mason components in the global variable $c.

IMPLEMENTATION

This module is implemented as a two-level cache in order to provide the best possible performance.

The first level is provided by Cache::Mmap. Cache::Mmap is a very fast, shared, file-based cache. However, it is also a fixed-size cache that will drop items from the cache when the cache becomes full or the item to be stored is too large.

When an object cannot be stored in the first-level cache it is passed to the second-level. The second-level cache (also known as a backing store) is provided by Cache::Cache. Cache::Cache is quite a bit slower than Cache::Mmap but has the advantage of being variable-sized. As such it grows dynamically and won't refuse to store an object unless it runs out of disk space.

The get() procedure is:

And the set() prodedure is:

NOTE: Under QA_MODE all set()s are sent to the secondary-cache to allow the cache to be debugged. Cache::Mmap lacks the ability to list all keys in the cache which is used by the QA_MODE code.

INTERFACE

Constructors

my $c = Bric::App::Cache->new()

Instantiates a Bric::App::Cache object. No initial values may be passed.

Throws:

Side Effects: NONE.

Notes: NONE.

my $org = Bric::App::Cache->lookup()

Not implemented - not needed.

Throws:

Side Effects: NONE.

Notes: NONE.

Bric::App::Cache->list()

Not implemented - not needed.

Throws:

Side Effects: NONE.

Notes: NONE.

Destructors

$org->DESTROY

Dummy method to prevent wasting time trying to AUTOLOAD DESTROY.

Throws: NONE.

Side Effects: NONE.

Notes: NONE.

Public Class Methods

Bric::App::Cache->list_ids()

Not implemented - not needed.

Throws:

Side Effects: NONE.

Notes: NONE.

Public Class Methods

Bric::App::Cache->clear()

Clears the cache of all stored data.

Throws: NONE.

Side Effects: NONE.

Notes: NONE.

Public Instance Methods

my $val = $c->get($key)

Returns a value for the specified key. Call $c->set($key, $value) to store a value.

Throws:

Side Effects: NONE.

Notes: NONE.

$self = $c->set($key, $value);

Stores $value as referenced by $key. Call $c->get($key) to retrieve $value.

Throws:

Side Effects: NONE.

Notes: NONE.

my $lmu_time = $c->get_lmu_time

Returns the epoch time when a user object was last modified.

Throws:

Side Effects: NONE.

Notes: NONE.

$self = $c->set_lmu_time($lmu_time)

Sets the epoch time when a user object was last modified.

Throws:

Side Effects: NONE.

Notes: NONE.

PRIVATE

Private Class Methods

NONE.

Private Instance Methods

NONE.

Private Functions

$val = _read_backing_store($key)

Reads a value from the backing store. See the IMPLEMENTATION section avove for details.

Throws:

Side Effects: NONE.

Notes: NONE.

_write_backing_store($key, $val)

Writes a value to the backing store. See the IMPLEMENTATION section avove for details.

Throws:

Side Effects: NONE.

Notes: NONE.

NOTES

NONE.

AUTHOR

David Wheeler <david@wheeler.net>

Sam Tregar <stregar@about-inc.com>

SEE ALSO

Bric, Bric::App::Session, Apache::Session

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 286:

=back doesn't take any parameters, but you said =back 4

Around line 481:

=back doesn't take any parameters, but you said =back 4