From e3d18b7f1a7c415a41d793c7a3f5a02ab4b19d40 Mon Sep 17 00:00:00 2001 From: Zoffix Znet Date: Thu, 28 Jul 2016 15:52:34 -0400 Subject: Socket watcher temp --- test.p6 | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 test.p6 diff --git a/test.p6 b/test.p6 new file mode 100644 index 0000000..5a6e969 --- /dev/null +++ b/test.p6 @@ -0,0 +1,42 @@ + +my @s = %( :host, :6667port, :promise(''), :sock(''), :!q, :0e ), + %( :host, :4444port, :promise(''), :sock(''), :!q, :0e ); + +my Channel $c .= new; + +sub connect-it ($s) { + say "Connecting $s:$s"; + $s = ''; + $s = IO::Socket::Async.connect(|$s).then: sub ($_) { + if .status ~~ Broken { + dd "ZOMFG! Can't connect!"; + $s = True if $s++ > 4; + sleep 1; + $c.send: ['broken', $s]; + return; + } + + $s = .result; + react { + say "Loooop"; + whenever $s.Supply { + say "Got stuff! $_"; + } + } + $s = True if $s++ > 3; + $c.send: ['closed', $s]; + CATCH { default { warn $_; warn .backtrace; } } + } +} + +connect-it $_ for @s; +loop { + say "Starting listen"; + my $v = $c.receive; + dd $v; + connect-it $v[1] unless $v[1]; + unless @s.grep({!.}) { + say 'Bailing out'; + last; + } +} -- cgit v1.1