Checking in breakout of the various packages in DBM::Deep::Engine and documentation...
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep / Engine / Sector / Null.pm
1 package DBM::Deep::Engine::Sector::Null;
2
3 use 5.006_000;
4
5 use strict;
6 use warnings FATAL => 'all';
7
8 use base qw( DBM::Deep::Engine::Sector::Data );
9
10 sub type { $_[0]{engine}->SIG_NULL }
11 sub data_length { 0 }
12 sub data { return }
13
14 sub _init {
15     my $self = shift;
16
17     my $engine = $self->engine;
18
19     unless ( $self->offset ) {
20         my $leftover = $self->size - $self->base_size - 1 * $engine->byte_size - 1;
21
22         $self->{offset} = $engine->_request_data_sector( $self->size );
23         $engine->storage->print_at( $self->offset, $self->type ); # Sector type
24         # Skip staleness counter
25         $engine->storage->print_at( $self->offset + $self->base_size,
26             pack( $StP{$engine->byte_size}, 0 ),  # Chain loc
27             pack( $StP{1}, $self->data_length ),  # Data length
28             chr(0) x $leftover,                   # Zero-fill the rest
29         );
30
31         return;
32     }
33 }
34
35 1;
36 __END__