KiokuDB::Reference - A symbolic reference to another L<KiokuDB::Entry>.


KiokuDB documentation Contained in the KiokuDB distribution.

Index


Code Index:

NAME

Top

KiokuDB::Reference - A symbolic reference to another KiokuDB::Entry.

SYNOPSIS

Top

    my $ref = KiokuDB::Reference->new(
        id => $some_id,
    );

DESCRIPTION

Top

This object serves as an internal marker to point to entries by UID.

The linker resolves these references by searching the live object set and loading entries from the backend as necessary.

ATTRIBUTES

Top

id

The ID this entry refers to

is_weak

This reference is weak.


KiokuDB documentation Contained in the KiokuDB distribution.

#!/usr/bin/perl

package KiokuDB::Reference;
use Moose;

use namespace::clean -except => 'meta';

with qw(MooseX::Clone);

has id => (
    isa => "Str",
    is  => "rw",
    required => 1,
);

has is_weak => (
    isa => "Bool",
    is  => "rw",
);

sub STORABLE_freeze {
    my ( $self, $cloning ) = @_;


    join(",", $self->id, !!$self->is_weak); # FIXME broken
}

sub STORABLE_thaw {
    my ( $self, $cloning, $serialized ) = @_;

    my ( $id, $weak ) = ( $serialized =~ /^(.*?),(1?)$/ );

    $self->id($id);
    $self->is_weak(1) if $weak;

    return $self;
}

__PACKAGE__->meta->make_immutable;

__PACKAGE__

__END__