NAME
Lab::Moose::Instrument::Cache - Device caching functionality in Moose::Instrument drivers
VERSION
version 3.920
SYNOPSIS
in your driver:
cache
foobar
=> (
getter
=>
'get_foobar'
);
sub
get_foobar {
my
$self
=
shift
;
return
$self
->cached_foobar(
$self
->query(
command
=> ...));
}
sub
set_foobar {
my
(
$self
,
$value
) =
@_
;
$self
->
write
(
command
=> ...);
$self
->cached_foobar(
$value
);
}
DESCRIPTION
This package exports a new Moose keyword: cache.
Calling cache key => (getter => $getter, isa => $type)
generates the following functions:
cached_key
(accessor)-
Calling
$instr->cached_key()
will return the last stored value from the cache. If the cache entry is empty, use the$getter
method.To update the cache entry, call
$instr->cached_key($value)
. has_cached_key
(predicate)-
Return true if the cache entry holds a value (which is not undef).
clear_cached_key
(clearer)-
Clear the value of the cache entry.
cached_key_builder
(builder)-
Called by
cached_key
if the entry is cleared. This will call the$getter
method. Can be overriden by 'around' method modifier if the$getter
needs special extra arguments.
The isa
argument is optional.
Array cache
Some methods take an additional parameter (e.g. channel number). For this case you can give the index_arg
argument to the cache keyword:
cache
foobar
=> (
isa
=>
'Num'
,
getter
=>
'get_foobar'
,
index_arg
=>
'channel'
);
# Get value from cache.
my
$value
=
$instr
->cached_foobar(
channel
=> 1);
# Store value.
$instr
->cached_foobar(
channel
=> 2,
value
=> 1.234);
# Clear single entry.
$instr
->clear_cached_foobar(
channel
=> 3);
# Clear them all.
$instr
->clear_cached_foobar();
# Check for cache value
if
(
$instr
->has_cached_foobar(
channel
=> 1)) {...}
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by the Lab::Measurement team; in detail:
Copyright 2016 Simon Reinhardt
2017 Andreas K. Huettel, Simon Reinhardt
2018 Simon Reinhardt
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.