4 use Scalar::Util qw(weaken);
7 has services => (is => 'ro', default => sub { {} });
11 $self->register(meta => Tak::MetaService->new(router => $self));
15 my ($self, $req, $target, @payload) = @_;
16 return $req->mistake("Reached router with no target")
18 return $req->failure("Reached router with invalid target ${target}")
19 unless my $next = $self->services->{$target};
20 $next->start_request($req, @payload);
24 my ($self, $target, @payload) = @_;
25 return unless $target;
26 return unless my $next = $self->services->{$target};
27 $next->receive(@payload);
31 my ($self, $name, $service) = @_;
32 $self->services->{$name} = $service;
36 my ($self, $name, $service) = @_;
37 weaken($self->services->{$name} = $service);
41 my ($self, $name) = @_;
42 delete $self->services->{$name}