1 package Tak::Role::Service;
6 my ($self, $req, $type, @payload) = @_;
8 $req->mistake(request_type => "No request type given");
11 if (my $meth = $self->can("handle_${type}")) {
13 if (eval { @result = $self->$meth(@payload); 1 }) {
14 $req->success(@result);
16 if (ref($@) eq 'ARRAY') {
19 $req->failure(exception => $@);
22 } elsif ($meth = $self->can("start_${type}_request")) {
23 $self->$meth($req => @payload);
25 $req->mistake(request_type => "Unknown request type ${type}");
30 my ($self, $type, @payload) = @_;
31 if (my $meth = $self->can("receive_${type}")) {
32 $self->$meth(@payload);