Alvis-Pipeline
view release on metacpan or search on metacpan
lib/Alvis/Pipeline/Read.pm view on Meta::CPAN
or die "can't create new file '$filename': $!";
binmode $f2, ":utf8";
$f2->print($doc) or die "can't write '$filename': $!";
$f2->close() or die "can't close '$filename': $!";
$this->_write_and_unlock($dir, $fh, $lastread, $lastwrite);
}
# A sequence file called "seq" is maintained in the spool directory,
# and is always locked when read and rewritten. The invariant it
# preserves between lock-read-write operations is that it contains two
# numbers, space-serarate, followed by a newline. The first number is
# that of the last document read from the spool directory. The second
# number is that of the last document written to the spool directory,
# or zero if no document has yet been written. If the two numbers are
# equal, there are no documents available to be read.
#
# _lock_and_read() and _write_and_unlock() together implement safe
# maintenance of the sequence file. The former returns a filehandle,
# locked; it is the caller's responsibility to unlock the returned
# filehandle using _write_and_unlock(), like this:
# ($fh, $lastread, $lastwrite) = $this->_lock_and_read($dir);
# # Do some stuff
# $this->_write_and_unlock($dir, $fh, $lastread, $lastwrite);
#
sub _lock_and_read {
my $this = shift();
my($dir) = @_;
my $seqfile = "$dir/seq";
( run in 0.871 second using v1.01-cache-2.11-cpan-49f99fa48dc )