re-factored to support streaming responses
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 5 Feb 2007 19:15:51 +0000 (19:15 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 5 Feb 2007 19:15:51 +0000 (19:15 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_0@6881 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/WWW/XMLRPCGateway.pm

index 4679e44..1ff6510 100644 (file)
@@ -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