From: erickson Date: Mon, 5 Feb 2007 19:15:51 +0000 (+0000) Subject: re-factored to support streaming responses X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=bc936dcd03d2c6a9c7635899f788b7e5f5a1fe84;p=Evergreen.git re-factored to support streaming responses git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_0@6881 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm b/Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm index 4679e44fda..1ff6510962 100644 --- a/Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm +++ b/Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm @@ -80,10 +80,22 @@ sub handler { sub run_request { - my( $service, $method, @args ) = @_; - my $ses = OpenSRF::AppSession->create( $service ); - my $data = $ses->request($method, @args)->gather(1); - return wrap_perl($data); + my( $service, $method, @args ) = @_; + my $ses = OpenSRF::AppSession->create( $service ); + #my $data = $ses->request($method, @args)->gather(1); + + my $data = []; + my $req = $ses->request($method, @args); + while( my $resp = $req->recv( timeout => 300 ) ) { + if( $req->failed ) { + push( @$data, $req->failed ); + last; + } + push( @$data, $resp->content ); + } + + return [] if scalar(@$data) == 0; + return wrap_perl($data); } # These should probably be moved out to a library somewhere