Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- my $max = 10 ;
- my $kill-in = 5 ;
- my $main-supply = supply {
- for 1..$max {
- sleep 1 ;
- emit $_ ;
- }
- done() ;
- }
- class Payload {
- has $.promise ;
- has $.name ;
- has $!kill-supplier ;
- method kill() {
- say "kill called for $.name" ;
- $!kill-supplier.emit("kill") ;
- }
- }
- sub launch($name, $supply) {
- my $kill-supplier = Supplier.new() ;
- my $kill-supply = $kill-supplier.Supply ;
- # my $kill-tap = $kill-supply.tap() ;
- my $promise = start {
- react {
- whenever $supply {
- say $name ~ ": " ~ $_ ;
- }
- whenever $kill-supply {
- say "Shutting Down: " ~ $name ;
- done() ;
- }
- }
- }
- return Payload.new(name => $name, promise => $promise , kill-supplier => $kill-supplier) ;
- }
- my $payload = launch("Bobby", $main-supply) ;
- Promise.in($kill-in).then({ say "Trying to kill the payload..." ; $payload.kill() }) ;
- await $payload.promise ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement