Author: sparky
Date: Sat Jun 26 01:31:12 2010
New Revision: 11576

Modified:
   toys/rsget.pl/RSGet/Dispatch.pm
   toys/rsget.pl/RSGet/FileList.pm
   toys/rsget.pl/RSGet/Get.pm
   toys/rsget.pl/RSGet/Processor.pm
Log:
- added DELAY() function, still somewhat unfinished


Modified: toys/rsget.pl/RSGet/Dispatch.pm
==============================================================================
--- toys/rsget.pl/RSGet/Dispatch.pm     (original)
+++ toys/rsget.pl/RSGet/Dispatch.pm     Sat Jun 26 01:31:12 2010
@@ -152,6 +152,14 @@
        my ( $cmd, $uri, $getter, $options ) = @_;
        my $class = $getter->{class};
 
+       if ( $options->{delay} ) {
+               if ( not $options->{error} or not $options->{error} =~ 
/^Delayed until/ ) {
+                       delete $options->{delay};
+               } elsif ( $options->{delay} < time ) {
+                       delete $options->{delay};
+                       delete $options->{error};
+               }
+       }
        return if $options->{error};
 
        my $working = $working{ $cmd };
@@ -191,6 +199,7 @@
 {
        my $getlist = shift;
 
+       my $time = shift;
        my %num_by_pkg;
        my %all_uris;
        my $to_dl = 0;
@@ -216,7 +225,7 @@
                                if ( my $obj = $downloading{$uri} ) {
                                        $obj->{_abort} = "Stopped";
                                }
-                               next;
+                               next unless $opts->{delay};
                        }
                        $all_uris{ $uri } = 1;
                        my $pkg = $getter->{pkg};

Modified: toys/rsget.pl/RSGet/FileList.pm
==============================================================================
--- toys/rsget.pl/RSGet/FileList.pm     (original)
+++ toys/rsget.pl/RSGet/FileList.pm     Sat Jun 26 01:31:12 2010
@@ -344,7 +344,7 @@
                my $all_error = 1;
                foreach my $uri ( keys %decoded ) {
                        my $options = $decoded{ $uri }->[1];
-                       unless ( $options->{error} ) {
+                       if ( not $options->{error} or $options->{delay} ) {
                                $all_error = 0;
                                last;
                        }

Modified: toys/rsget.pl/RSGet/Get.pm
==============================================================================
--- toys/rsget.pl/RSGet/Get.pm  (original)
+++ toys/rsget.pl/RSGet/Get.pm  Sat Jun 26 01:31:12 2010
@@ -263,6 +263,20 @@
        return $self->wait( \&start, - irand( 60, 300 ), $msg, "multi" );
 }
 
+sub delay
+{
+       my $self = shift;
+       my $time = shift;
+       my $msg = shift;
+       $time = abs $time;
+       my $until = $time + time;
+       $msg = "Delayed until " . localtime( $until ) . ": " . $msg;
+
+       $self->print( $msg ) || $self->log( $msg );
+       RSGet::FileList::save( $self->{_uri}, options => { delay => $until, 
error => $msg } );
+       RSGet::Dispatch::finished( $self );
+}
+
 sub finish
 {
        my $self = shift;

Modified: toys/rsget.pl/RSGet/Processor.pm
==============================================================================
--- toys/rsget.pl/RSGet/Processor.pm    (original)
+++ toys/rsget.pl/RSGet/Processor.pm    Sat Jun 26 01:31:12 2010
@@ -136,7 +136,7 @@
                        p_sub( $next_stage );
                        $_ = $left;
                        redo if /\S/;
-               } elsif ( s/^(ERROR|RESTART|LINK|MULTI)\s*\(// ) {
+               } elsif ( s/^(ERROR|RESTART|LINK|MULTI|DELAY)\s*\(// ) {
                        p_ret( lc $1 );
                        p_line();
                } elsif ( s/^INFO\s*\(// ) {
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to