X-Git-Url: https://git.gag.com/?p=debian%2Famanda;a=blobdiff_plain;f=perl%2FAmanda%2FMainLoop.pm;h=5fbec198e81b2f8c0ba64526fd90d2611ad3c346;hp=c26ba917452a3d9e732c1ec20ba2abc29387eb83;hb=b116e9366c7b2ea2c2eb53b0a13df4090e176235;hpb=fd48f3e498442f0cbff5f3606c7c403d0566150e diff --git a/perl/Amanda/MainLoop.pm b/perl/Amanda/MainLoop.pm index c26ba91..5fbec19 100644 --- a/perl/Amanda/MainLoop.pm +++ b/perl/Amanda/MainLoop.pm @@ -437,7 +437,7 @@ first step defined will be called automatically. my ($hostname, $port, $data, $sendfile_cb) = @_; my ($addr, $socket); # shared lexical variables my $steps = define_steps - cb => \$sendfile_cb; + cb_ref => \$sendfile_cb; step lookup_addr => sub { return async_gethostbyname(hostname => $hostname, ghbn_cb => $steps->{'got_addr'}); @@ -490,7 +490,7 @@ achieve this for all callbacks, add C<< immediate => 1 >> to the C invocation: my $steps = define_steps - cb => $finished_cb, + cb_ref => \$finished_cb, immediate => 1; To do the same for a single step, add the same keyword to the C invocation: @@ -509,7 +509,7 @@ commands simultaneously and capture their output: my $running_commands = 0; my ($result1, $result2); my $steps = define_steps - cb_ref => $finished_cb; + cb_ref => \$finished_cb; step start => sub { $running_commands++; run_command($command1, @@ -518,15 +518,15 @@ commands simultaneously and capture their output: run_command($command2, run_cb => $steps->{'command2_done'}); }; - step command1_done { + step command1_done => sub { $result1 = $_[0]; $steps->{'maybe_done'}->(); }; - step command2_done { + step command2_done => sub { $result2 = $_[0]; $steps->{'maybe_done'}->(); }; - step maybe_done { + step maybe_done => sub { return if --$running_commands; # not done yet $finished_cb->($result1, $result2); };