Author: sparky
Date: Fri Oct  9 18:29:30 2009
New Revision: 10738

Modified:
   toys/rsget.pl/RSGet/Dispatch.pm
Log:
- added max_slots option


Modified: toys/rsget.pl/RSGet/Dispatch.pm
==============================================================================
--- toys/rsget.pl/RSGet/Dispatch.pm     (original)
+++ toys/rsget.pl/RSGet/Dispatch.pm     Fri Oct  9 18:29:30 2009
@@ -5,6 +5,10 @@
 use RSGet::Tools;
 set_rev qq$Id$;
 
+def_settings(
+       max_slots => [ "Number of slots (per IP) to use if getter has no 
limitation.", 8, qr/0*[1-9]\d*/ ],
+);
+
 our %downloading;
 our %checking;
 our %resolving;
@@ -105,6 +109,20 @@
        RSGet::FileList::update();
 }
 
+sub get_slots
+{
+       my $cmd = shift;
+       my $suggested = shift;
+       return setting( "max_slots" ) if $cmd eq "check";
+       unless ( defined $suggested ) {
+               return $cmd eq "get" ? 1 : 5;
+       }
+       return 0 + $suggested if $suggested =~ /^\d+$/;
+       return setting( "max_slots" ) if lc $suggested eq "max";
+       warn "Invalid slots declaration: $suggested\n" if verbose( 1 );
+       return 1;
+}
+
 sub run
 {
        my ( $cmd, $uri, $getter, $options ) = @_;
@@ -118,7 +136,7 @@
        return $w if defined $w;
 
        my $pkg = $getter->{pkg};
-       my $outif = find_free_if( $pkg, $working, ($cmd eq "get" ? 
($getter->{slots} || 1) : 5) );
+       my $outif = find_free_if( $pkg, $working, get_slots( $cmd, 
$getter->{slots} ) );
        return unless defined $outif;
 
        my $obj = RSGet::Get::new( $pkg, $cmd, $uri, $options, $outif );
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to