NAME
Lab::Moose::Instrument::Cache - Device caching functionality in Moose::Instrument drivers
VERSION
version 3.690
SYNOPSIS
in your driver:
use Lab::Moose::Instrument::Cache;
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$gettermethod.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_keyif the entry is cleared. This will call the$gettermethod. Can be overriden by 'around' method modifier if the$getterneeds 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) 2019 by the Lab::Measurement team; in detail:
Copyright 2016       Simon Reinhardt
          2017       Andreas K. Huettel, Simon Reinhardt
          2018       Simon ReinhardtThis is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.