NAME

Jifty::CAS::Store - Abstract class for Jifty's Content-Addressed Storage

DESCRIPTION

This is the abstract base class for a backend store for Jifty::CAS. For more information, see "DESCRIPTION" in Jifty::CAS.

publish DOMAIN NAME CONTENT METADATA

Publishes the given CONTENT at the address DOMAIN and NAME. METADATA is an arbitrary hash; see Jifty::CAS::Blob for more. Returns the key.

_store DOMAIN NAME BLOB

Stores the BLOB (a Jifty::CAS::Blob) in the backend. Returns the key. Subclasses should override this, but it should not be called directly -- use "publish" instead.

key DOMAIN NAME

Returns the most recent key for the given pair of DOMAIN and NAME, or undef if none such exists. Subclasses should override this.

retrieve DOMAIN KEY

Returns a Jifty::CAS::Blob for the given pair of DOMAIN and KEY, or undef if none such exists. Subclasses should override this.

uri DOMAIN NAME

Returns a URL where the given DOMAIN and NAME can be accessed.

serve DOMAIN ARGUMENT ENV

Serves a plack request in ENV, given a DOMAIN and an ARGUMENT, which may wither be a key or a name.

This correctly uses the If-None-Match and Etag headers to send HTTP 304 responses to unchanged content. Additionally, the content_type key in the requested object's metadata is expected to be set and is used for the HTTP response. This method is usually only called by "wrap" in JiftY::CAS, which calls this method as appropriate for requests under /__jifty/cas/.

durable

Returns true if the backing store is durable -- that is, if there is a guarantee that data placed there will be accessible from all processes at all later times.