NAME

Flux::Out - output stream interface

VERSION

version 1.03

SYNOPSIS

$out->write($item);
$out->write_chunk(\@items);
$out->commit;

DESCRIPTION

Flux::Out is the role which every writing stream must implement.

Consumers must implement write, write_chunk and commit methods.

CONSUMER SYNOPSIS

use Moo;
with "Flux::Out";

sub write {
    my ($self, $item) = @_;
    say "Item: $item";
}

sub write_chunk {
    my ($self, $chunk) = @_;
    say "Item: $_" for @$chunk;
}

sub commit {
    STDOUT->flush;
}

INTERFACE

write($item)

It receives one scalar $item as its argument.

At the implementor's choice, it can process $item immediately or keep it until commit() is called.

Return value semantics is not specified.

write_chunk($chunk)

write_chunk receives an arrayref with items ordered as they would be if write method was used instead.

Return value semantics is not specified.

commit()

commit method can flush cached data, print statistics or do anything neccessary to make sure that writing is completed correctly.

Output stream implementation should make sure that stream is still usable after that.

SEE ALSO

Flux::Storage - role for persistent storages which are also output streams.

Flux::In::Role::Easy - specialization of this role for those who don't want to bother with 3 methods, and want to just implement write().

AUTHOR

Vyacheslav Matyukhin <me@berekuk.ru>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Yandex LLC.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.