NAME
Quiq::Hash::Persistent - Persistente Hash-Datenstruktur
BASE CLASS
DESCRIPTION
Definition des Konstruktors in einer abgeleiteten Klasse (in diesem Fall ohne Konstruktorargumente):
package MyClass;
use base qw/Quiq::Hash::Persistent/;
sub new {
my $class = shift;
...
return $class->SUPER::new($file,$timeout,sub {
my $class = shift;
...
return $class->Quiq::Hash::new(
...
);
};
}
Die Klasse (hier MyClass) wird von Quiq::Hash::Persistent abgeleitet
Der Konstruktor der Klasse kann eine beliebige Signatur haben
Aus den aktuellen Parametern ergibt sich u.U. der Cache-Dateiname
Der gesamte oder zumindest der "teure" Anteil des Konstruktors wird in der anonymen Subroutine sub{} imlementiert
Die anonyme Subroutine liefert einen Hash der Klasse Quiq::Hash
METHODS
Klassenmethoden
new() - Konstruktor
Synopsis
$h = $class->new($file,$timeout,$sub);
Arguments
- $file
-
Cachedatei, in der die Hash.Datenstruktur persistent gespeichert wird.
- $timeout (Integer oder undef)
-
Dauer in Sekunden, die die Cachdatei gültig ist. Falls
undef
, ist die Cachdatei unbegrenzt lange gültig. - $sub
-
Subroutine, die den zu persistierenden Hash instantiiert.
Returns
Referenz auf Hash-Objekt.
Description
Instantiiere einen Hash aus Datei $file und liefere eine Referenz auf dieses Objekt zurück. Existiert Datei $file nicht oder liegt ihr letzter Änderungszeitpunkt mehr als abs($timeout) Sekunden zurück, rufe $sub auf, um den Hash zu erzeugen und speichere ihn persistent in Datei $file. Der Hash wird um die Komponenten
cacheFile
cacheTimeout
erweitert.
Objektmethoden
cacheFile() - Pfad der Cachedatei
Synopsis
$file = $self->cacheFile;
Returns
Pfad (String)
Description
Liefere den Pfad der Cachedatei.
cacheTimeout() - Cache-Timeout
Synopsis
$timeout = $self->cacheTimeout;
Returns
Anzahl Sekunden (Integer oder undef)
Description
Liefere das für die Cachedatei definierte Timeout.
VERSION
1.222
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.