new Client/Router/Service arch
[scpubgit/Tak.git] / lib / Tak / Request.pm
1 package Tak::Request;
2
3 use Tak::Result;
4 use Moo;
5
6 has on_progress => (is => 'ro');
7
8 has on_result => (is => 'ro', required => 1);
9
10 sub progress {
11   my ($self, @report) = @_;
12   if (my $cb = $self->on_progress) {
13     $cb->(@report);
14   }
15 }
16
17 sub result {
18   my ($self, $type, @data) = @_;
19   $self->on_result->(Tak::Result->new(type => $type, data => \@data));
20 }
21
22 sub success { shift->result(success => @_) }
23 sub mistake { shift->result(mistake => @_) }
24 sub failure { shift->result(failure => @_) }
25 sub fatal { shift->result(fatal => @_) }
26
27 1;