Commit | Line | Data |
31a246e4 |
1 | package Tak::Role::Service; |
2 | |
3 | use Moo::Role; |
4 | |
5 | sub start_request { |
6 | my ($self, $req, $type, @args) = @_; |
7 | unless ($type) { |
8 | $req->mistake(request_type => "No request type given"); |
9 | return; |
10 | } |
11 | if (my $meth = $self->can("handle_${type}")) { |
12 | my @result; |
13 | if (eval { @result = $self->$meth(@args); 1 }) { |
14 | $req->success(@result); |
15 | } else { |
16 | if (ref($@) eq 'ARRAY') { |
17 | $req->result(@{$@}); |
18 | } else { |
19 | $req->failure(exception => $@); |
20 | } |
21 | } |
22 | } else { |
23 | $req->mistake(request_type => "Unknown request type ${type}"); |
24 | } |
25 | } |
26 | |
27 | sub receive { } |
28 | |
29 | 1; |