system "l core.q"
system "d .net"
/Reconnect timeout in ms
reConnTO:200
/CallBack function to retrieve previous data
getData:{()}
/Remote function name to call on update data
updFunc:`upd
/Remote function name to call on EOD
eodFunc:`eod
/Port listen to
listen:0
/FrontEnd Address
fea:`
/Mode to operate: 0 - master, 1 - slave.
mode:0
/FrontEnd handle
feh:-1
/List of subscribed user hanlers
suh:()
swmode:{mode::x; if [not[x]&feh<>-1; hclose feh; feh::-1]}
sub:{suh::suh union .z.w; getData x}
pub:{{.a[{neg[y] (updFunc;x)};(x;y);{}]}[x] peach suh}
.z.pc:{suh::suh except x; if [feh=x; feh::-1]; x}
eod:{{.a[{y ""; y (eodFunc;x)};(x;y);{}]}[x] peach suh}
netinit:{system "p ",string listen}
system "d ."
tryreconn:{
if [.net.mode & .net.feh=-1;
@[{.net.feh::hopen (.net.fea;.net.reConnTO); upd each .net.feh (`.net.sub;.core.seq)};
0b;
{if [.net.feh<>-1; hclose .net.feh; .net.feh::-1]}]
];
}
tryeod:{ if [.core.geneod¬[.net.mode]&.core.eodtime="v"$.z.T; eod[.z.D]] }