X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=mim%2Fdevelopment%2Fmim%2Fvax%2Fmimlib%2Fnetwork.mud;fp=mim%2Fdevelopment%2Fmim%2Fvax%2Fmimlib%2Fnetwork.mud;h=a044d7c713bf180286337bad8cb7b183075ac61e;hp=0000000000000000000000000000000000000000;hb=d73ace3f3292e320b461b8fcd2e9f5dc5d9684d7;hpb=d530283ea60fb0ddcc28e9c5bd072456afe06e07 diff --git a/mim/development/mim/vax/mimlib/network.mud b/mim/development/mim/vax/mimlib/network.mud new file mode 100644 index 0000000..a044d7c --- /dev/null +++ b/mim/development/mim/vax/mimlib/network.mud @@ -0,0 +1,344 @@ + + + + + + + "NETDEFS"> + + + + + + OPER BUF: + "OPT" (LEN:FIX ) + ()>) + "AUX" (DATA:CONNECTION ) + (FLAG:FIX 0) RES:) + > ,PROT-UDP> + )> + .BUF + <* 4 .LEN>) (T .LEN)> .FLAG>> + ) + (T .RES)>)>> + + OPER BUF: + "OPT" (LEN:FIX + ) + (T )>) + "AUX" (DATA:CONNECTION ) + (FLAG:FIX 0) RES:) + > ,PROT-UDP> + )> + > + > + .BUF + <* 4 .LEN>)(T .LEN)> + .FLAG>> + ) + (T .RES)>)>)>> + + OPER:ATOM "OPT" NEW: + "AUX" (DATA:CONNECTION ) + FLAG:FIX) + + ) + (<==? .OPER NO-BLOCK?> + )> + > + >>>) + (T + >> + > .CHANNEL)) + ,F-SETFL > + .NEW)>>)>> + +> + NET-ADDRESS>) (TUV >)) + + )>> + + OPER + "TUPLE" STUFF + "AUX" (DATA:CONNECTION ) + (BUF:UVECTOR >) + RES: + (CURRENT-CONNECTION:> + .CHANNEL)) + #DECL ((STUFF) < + [REST + ]>) + + ,FIONREAD .BUF>> + 0>>> + ) + (.RES 0)>> + + OPER:ATOM + "AUX" (DATA:CONNECTION ) + (ADDR )) + + ) + (<==? .OPER GET-SERVICE> + ) + (<==? .OPER GET-ADDR> + .ADDR) + (<==? .OPER GET-PROTOCOL> + >)>> + + + > + )> + + )>> + +>) + (EBUF:UVECTOR >) (RFL:FIX 0) + (EFL:FIX 0) (MAX:FIX -1) FOUND:) + ,NET-CHANNELS) S) + )> + >>>> + >> + >> + + <1 .EBUF .EFL> + <1 .RBUF .RFL> + .RBUF 0 .EBUF>> + + )>)>> + + WHICH MAX:FIX + "AUX" (L:]> ,NET-CHANNELS)) + ) NL:) + >>> + > + .WHICH>)>)> + > .MAX> + )>>> + + + "TUPLE" STUFF + "AUX" (RBUF >) + (EBUF >) (RFL 0) + (TIMEVAL >) + (HANDLES 2> -1>>) + (MAX:FIX -1)) + #DECL ((STUFF) < + [REST ]>) + )> + (TST .STUFF) H:FIX (HAND .HANDLES)) + )> + FILE-HANDLE>> + <1 .HAND .H> + > + >>)> + > + >> + + + <1 .EBUF .RFL> + .RBUF 0 .EBUF + >> + <1 .EBUF>> .STUFF .HANDLES .MAX> + )>) + (T + )>>)>> + + [REST + ]> + HANDLES: MAX:FIX + "AUX" (CUR:FIX 0)) + ) + .BITS>>> + > + >>>> + > )> + <1 .TS>>)> + > .MAX> >)>>> + + + >)> + + + > + >)> + + + <>) + (ADDR:NET-ADDRESS > + NET-ADDRESS>) + "AUX" NS (BUF >) RS + (TO >) RES + (PT >)) + ) + (T + )> + > + <1 .BUF > + .BUF 0 0 .TO>:> + ,TIMED-OUT) + (T + ,SOCK-STREAM> + > + )>) + (T + )>)>)>> + +) + (SERVSOCK ) KIND S ERR + (ADDR > + NET-ADDRESS>)) + ) + (T )> + > + + + > + >> + ) + (T + + .ERR)>) + (T + > + ) + (T + + .ERR)>)>)>> + +> + NET-ADDRESS>) + (PT >)) + #DECL ((SERVICE H) FIX) + > + ,SOCK-STREAM> + .NADDR>> + ) + (T + + )>>) + (T + > + >)> + > + > + ) + (T + + )>>)>)>> + + + + OPER + "OPT" (ADDR: <>) "AUX" + (DATA:CONNECTION )) + .ADDR>> + + <>) + "AUX" (TBUF >)) + + NET-ADDRESS>>)> + + .ADDR> + + OPER + "OPT" (TYPE:FIX ,SOCK-STREAM) (PORT 0) + "AUX" S RES NC (DATA:CONNECTION ) + (ADDR > + NET-ADDRESS>)) + ) + ( ,PROT-TCP) + (T ,PROT-UDP)>>> + + + > + > + + .C) + (T + + .RES)>) + (T + + .RES)>)>> + + OPER + "OPT" (ADDR: <>) + "AUX" (DATA:CONNECTION ) NC) + > + + ) + (T + )>)>> + + OPER "OPT" (SERVICE:FIX 0) + "AUX" (DATA:CONNECTION ) NC + (NADDR:NET-ADDRESS + > + NET-ADDRESS>) (BUF >) + (PT:UVECTOR >) RES: + NS: CH) + > FIX> + > + + <1 .BUF > 0 0 + >> + >>> + > + > + )> + + ) + (<0? .RES> ,TIMED-OUT) + (.RES)>) + (.NC #FALSE ("ALREADY CONNECTED")) + (T #FALSE ("NOT LISTENING"))>> + +