diff options
| author | fukachan <fukachan> | 2001-02-21 12:44:52 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-02-21 12:44:52 +0000 |
| commit | bb5b6a9afddd999833a54f8f5a84696a9e4f730d (patch) | |
| tree | 3dbce94d43bc7afbba331c6a75cfac69ce074bad /fml/lib/File | |
| parent | 037e787938b2b73ab8ba0831d1cbeb49561b4327 (diff) | |
| download | fml8-bb5b6a9afddd999833a54f8f5a84696a9e4f730d.tar.gz fml8-bb5b6a9afddd999833a54f8f5a84696a9e4f730d.tar.bz2 fml8-bb5b6a9afddd999833a54f8f5a84696a9e4f730d.zip | |
enable to work and clean up ring buffer prototype
Diffstat (limited to 'fml/lib/File')
| -rw-r--r-- | fml/lib/File/RingBuffer.pm | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/fml/lib/File/RingBuffer.pm b/fml/lib/File/RingBuffer.pm index 04faebda..1d94da3a 100644 --- a/fml/lib/File/RingBuffer.pm +++ b/fml/lib/File/RingBuffer.pm @@ -70,36 +70,57 @@ BEGIN {} END {} +# Descriptions: constructor +# forward new() request to superclass (IO::File) +# Arguments: $class_name +# Side Effects: none +# Return Value: class object +# XXX $self is blessed file handle. sub new { my ($self, $args) = @_; - my ($type) = ref($self) || $self; - my $me = {}; - - $me->{ _directory } = $args->{ directory }; - $me->{ _modulus } = $args->{ modulus } || 128; - $me->{ _sequence_file_name } = $args->{ sequence_file_name } || '.seq'; - - return bless $me, $type; + my $me = $self->SUPER::new(); + _take_file_name($me, $args); + $me; } -sub open +sub _take_file_name { - my ($self) = @_; - my $seq_file = $self->{ _directory } ."/". $self->{ _sequence_file_name }; - my $modulus = $self->{ _modulus } || 128; + my ($self, $args) = @_; + my $sequence_file_name = $args->{ sequence_file_name } || '.seq'; + my $modulus = $args->{ modulus } || 128; + use File::Spec; + my $seq_file = + File::Spec->catfile($args->{ directory }, $sequence_file_name); + use File::Sequence; my $sfh = new File::Sequence { sequence_file => $seq_file, modulus => $modulus, }; my $id = $sfh->increment_id; - my $file = $self->{ _directory } ."/". $id; - my $mode = 'w'; + my $file = File::Spec->catfile($args->{ directory }, $id); + ${*$self}{ _file } = $file; +} + + +# Descriptions: open() a file in the buffer +# Arguments: $self +# XXX $self is blessed file handle. +# Side Effects: create ${ *$self } hash to save status information +# Return Value: write file handle (for $file.new.$$) +sub open +{ + my ($self) = @_; + + # temporary file + my $file = ${*$self}{ _file}; - new IO::File $file, $mode; + # real open with $mode + $self->autoflush; + $self->SUPER::open($file, "w") ? $self : undef; } |
