clone_or_self
[scpubgit/Tak.git] / lib / Tak / Client.pm
index 949e9af..a86ad4d 100644 (file)
@@ -13,7 +13,9 @@ sub curry {
   (ref $self)->new(%$self, curried => [ @{$self->curried}, @curry ]);
 }
 
-sub send {
+sub send { shift->receive(@_) }
+
+sub receive {
   my ($self, @message) = @_;
   $self->service->receive(@{$self->curried}, @message);
 }
@@ -21,10 +23,15 @@ sub send {
 sub start {
   my ($self, $register, @payload) = @_;
   my $req = $self->_new_request($register);
-  $self->service->start_request($req, @{$self->curried}, @payload);
+  $self->start_request($req, @payload);
   return $req;
 }
 
+sub start_request {
+  my ($self, $req, @payload) = @_;
+  $self->service->start_request($req, @{$self->curried}, @payload);
+}
+
 sub request_class { 'Tak::Request' }
 
 sub _new_request {
@@ -47,4 +54,12 @@ sub result_of {
   return $result;
 }
 
+sub clone_or_self {
+  my ($self) = @_;
+  (ref $self)->new(
+    service => $self->service->clone_or_self, 
+    curried => [ @{$self->curried} ],
+  );
+}
+
 1;