blob: f696a157c6ee3920b7b2ba8fa3bfc0f7b824d498 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
REMOTE←{
fd←⎕PIPE ⍵
out←{
msg←{1(2⊃⍵)}⍇⍬
raw←0 ⎕SERIAL msg
len←(4⍴255)⊤≢raw
_←fd ⎕WRITE len,raw
∇⍵
}
in←{
m←1 ⎕serial fd ⎕read (4⍴255)⊥fd ⎕read 4
_←m⍈⍵
∇⍵
}
remote←{
0≡≢⍵: ⍺∇out&'remote out'⊢⎕self ⍝ Spawn out thread
1≡≢⍵: ⍺∇⍵,in&'remote in'⊢⎕self ⍝ Spawn in thread
(outid inid)←⍵
master←⍺
(from msg)←{1 ⍵}⍇⍬
_←{
from≡master: msg⍈outid
from≢master: msg⍈master
}⍬
⍺∇⍵
}
⎕self remote&'remote'⊢⍬
}
|