tagged release 0.6.4
[parrot.git] / languages / tcl / runtime / builtin / socket.pir
blobefa8d519af65c46e492e1736787995d293980636
1 =head1 [socket]
3 Sockets!
5 =cut
7 .HLL 'Tcl', 'tcl_group'
8 .namespace []
10 .sub '&socket'
11     .param pmc argv :slurpy
13     .local int argc
14     argc = elements argv
15     if argc < 2 goto bad_args
16     if argc > 2 goto bad_args
18     .local string host
19     .local int port
20     host = argv[0]
21     port = argv[1]
23     load_bytecode 'library/tcpstream.pir'
24     .local pmc stream
25     stream = new 'TCPStream'
26     stream.'connect'(host, port)
28     .local pmc channels, next_channel_id
29     channels        = get_root_global ['_tcl'], 'channels'
30     next_channel_id = get_root_global ['_tcl'], 'next_channel_id'
32     .local string channel_id
33     channel_id = 'sock'
34     # get a new file channel name
35     $S0 = next_channel_id
36     channel_id .= $S0
37     inc next_channel_id
39     channels[channel_id] = stream
41     .return(channel_id)
43 bad_args:
44     tcl_error 'wrong # args: should be "socket ?-myaddr addr? ?-myport myport? ?-async? host port" or "socket -server command ?-myaddr addr? port"'
45 .end
48 # Local Variables:
49 #   mode: pir
50 #   fill-column: 100
51 # End:
52 # vim: expandtab shiftwidth=4 ft=pir: