blob: 5779d3e1acb1516208ed47fae2a602a6455bdc84 [file] [log] [blame]
<?php
/**
* File containing the ezcCacheStackReplacementStrategy interface.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Cache
* @version //autogentag//
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @filesource
*/
/**
* Interface to be implemented by stack replacement strategies.
*
* This interface is to be implemented by replacement strategy classes, which
* can be configured to be used by an {@link ezcCacheStack}. The defined
* methods wrap around their counterparts on {@link ezcCacheStackableStorage}.
*
* A replacement strategy must take care about the actual
* storing/restoring/deleting of cache items in the given storage. In addition
* it must take care about keeping the needed {@link ezcCacheStackMetaData} up
* to date and about purging data from the cache storage, if it runs full.
*
* A replacement strategy must define its own meta data class which implements
* {@link ezcCacheStackMetaData}. It must check in each method call, that the
* given $metaData is of correct type. If this is not the case, {@link
* ezcCacheInvalidMetaDataException} must be throwen.
*
* @package Cache
* @version //autogentag//
*/
interface ezcCacheStackReplacementStrategy
{
/**
* Stores the given $itemData in the storage given in $conf.
*
* This method stores the given $itemData assigned to $itemId and
* optionally $itemAttributes in the {@link ezcCacheStackableStorage} given
* in $conf. In case the storage has reached the $itemLimit defined in
* $conf, it must be freed according to $freeRate {@link
* ezcCacheStackStorageConfiguration}.
*
* The freeing of items from the storage must first happen via {@link
* ezcCacheStackableStorage::purge()}, which removes outdated items from
* the storage and returns the affected IDs. In case this does not last to
* free the desired number of items, the replacement strategy specific
* algorithm for freeing takes effect.
*
* After the necessary freeing process has been performed, the item is
* stored in the storage and the $metaData is updated accordingly.
*
* @param ezcCacheStackStorageConfiguration $conf
* @param ezcCacheStackMetaData $metaData
* @param string $itemId
* @param mixed $itemData
* @param array(string=>string) $itemAttributes
* @throws ezcCacheInvalidMetaDataException
* if the given $metaData is not processable by this replacement
* strategy.
*/
public static function store(
ezcCacheStackStorageConfiguration $conf,
ezcCacheStackMetaData $metaData,
$itemId,
$itemData,
$itemAttributes = array()
);
/**
* Restores the data with the given $dataId from the storage given in $conf.
*
* This method takes care of restoring the item with ID $itemId and
* optionally $itemAttributes from the {@link ezcCacheStackableStorage}
* given in $conf. The parameters $itemId, $itemAttributes and $search are
* forwarded to {@link ezcCacheStackableStorage::restore()}, the returned
* value (item data on successful restore, otherwise false) are returned by
* this method.
*
* The method must take care that the restore process is reflected in
* $metaData according to the spcific replacement strategy implementation.
*
* @param ezcCacheStackStorageConfiguration $conf
* @param ezcCacheStackMetaData $metaData
* @param string $itemId
* @param array(string=>string) $itemAttributes
* @param bool $search
*
* @return mixed Restored data or false.
* @throws ezcCacheInvalidMetaDataException
* if the given $metaData is not processable by this replacement
* strategy.
*/
public static function restore(
ezcCacheStackStorageConfiguration $conf,
ezcCacheStackMetaData $metaData,
$itemId,
$itemAttributes = array(),
$search = false
);
/**
* Deletes the data with the given $itemId from the given $storage.
*
* This method takes care about deleting the item identified by $itemId and
* optionally $itemAttributes from the {@link ezcCacheStackableStorage}
* give in $conf. The parameters $itemId, $itemAttributes and $search are
* therefore forwarded to {@link ezcCacheStackableStorage::delete()}. This
* method returns a list of all item IDs that have been deleted by the
* call. The method reflects these changes in $metaData.
*
* @param ezcCacheStackStorageConfiguration $conf
* @param ezcCacheStackMetaData $metaData
* @param string $itemId
* @param array(string=>string) $itemAttributes
* @param bool $search
*
* @return array(string) Deleted item IDs.
* @throws ezcCacheInvalidMetaDataException
* if the given $metaData is not processable by this replacement
* strategy.
*/
public static function delete(
ezcCacheStackStorageConfiguration $conf,
ezcCacheStackMetaData $metaData,
$itemId,
$itemAttributes = array(),
$search = false
);
/**
* Returns a fresh meta data object.
*
* Different replacement strategies will use different meta data classes.
* This method must return a freshly created instance of the meta data
* object used by this meta data.
*
* @return ezcCacheStackMetaData
*/
public static function createMetaData();
}
?>