only weaken when required
[scpubgit/Tak.git] / lib / Tak / Request.pm
CommitLineData
36cf3bcb 1package Tak::Request;
2
31a246e4 3use Tak::Result;
36cf3bcb 4use Moo;
5
31a246e4 6has on_progress => (is => 'ro');
36cf3bcb 7
31a246e4 8has on_result => (is => 'ro', required => 1);
36cf3bcb 9
934a93db 10has is_done => (is => 'rw', default => sub { 0 });
11
31a246e4 12sub progress {
13 my ($self, @report) = @_;
14 if (my $cb = $self->on_progress) {
15 $cb->(@report);
16 }
17}
ca30c15e 18
31a246e4 19sub result {
20 my ($self, $type, @data) = @_;
934a93db 21 $self->is_done(1);
31a246e4 22 $self->on_result->(Tak::Result->new(type => $type, data => \@data));
36cf3bcb 23}
24
77bf1d9b 25sub flatten {
26 my ($self) = @_;
27 return ($self->type, @{$self->data});
28}
29
31a246e4 30sub success { shift->result(success => @_) }
31sub mistake { shift->result(mistake => @_) }
32sub failure { shift->result(failure => @_) }
33sub fatal { shift->result(fatal => @_) }
34
36cf3bcb 351;