Advertisement
Guest User

payload not being killed also nontermination

a guest
Feb 6th, 2020
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 1.23 KB | None | 0 0
  1. my $max = 10 ;
  2.  
  3. my $kill-in = 5 ;
  4.  
  5. my $main-supply = supply {
  6.         for 1..$max {
  7.                 sleep 1 ;
  8.                 emit $_ ;
  9.         }
  10.         done() ;
  11. }
  12.  
  13.  
  14. class Payload {
  15.         has $.promise ;
  16.         has $.name ;
  17.         has $!kill-supplier ;
  18.  
  19.         method kill() {
  20.                 say "kill called for $.name" ;
  21.                 $!kill-supplier.emit("kill") ;
  22.         }
  23. }
  24.  
  25.  
  26. sub launch($name, $supply) {
  27.         my $kill-supplier = Supplier.new() ;
  28.         my $kill-supply = $kill-supplier.Supply ;
  29.         # my $kill-tap = $kill-supply.tap() ;
  30.         my $promise = start {
  31.                 react {
  32.                         whenever $supply {
  33.                                 say $name ~ ": " ~ $_ ;
  34.                         }
  35.  
  36.                         whenever $kill-supply {
  37.                                 say "Shutting Down: " ~ $name ;
  38.                                 done() ;
  39.                         }
  40.  
  41.                 }
  42.         }
  43.         return Payload.new(name => $name, promise => $promise , kill-supplier => $kill-supplier) ;
  44. }
  45.  
  46. my $payload = launch("Bobby", $main-supply) ;
  47.  
  48. Promise.in($kill-in).then({ say "Trying to kill the payload..." ; $payload.kill() }) ;
  49.  
  50. await $payload.promise ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement