Advertisement
Guest User

Untitled

a guest
Aug 8th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6 0.79 KB | None | 0 0
  1. use v6;
  2.  
  3. port_check( ['perlmonks.com', 'fail.com', 'fail.com', 'fail.com', 'fail.com', 'fail.com', 'fail.com', 'fail.com', 'perlmonks.org'], 55, 2 );
  4.  
  5. sub port_check( @checknodes, $port = 22, $timeout = 10)
  6. {
  7.     my @promises = @checknodes.map( -> $host {
  8.         IO::Socket::Async.connect( $host, $port );
  9.     });
  10.    
  11.     my @waits = @promises.map( -> $promise {
  12.         Promise.anyof( Promise.in( $timeout ), $promise )
  13.     });
  14.    
  15.     await Promise.allof( @waits );
  16.  
  17.     for @checknodes Z @promises -> [$node, $promise]
  18.     {
  19.         if $promise.status ~~ Kept
  20.         {
  21.             given $promise.result
  22.             {
  23.                 my $peer   = "{.peer-host}:{.peer-port}";
  24.                 my $socket = "{.socket-host}:{.socket-port}";
  25.                 say "$socket connected to $peer";
  26.                 .close;
  27.             }
  28.         }
  29.         else
  30.         {
  31.             say "not connected to $node:$port";
  32.         }
  33.     }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement