}
+package OpenSRF::AppSubrequest;
+
+sub respond {
+ my $self = shift;
+ my $resp = shift;
+ push @{$$self{resp}}, $resp;
+}
+
+sub new {
+ return bless({resp => []}, 'OpenSRF::AppSubrequest');
+}
+
+sub responses { @{$_[0]->{resp}} }
+
+sub status {}
+
+
+
1;
sub run {
my $self = shift;
- $self->{code}->($self, @_);
+ my $req = shift;
+
+ unless ( ref($req) and UNIVERSAL::isa($req, 'OpenSRF::AppRequest') ) {
+ unshift @_, $req;
+ $req = OpenSRF::AppSubrequest->new;
+ }
+
+ my $resp = $self->{code}->($self, $req, @_);
+
+ if ( ref($req) and UNIVERSAL::isa($req, 'OpenSRF::AppSubrequest') ) {
+ return $req->responses;
+ }
+
+ return $resp;
}
1;