Current section

Files

Jump to
nitrogen_core src handlers cache cache_handler.erl
Raw

src/handlers/cache/cache_handler.erl

% vim: sw=4 ts=4 et ft=erlang
% Nitrogen Web Framework for Erlang
% Copyright (c) 2008-2010 Rusty Klophaus
% See MIT-LICENSE for licensing information.
-module (cache_handler).
-include("wf.hrl").
-export ([
get_cached/3,
set_cached/3,
clear/1,
clear_all/0
]).
-callback init( Config :: term(),
State :: term()) -> {ok, State :: term() }.
-callback finish( Config :: term(),
State :: term()) -> {ok, State :: term() }.
-callback get_cached( Key :: term(),
Function :: fun(),
TTL :: infinity | integer(),
Config :: term(),
State :: term()) -> {ok, Value :: any(), State :: term()}.
-callback set_cached( Key :: term(),
Value :: term(),
TTL :: infinity | integer(),
Config :: term(),
State :: term()) -> {ok, State :: term()}.
-callback clear( Key :: term(),
Config :: term(),
State :: term()) -> {ok, State :: term()}.
-callback clear_all( Config :: term(),
State :: term()) -> {ok, State :: term()}.
% @doc get_cached(Key, Function, TTL, State) -> {ok, Value, NewState}
% Return the cache value associated with Key. If it is not found,
% then run the Function, store the resulting value in cache under
% Key, and return the value.
-spec get_cached(Key :: any(),
Function :: function(),
TTL :: integer() | undefined | infinity) -> {ok, term()}.
get_cached(Key, Function, TTL) ->
{ok, _Value} = wf_handler:call(cache_handler, get_cached, [Key, Function, TTL]).
% @doc set_cached(Key, Value, TTL, State) -> {ok, NewState}
% Set the cached value directly without checking if it currently exists. If a
% value already exists for that key, it is replaced.
set_cached(Key, Value, TTL ) ->
ok = wf_handler:call(cache_handler, set_cached, [Key, Value, TTL]).
% @doc Remove a value from cache.
-spec clear(Key :: any()) -> ok.
clear(Key) ->
ok = wf_handler:call(cache_handler, clear, [Key]).
% @doc Clear all values from cache.
-spec clear_all() -> ok.
clear_all() ->
ok = wf_handler:call(cache_handler, clear_all).