new Client/Router/Service arch
[scpubgit/Tak.git] / lib / Tak / Request.pm
index 2ba8262..342ddba 100644 (file)
@@ -1,16 +1,27 @@
 package Tak::Request;
 
+use Tak::Result;
 use Moo;
 
-has tag => (is => 'ro', required => 1);
+has on_progress => (is => 'ro');
 
-has respond_to => (is => 'ro', required => 1, weak_ref => 1);
+has on_result => (is => 'ro', required => 1);
 
-has respond_with => (is => 'ro', required => 1);
+sub progress {
+  my ($self, @report) = @_;
+  if (my $cb = $self->on_progress) {
+    $cb->(@report);
+  }
+}
 
-sub respond {
-  my $self = shift;
-  $self->respond_to->${\$self->respond_with}($self->tag => @_);
+sub result {
+  my ($self, $type, @data) = @_;
+  $self->on_result->(Tak::Result->new(type => $type, data => \@data));
 }
 
+sub success { shift->result(success => @_) }
+sub mistake { shift->result(mistake => @_) }
+sub failure { shift->result(failure => @_) }
+sub fatal { shift->result(fatal => @_) }
+
 1;