Mercurial > hg > Papers > 2020 > koo-thesis
comparison Prepaper/code/abyss.p6 @ 22:b96b3244307b
update paper & slide
author | e165727 <e165727@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 16 Feb 2020 18:20:36 +0900 |
parents | e234acddcfab |
children | 27f7561b1135 |
comparison
equal
deleted
inserted
replaced
21:32db366529dd | 22:b96b3244307b |
---|---|
1 unit class Abyss::Server:ver<0.0.1>; | 1 use v6.c; |
2 unit class Abyss::Server:ver<0.0.1>:auth<cpan:ANATOFUZ>; | |
2 use MONKEY-SEE-NO-EVAL; | 3 use MONKEY-SEE-NO-EVAL; |
4 use IO::Socket::Unix; | |
5 use NativeCall; | |
3 | 6 |
4 method readeval { | 7 sub close(int32) returns int32 is native { ... } |
5 my $listen = IO::Socket::INET.new( | 8 sub dup(int32 $old) returns int32 is native { ... } |
6 :listen, | 9 sub dup2(int32 $new, int32 $old) returns int32 is native { ... } |
7 :localhost<localhost>, | 10 |
8 :localport(3333) | 11 method readeval |
9 ); | 12 { |
10 loop { | 13 my $listen = IO::Socket::Unix.new( :listen, |
11 my $conn = $listen.accept; | 14 :localhost<localhost>, |
12 while my $buf = $conn.read(1024) { | 15 :localport(3333) ); |
13 EVALFILE $buf.decode; | 16 my $backup = dup(1); |
17 say DateTime.now; | |
18 | |
19 loop | |
20 { | |
21 my $conn = $listen.accept; | |
22 my $sock_msg; | |
23 my $buf = $conn.recv(); | |
24 $sock_msg = $buf; | |
25 close(1); | |
26 dup2($conn.native-descriptor(), 1); | |
27 EVALFILE $sock_msg; | |
28 dup2($backup, 1); | |
29 close($backup); | |
30 $conn.close; | |
14 } | 31 } |
15 $conn.close; | 32 |
16 } | 33 $listen.close; |
17 } | 34 } |