1 package Tak::MetaService;
6 with 'Tak::Role::Service';
8 has router => (is => 'ro', required => 1, weak_ref => 1);
17 return "Already have ${name}" if $self->router->services->{$name};
18 $self->handle_register(@_);
22 my ($self, $name, $class, %args) = @_;
23 (my $file = $class) =~ s/::/\//g;
25 if (my $expose = delete $args{expose}) {
26 my $client = Tak::WeakClient->new(service => $self->router);
27 foreach my $name (%$expose) {
28 $args{$name} = $client->curry(@{$expose->{$name}});
31 my $new = $class->new(\%args);
32 $self->router->register($name => $new);
33 return "Registered ${name}";