clone_or_self
[scpubgit/Tak.git] / lib / Tak / WeakClient.pm
1 package Tak::WeakClient;
2
3 use Moo;
4
5 extends 'Tak::Client';
6
7 has service => (is => 'ro', required => 1, weak_ref => 1);
8
9 sub clone_or_self {
10   my ($self) = @_;
11   my $new = $self->service->clone_or_self;
12   ($new ne $self->service
13     ? 'Tak::Client'
14     : ref($self))->new(service => $new, curried => [ @{$self->curried} ]);
15 }
16     
17
18 1;