Last active
June 13, 2017 14:36
-
-
Save bioduds/fcb7d30703660b37618aa4df6cccda6a to your computer and use it in GitHub Desktop.
async hanging
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### client sending message async | |
use v6; | |
use lib 'lib/network'; | |
use client; | |
say "Running Test..."; | |
loop { | |
sleep-until now+2; | |
my $client = EC::Network::Client.new( :destination( '35.167.61.56' ), :port( 5000 ) ); | |
$client.send( :message( "Test to print" ) ); | |
} | |
### the class | |
#unit package EC::Network:auth<github:bioduds>; | |
unit module EC::Network; | |
class Client { | |
has $.destination; | |
has $.port; | |
method send( :$message ) { | |
await IO::Socket::Async.connect( $!destination, $!port ).then( -> $p { | |
if $p.status { | |
given $p.result { | |
.print( $message ); ## this is sent | |
react { | |
whenever .Supply() -> $v { | |
say "Sending " ~ $v; | |
done; | |
} | |
} | |
.close; | |
} | |
} | |
}); | |
} | |
} | |
#### the node on AWS | |
use v6; | |
use lib 'lib'; | |
use socket; | |
say "Running Test..."; | |
EC::Network::Socket.new.run; | |
### it's class | |
#unit package EC::Network:auth<github:bioduds>; | |
unit module EC::Network; | |
class Socket { | |
method run { | |
react { | |
whenever IO::Socket::Async.listen( '172.31.10.220', 5000 ) -> $conn { | |
whenever $conn.Supply( :bin ) -> $buf { | |
await $conn.write: $buf; | |
say $buf; | |
say $buf.decode( 'utf-8' ); | |
} | |
} | |
} | |
} | |
} | |
## now it hanged and I need to reboot the server to make it work again, here's the output | |
#ubuntu@ip-172-31-10-220:~/client$ perl6 node.p6 | |
#Running Test... | |
#Tried to get the result of a broken Promise | |
# in method run at /home/ubuntu/client/lib/socket.pm6 (socket) line 8 | |
# in block <unit> at node.p6 line 7 | |
#Original exception: | |
# address already in use | |
# in method run at /home/ubuntu/client/lib/socket.pm6 (socket) line 8 | |
# in block <unit> at node.p6 line 7 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment