X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FStorage%2FEngine%2FIO%2FAtomicFile.pm;h=5c5e5a7ee9c2da5b3dd65236c80ea4d9ca133189;hb=004bf3ea04d7818116a94bb4b387d8ae1dd10f9a;hp=89fc8cf49dc763f220363c86a2aa0c0bd5bcc56d;hpb=12145c6eb1fafe979d96846a4df4607928918b8c;p=gitmo%2FMooseX-Storage.git diff --git a/lib/MooseX/Storage/Engine/IO/AtomicFile.pm b/lib/MooseX/Storage/Engine/IO/AtomicFile.pm index 89fc8cf..5c5e5a7 100644 --- a/lib/MooseX/Storage/Engine/IO/AtomicFile.pm +++ b/lib/MooseX/Storage/Engine/IO/AtomicFile.pm @@ -2,28 +2,19 @@ package MooseX::Storage::Engine::IO::AtomicFile; use Moose; +use utf8 (); use IO::AtomicFile; -has 'file' => ( - is => 'ro', - isa => 'Str', - required => 1, -); - -sub load { - my ($self) = @_; - # NOTE: - # AtomicFile gives us no real - # benefit when reading, so why - # bother - # - SL - my $fh = IO::File->new($self->file, 'r'); - return do { local $/; <$fh>; }; -} +our $VERSION = '0.28'; +our $AUTHORITY = 'cpan:STEVAN'; + +extends 'MooseX::Storage::Engine::IO::File'; sub store { my ($self, $data) = @_; - my $fh = IO::AtomicFile->new($self->file, 'w'); + my $fh = IO::AtomicFile->new($self->file, 'w') + || confess "Unable to open file (" . $self->file . ") for storing : $!"; + $fh->binmode(':utf8') if utf8::is_utf8($data); print $fh $data; $fh->close() || confess "Could not write atomic file (" . $self->file . ") because: $!"; @@ -37,12 +28,12 @@ __END__ =head1 NAME -MooseX::Storage::Engine::IO::File - -=head1 SYNOPSIS +MooseX::Storage::Engine::IO::AtomicFile - The actually atomic file storage mechanism. =head1 DESCRIPTION +This provides the actual means to store data to a file atomically. + =head1 METHODS =over 4 @@ -77,7 +68,7 @@ Stevan Little Estevan.little@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2007 by Infinity Interactive, Inc. +Copyright 2007-2008 by Infinity Interactive, Inc. L