aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoffix Znet <cpan@zoffix.com>2016-07-28 15:52:34 -0400
committerZoffix Znet <cpan@zoffix.com>2016-07-28 15:52:34 -0400
commite3d18b7f1a7c415a41d793c7a3f5a02ab4b19d40 (patch)
tree25b54e696f3d93826c9b2ccbadbde44afef165c7
parente12af8b6369352c7776447ab39f8fd7e61d16614 (diff)
Socket watcher temp
-rw-r--r--test.p642
1 files changed, 42 insertions, 0 deletions
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<localhost>, :6667port, :promise(''), :sock(''), :!q, :0e ),
+ %( :host<localhost>, :4444port, :promise(''), :sock(''), :!q, :0e );
+
+my Channel $c .= new;
+
+sub connect-it ($s) {
+ say "Connecting $s<host>:$s<port>";
+ $s<sock> = '';
+ $s<promise> = IO::Socket::Async.connect(|$s<host port>).then: sub ($_) {
+ if .status ~~ Broken {
+ dd "ZOMFG! Can't connect!";
+ $s<q> = True if $s<e>++ > 4;
+ sleep 1;
+ $c.send: ['broken', $s];
+ return;
+ }
+
+ $s<sock> = .result;
+ react {
+ say "Loooop";
+ whenever $s<sock>.Supply {
+ say "Got stuff! $_";
+ }
+ }
+ $s<q> = True if $s<e>++ > 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]<q>;
+ unless @s.grep({!.<q>}) {
+ say 'Bailing out';
+ last;
+ }
+}