Refactored Sector:: out from under Engine:: and into its own area
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep / Storage / File.pm
index 96862d3..20c90a3 100644 (file)
@@ -9,6 +9,8 @@ use Fcntl qw( :DEFAULT :flock :seek );
 
 use constant DEBUG => 0;
 
+use base 'DBM::Deep::Storage';
+
 =head1 NAME
 
 DBM::Deep::Storage::File
@@ -263,44 +265,6 @@ sub request_space {
     return $loc;
 }
 
-=head2 flush()
-
-This flushes the filehandle. This takes no parameters and returns nothing.
-
-=cut
-
-sub flush {
-    my $self = shift;
-
-    # Flush the filehandle
-    my $old_fh = select $self->{fh};
-    my $old_af = $|; $| = 1; $| = $old_af;
-    select $old_fh;
-
-    return 1;
-}
-
-=head2 is_writable()
-
-This takes no parameters. It returns a boolean saying if this filehandle is
-writable.
-
-Taken from L<http://www.perlmonks.org/?node_id=691054/>.
-
-=cut
-
-sub is_writable {
-    my $self = shift;
-
-    my $fh = $self->{fh};
-    return unless defined $fh;
-    return unless defined fileno $fh;
-    local $\ = '';  # just in case
-    no warnings;    # temporarily disable warnings
-    local $^W;      # temporarily disable warnings
-    return print $fh '';
-}
-
 =head2 copy_stats( $target_filename )
 
 This will take the stats for the current filehandle and apply them to
@@ -328,39 +292,28 @@ sub copy_stats {
     chmod( $perms, $temp_filename );
 }
 
-=head1 LOCKING
-
-This is where the actual locking of the storage medium is performed.
-Nested locking is supported.
-
-B<NOTE>: It is unclear what will happen if a read lock is taken, then
-a write lock is taken as a nested lock, then the write lock is released.
-
-Currently, the only locking method supported is flock(1). This is a
-whole-file lock. In the future, more granular locking may be supported.
-The API for that is unclear right now.
-
-The following methods manage the locking status. In all cases, they take
-a L<DBM::Deep/> object and returns nothing.
-
-=over 4
-
-=item * lock_exclusive( $obj )
-
-Take a lock usable for writing.
-
-=item * lock_shared( $obj )
-
-Take a lock usable for reading.
+sub flush {
+    my $self = shift;
 
-=item * unlock( $obj )
+    # Flush the filehandle
+    my $old_fh = select $self->{fh};
+    my $old_af = $|; $| = 1; $| = $old_af;
+    select $old_fh;
 
-Releases the last lock taken. If this is the outermost lock, then the
-object is actually unlocked.
+    return 1;
+}
 
-=back
+sub is_writable {
+    my $self = shift;
 
-=cut
+    my $fh = $self->{fh};
+    return unless defined $fh;
+    return unless defined fileno $fh;
+    local $\ = '';  # just in case
+    no warnings;    # temporarily disable warnings
+    local $^W;      # temporarily disable warnings
+    return print $fh '';
+}
 
 sub lock_exclusive {
     my $self = shift;
@@ -406,7 +359,7 @@ sub _lock {
                 $self->open;
 
                 #XXX This needs work
-                $obj->{engine}->setup_fh( $obj );
+                $obj->{engine}->setup( $obj );
 
                 flock($self->{fh}, $type); # re-lock