@@ -4,6 +4,8 @@ High-level interface to libuv's TCP functionality
4
4
5
5
// FIXME: Fewer import *'s
6
6
import ip = net_ip;
7
+ import uv:: iotask;
8
+ import uv:: iotask:: iotask;
7
9
import comm:: * ;
8
10
import result:: * ;
9
11
import str:: * ;
@@ -44,7 +46,7 @@ resource tcp_socket(socket_data: @tcp_socket_data)
44
46
} ;
45
47
let close_data_ptr = ptr:: addr_of ( close_data) ;
46
48
let stream_handle_ptr = ( * socket_data) . stream_handle_ptr ;
47
- uv :: hl :: interact ( ( * socket_data) . hl_loop ) { |loop_ptr|
49
+ iotask :: interact ( ( * socket_data) . iotask ) { |loop_ptr|
48
50
log ( debug, #fmt ( "interact dtor for tcp_socket stream %? loop %?" ,
49
51
stream_handle_ptr, loop_ptr) ) ;
50
52
uv:: ll:: set_data_for_uv_handle ( stream_handle_ptr,
@@ -62,8 +64,8 @@ resource tcp_conn_port(conn_data: @tcp_conn_port_data) unsafe {
62
64
let conn_data_ptr = ptr:: addr_of ( * conn_data) ;
63
65
let server_stream_ptr = ptr:: addr_of ( ( * conn_data_ptr) . server_stream ) ;
64
66
let stream_closed_po = ( * conn_data) . stream_closed_po ;
65
- let hl_loop = ( * conn_data_ptr) . hl_loop ;
66
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
67
+ let iotask = ( * conn_data_ptr) . iotask ;
68
+ iotask :: interact ( iotask ) { |loop_ptr|
67
69
log ( debug, #fmt ( "dtor for tcp_conn_port loop: %?" ,
68
70
loop_ptr) ) ;
69
71
uv:: ll:: close ( server_stream_ptr, tcp_nl_close_cb) ;
@@ -86,7 +88,7 @@ Initiate a client connection over TCP/IP
86
88
87
89
* `ip` - The IP address (versions 4 or 6) of the remote host
88
90
* `port` - the unsigned integer of the desired remote host port
89
- * `hl_loop ` - a `uv::hl::high_level_loop ` that the tcp request will run on
91
+ * `iotask ` - a `uv::iotask ` that the tcp request will run on
90
92
91
93
# Returns
92
94
@@ -95,7 +97,7 @@ can be used to send and receive data to/from the remote host. In the event
95
97
of failure, a `tcp_err_data` will be returned
96
98
" ]
97
99
fn connect ( input_ip : ip:: ip_addr , port : uint ,
98
- hl_loop : uv :: hl :: high_level_loop )
100
+ iotask : iotask )
99
101
-> result:: result < tcp_socket , tcp_err_data > unsafe {
100
102
let result_po = comm:: port :: < conn_attempt > ( ) ;
101
103
let closed_signal_po = comm:: port :: < ( ) > ( ) ;
@@ -113,15 +115,15 @@ fn connect(input_ip: ip::ip_addr, port: uint,
113
115
stream_handle_ptr: stream_handle_ptr,
114
116
connect_req: uv:: ll:: connect_t ( ) ,
115
117
write_req: uv:: ll:: write_t ( ) ,
116
- hl_loop : hl_loop
118
+ iotask : iotask
117
119
} ;
118
120
let socket_data_ptr = ptr:: addr_of ( * socket_data) ;
119
121
log ( debug, #fmt ( "tcp_connect result_ch %?" , conn_data. result_ch ) ) ;
120
122
// get an unsafe representation of our stream_handle_ptr that
121
123
// we can send into the interact cb to be handled in libuv..
122
124
log ( debug, #fmt ( "stream_handle_ptr outside interact %?" ,
123
125
stream_handle_ptr) ) ;
124
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
126
+ iotask :: interact ( iotask ) { |loop_ptr|
125
127
log ( debug, "in interact cb for tcp client connect.." ) ;
126
128
log ( debug, #fmt ( "stream_handle_ptr in interact %?" ,
127
129
stream_handle_ptr) ) ;
@@ -354,7 +356,7 @@ to listen for, and accept, new connections, or a `tcp_err_data` if
354
356
failure to create the tcp listener occurs
355
357
" ]
356
358
fn new_listener ( host_ip : ip:: ip_addr , port : uint , backlog : uint ,
357
- hl_loop : uv :: hl :: high_level_loop )
359
+ iotask : iotask )
358
360
-> result:: result < tcp_conn_port , tcp_err_data > unsafe {
359
361
let stream_closed_po = comm:: port :: < ( ) > ( ) ;
360
362
let stream_closed_ch = comm:: chan ( stream_closed_po) ;
@@ -367,7 +369,7 @@ fn new_listener(host_ip: ip::ip_addr, port: uint, backlog: uint,
367
369
server_stream: uv:: ll:: tcp_t ( ) ,
368
370
stream_closed_po: stream_closed_po,
369
371
stream_closed_ch: stream_closed_ch,
370
- hl_loop : hl_loop ,
372
+ iotask : iotask ,
371
373
new_conn_po: new_conn_po,
372
374
new_conn_ch: new_conn_ch
373
375
} ;
@@ -377,7 +379,7 @@ fn new_listener(host_ip: ip::ip_addr, port: uint, backlog: uint,
377
379
378
380
let setup_po = comm:: port :: < option < tcp_err_data > > ( ) ;
379
381
let setup_ch = comm:: chan ( setup_po) ;
380
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
382
+ iotask :: interact ( iotask ) { |loop_ptr|
381
383
let tcp_addr = ipv4_ip_addr_to_sockaddr_in ( host_ip,
382
384
port) ;
383
385
alt uv:: ll:: tcp_init ( loop_ptr, server_stream_ptr) {
@@ -445,11 +447,11 @@ variant
445
447
fn conn_recv ( server_port : tcp_conn_port )
446
448
-> result:: result < tcp_socket , tcp_err_data > {
447
449
let new_conn_po = ( * * server_port) . new_conn_po ;
448
- let hl_loop = ( * * server_port) . hl_loop ;
450
+ let iotask = ( * * server_port) . iotask ;
449
451
let new_conn_result = comm:: recv ( new_conn_po) ;
450
452
alt new_conn_result {
451
453
ok( client_stream_ptr) {
452
- conn_port_new_tcp_socket ( client_stream_ptr, hl_loop )
454
+ conn_port_new_tcp_socket ( client_stream_ptr, iotask )
453
455
}
454
456
err ( err_data) {
455
457
result:: err ( err_data)
@@ -476,12 +478,12 @@ once a new connection is recv'd. Its parameter:
476
478
fn conn_recv_spawn ( server_port : tcp_conn_port ,
477
479
cb : fn ~( result:: result < tcp_socket , tcp_err_data > ) ) {
478
480
let new_conn_po = ( * * server_port) . new_conn_po ;
479
- let hl_loop = ( * * server_port) . hl_loop ;
481
+ let iotask = ( * * server_port) . iotask ;
480
482
let new_conn_result = comm:: recv ( new_conn_po) ;
481
483
task:: spawn { ||
482
484
let sock_create_result = alt new_conn_result {
483
485
ok( client_stream_ptr) {
484
- conn_port_new_tcp_socket ( client_stream_ptr, hl_loop )
486
+ conn_port_new_tcp_socket ( client_stream_ptr, iotask )
485
487
}
486
488
err ( err_data) {
487
489
result:: err ( err_data)
@@ -582,7 +584,7 @@ fn accept(new_conn: tcp_new_connection)
582
584
let server_data_ptr = uv:: ll:: get_data_for_uv_handle (
583
585
server_handle_ptr) as * tcp_listen_fc_data ;
584
586
let reader_po = comm:: port :: < result:: result < [ u8 ] , tcp_err_data > > ( ) ;
585
- let hl_loop = ( * server_data_ptr) . hl_loop ;
587
+ let iotask = ( * server_data_ptr) . iotask ;
586
588
let stream_handle_ptr = malloc_uv_tcp_t ( ) ;
587
589
* ( stream_handle_ptr as * mut uv:: ll:: uv_tcp_t ) = uv:: ll:: tcp_t ( ) ;
588
590
let client_socket_data = @{
@@ -591,7 +593,7 @@ fn accept(new_conn: tcp_new_connection)
591
593
stream_handle_ptr : stream_handle_ptr,
592
594
connect_req : uv:: ll:: connect_t ( ) ,
593
595
write_req : uv:: ll:: write_t ( ) ,
594
- hl_loop : hl_loop
596
+ iotask : iotask
595
597
} ;
596
598
let client_socket_data_ptr = ptr:: addr_of ( * client_socket_data) ;
597
599
let client_stream_handle_ptr =
@@ -677,7 +679,7 @@ successful/normal shutdown, and a `tcp_err_data` record in the event
677
679
of listen exiting because of an error
678
680
" ]
679
681
fn listen_for_conn ( host_ip : ip:: ip_addr , port : uint , backlog : uint ,
680
- hl_loop : uv :: hl :: high_level_loop ,
682
+ iotask : iotask ,
681
683
on_establish_cb : fn ~( comm:: chan < option < tcp_err_data > > ) ,
682
684
new_connect_cb : fn ~( tcp_new_connection ,
683
685
comm:: chan < option < tcp_err_data > > ) )
@@ -692,14 +694,14 @@ fn listen_for_conn(host_ip: ip::ip_addr, port: uint, backlog: uint,
692
694
stream_closed_ch: comm:: chan ( stream_closed_po) ,
693
695
kill_ch: kill_ch,
694
696
new_connect_cb: new_connect_cb,
695
- hl_loop : hl_loop ,
697
+ iotask : iotask ,
696
698
mut active: true
697
699
} ;
698
700
let server_data_ptr = ptr:: addr_of ( server_data) ;
699
701
700
702
let setup_po = comm:: port :: < option < tcp_err_data > > ( ) ;
701
703
let setup_ch = comm:: chan ( setup_po) ;
702
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
704
+ iotask :: interact ( iotask ) { |loop_ptr|
703
705
let tcp_addr = ipv4_ip_addr_to_sockaddr_in ( host_ip,
704
706
port) ;
705
707
alt uv:: ll:: tcp_init ( loop_ptr, server_stream_ptr) {
@@ -745,7 +747,7 @@ fn listen_for_conn(host_ip: ip::ip_addr, port: uint, backlog: uint,
745
747
none {
746
748
on_establish_cb( kill_ch) ;
747
749
let kill_result = comm:: recv ( kill_po) ;
748
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
750
+ iotask :: interact ( iotask ) { |loop_ptr|
749
751
log ( debug, #fmt ( "tcp::listen post-kill recv hl interact %?" ,
750
752
loop_ptr) ) ;
751
753
( * server_data_ptr) . active = false ;
@@ -811,7 +813,7 @@ impl sock_methods for tcp_socket {
811
813
fn read_common_impl ( socket_data : * tcp_socket_data , timeout_msecs : uint )
812
814
-> result:: result < [ u8 ] , tcp_err_data > unsafe {
813
815
log ( debug, "starting tcp::read" ) ;
814
- let hl_loop = ( * socket_data) . hl_loop ;
816
+ let iotask = ( * socket_data) . iotask ;
815
817
let rs_result = read_start_common_impl ( socket_data) ;
816
818
if result:: is_failure ( rs_result) {
817
819
let err_data = result:: get_err ( rs_result) ;
@@ -821,7 +823,7 @@ fn read_common_impl(socket_data: *tcp_socket_data, timeout_msecs: uint)
821
823
log ( debug, "tcp::read before recv_timeout" ) ;
822
824
let read_result = if timeout_msecs > 0 u {
823
825
timer:: recv_timeout (
824
- hl_loop , timeout_msecs, result:: get ( rs_result) )
826
+ iotask , timeout_msecs, result:: get ( rs_result) )
825
827
} else {
826
828
some ( comm:: recv ( result:: get ( rs_result) ) )
827
829
} ;
@@ -851,7 +853,7 @@ fn read_stop_common_impl(socket_data: *tcp_socket_data) ->
851
853
let stream_handle_ptr = ( * socket_data) . stream_handle_ptr ;
852
854
let stop_po = comm:: port :: < option < tcp_err_data > > ( ) ;
853
855
let stop_ch = comm:: chan ( stop_po) ;
854
- uv :: hl :: interact ( ( * socket_data) . hl_loop ) { |loop_ptr|
856
+ iotask :: interact ( ( * socket_data) . iotask ) { |loop_ptr|
855
857
log ( debug, "in interact cb for tcp::read_stop" ) ;
856
858
alt uv:: ll:: read_stop ( stream_handle_ptr as * uv:: ll:: uv_stream_t ) {
857
859
0i32 {
@@ -883,7 +885,7 @@ fn read_start_common_impl(socket_data: *tcp_socket_data)
883
885
let start_po = comm:: port :: < option < uv:: ll:: uv_err_data > > ( ) ;
884
886
let start_ch = comm:: chan ( start_po) ;
885
887
log ( debug, "in tcp::read_start before interact loop" ) ;
886
- uv :: hl :: interact ( ( * socket_data) . hl_loop ) { |loop_ptr|
888
+ iotask :: interact ( ( * socket_data) . iotask ) { |loop_ptr|
887
889
log ( debug, #fmt ( "in tcp::read_start interact cb %?" , loop_ptr) ) ;
888
890
alt uv:: ll:: read_start ( stream_handle_ptr as * uv:: ll:: uv_stream_t ,
889
891
on_alloc_cb,
@@ -925,7 +927,7 @@ fn write_common_impl(socket_data_ptr: *tcp_socket_data,
925
927
result_ch: comm:: chan ( result_po)
926
928
} ;
927
929
let write_data_ptr = ptr:: addr_of ( write_data) ;
928
- uv :: hl :: interact ( ( * socket_data_ptr) . hl_loop ) { |loop_ptr|
930
+ iotask :: interact ( ( * socket_data_ptr) . iotask ) { |loop_ptr|
929
931
log ( debug, #fmt ( "in interact cb for tcp::write %?" , loop_ptr) ) ;
930
932
alt uv:: ll:: write ( write_req_ptr,
931
933
stream_handle_ptr,
@@ -956,7 +958,7 @@ fn write_common_impl(socket_data_ptr: *tcp_socket_data,
956
958
// various recv_* can use a tcp_conn_port can re-use this..
957
959
fn conn_port_new_tcp_socket (
958
960
stream_handle_ptr : * uv:: ll:: uv_tcp_t ,
959
- hl_loop : uv :: hl :: high_level_loop )
961
+ iotask : iotask )
960
962
-> result:: result < tcp_socket , tcp_err_data > unsafe {
961
963
// tcp_nl_on_connection_cb
962
964
let reader_po = comm:: port :: < result:: result < [ u8 ] , tcp_err_data > > ( ) ;
@@ -966,11 +968,11 @@ fn conn_port_new_tcp_socket(
966
968
stream_handle_ptr : stream_handle_ptr,
967
969
connect_req : uv:: ll:: connect_t ( ) ,
968
970
write_req : uv:: ll:: write_t ( ) ,
969
- hl_loop : hl_loop
971
+ iotask : iotask
970
972
} ;
971
973
let client_socket_data_ptr = ptr:: addr_of ( * client_socket_data) ;
972
974
comm:: listen { |cont_ch|
973
- uv :: hl :: interact ( hl_loop ) { |loop_ptr|
975
+ iotask :: interact ( iotask ) { |loop_ptr|
974
976
log ( debug, #fmt ( "in interact cb 4 conn_port_new_tcp.. loop %?" ,
975
977
loop_ptr) ) ;
976
978
uv:: ll:: set_data_for_uv_handle ( stream_handle_ptr,
@@ -990,7 +992,7 @@ type tcp_conn_port_data = {
990
992
server_stream : uv:: ll:: uv_tcp_t ,
991
993
stream_closed_po : comm:: port < ( ) > ,
992
994
stream_closed_ch : comm:: chan < ( ) > ,
993
- hl_loop : uv :: hl :: high_level_loop ,
995
+ iotask : iotask ,
994
996
new_conn_po : comm:: port < result:: result < * uv:: ll:: uv_tcp_t ,
995
997
tcp_err_data > > ,
996
998
new_conn_ch : comm:: chan < result:: result < * uv:: ll:: uv_tcp_t ,
@@ -1003,7 +1005,7 @@ type tcp_listen_fc_data = {
1003
1005
kill_ch : comm:: chan < option < tcp_err_data > > ,
1004
1006
new_connect_cb : fn ~( tcp_new_connection ,
1005
1007
comm:: chan < option < tcp_err_data > > ) ,
1006
- hl_loop : uv :: hl :: high_level_loop ,
1008
+ iotask : iotask ,
1007
1009
mut active : bool
1008
1010
} ;
1009
1011
@@ -1264,7 +1266,7 @@ type tcp_socket_data = {
1264
1266
stream_handle_ptr : * uv:: ll:: uv_tcp_t ,
1265
1267
connect_req : uv:: ll:: uv_connect_t ,
1266
1268
write_req : uv:: ll:: uv_write_t ,
1267
- hl_loop : uv :: hl :: high_level_loop
1269
+ iotask : iotask
1268
1270
} ;
1269
1271
1270
1272
// convert rust ip_addr to libuv's native representation
@@ -1405,13 +1407,13 @@ mod test {
1405
1407
fn run_tcp_test_server ( server_ip : str , server_port : uint , resp : str ,
1406
1408
server_ch : comm:: chan < str > ,
1407
1409
cont_ch : comm:: chan < ( ) > ,
1408
- hl_loop : uv :: hl :: high_level_loop ) -> str {
1410
+ iotask : iotask ) -> str {
1409
1411
1410
1412
task:: spawn_sched ( task:: manual_threads ( 1 u) ) { ||
1411
1413
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1412
1414
let listen_result =
1413
1415
listen_for_conn ( server_ip_addr, server_port, 128 u,
1414
- hl_loop ,
1416
+ iotask ,
1415
1417
// on_establish_cb -- called when listener is set up
1416
1418
{ |kill_ch|
1417
1419
log ( debug, #fmt ( "establish_cb %?" ,
@@ -1484,12 +1486,12 @@ mod test {
1484
1486
server_port : uint , resp : str ,
1485
1487
server_ch : comm:: chan < str > ,
1486
1488
cont_ch : comm:: chan < ( ) > ,
1487
- hl_loop : uv :: hl :: high_level_loop ) -> str {
1489
+ iotask : iotask ) -> str {
1488
1490
1489
1491
task:: spawn_sched ( task:: manual_threads ( 1 u) ) { ||
1490
1492
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1491
1493
let new_listener_result =
1492
- new_listener ( server_ip_addr, server_port, 128 u, hl_loop ) ;
1494
+ new_listener ( server_ip_addr, server_port, 128 u, iotask ) ;
1493
1495
if result:: is_failure ( new_listener_result) {
1494
1496
let err_data = result:: get_err ( new_listener_result) ;
1495
1497
log ( debug, #fmt ( "SERVER: exited abnormally name %s msg %s" ,
@@ -1533,12 +1535,12 @@ mod test {
1533
1535
1534
1536
fn run_tcp_test_client ( server_ip : str , server_port : uint , resp : str ,
1535
1537
client_ch : comm:: chan < str > ,
1536
- hl_loop : uv :: hl :: high_level_loop ) -> str {
1538
+ iotask : iotask ) -> str {
1537
1539
1538
1540
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1539
1541
1540
1542
log ( debug, "CLIENT: starting.." ) ;
1541
- let connect_result = connect ( server_ip_addr, server_port, hl_loop ) ;
1543
+ let connect_result = connect ( server_ip_addr, server_port, iotask ) ;
1542
1544
if result:: is_failure ( connect_result) {
1543
1545
log ( debug, "CLIENT: failed to connect" ) ;
1544
1546
let err_data = result:: get_err ( connect_result) ;
0 commit comments