… | |
… | |
908 | my $coro; $coro = async { |
908 | my $coro; $coro = async { |
909 | eval { |
909 | eval { |
910 | $cb->(); |
910 | $cb->(); |
911 | }; |
911 | }; |
912 | warn $@ if $@; |
912 | warn $@ if $@; |
913 | warn "cancel myself\n";#d# |
|
|
914 | delete $self->{_coro}{$coro+0}; |
913 | delete $self->{_coro}{$coro+0}; |
915 | }; |
914 | }; |
916 | |
915 | |
917 | $self->{_coro}{$coro+0} = $coro; |
916 | $self->{_coro}{$coro+0} = $coro; |
918 | } |
917 | } |
919 | |
918 | |
920 | cf::client->attach ( |
919 | cf::client->attach ( |
921 | on_destroy => sub { |
920 | on_destroy => sub { |
922 | my ($ns) = @_; |
921 | my ($ns) = @_; |
923 | |
922 | |
924 | warn "cancel $_" for values %{ $ns->{_coro} || {} };#d# |
|
|
925 | $_->cancel for values %{ $ns->{_coro} || {} }; |
923 | $_->cancel for values %{ (delete $ns->{_coro}) || {} }; |
926 | }, |
924 | }, |
927 | ); |
925 | ); |
928 | |
926 | |
929 | =back |
927 | =back |
930 | |
928 | |