Commit | Line | Data |
36cf3bcb |
1 | package Tak::Remote; |
2 | |
3 | use Moo; |
4 | |
5 | has router => (is => 'ro', required => 1); |
6 | |
7 | has name => (is => 'ro', required => 1); |
8 | |
9 | sub blocking_request { |
10 | my ($self, @payload) = @_; |
11 | local our $Request = $self->router->send_request($self, $self->name, @payload); |
12 | local our $Done; |
13 | local our @Result; |
14 | $self->router->run_until($Done); |
15 | return @Result; |
16 | } |
17 | |
18 | sub send_response { |
19 | my ($self, $tag, @result) = @_; |
20 | { |
21 | our $Request; |
22 | die "Out of order response ${\$Request->tag}, expecting ${tag}" |
23 | if $Request->tag ne $tag; |
24 | } |
25 | our @Result = @result; |
26 | our $Done = 1; |
27 | } |
28 | |
29 | 1; |