NAME

Quiq::Hash::Persistent - Persistente Hash-Datenstruktur

BASE CLASS

Quiq::Hash

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.206

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2022 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.