@@ -13,17 +13,11 @@ use libc::{size_t, ssize_t, c_int, c_void};
13
13
use rt:: uv:: uvll;
14
14
use rt:: uv:: uvll:: * ;
15
15
use rt:: uv:: { AllocCallback , ConnectionCallback , ReadCallback } ;
16
- use super :: { Loop , Watcher , Request , UvError , Buf , NativeHandle , NullCallback ,
17
- status_to_maybe_uv_error , vec_to_uv_buf , vec_from_uv_buf , slice_to_uv_buf } ;
18
- use super :: super :: io:: net:: ip:: { IpAddr , Ipv4 , Ipv6 } ;
16
+ use rt :: uv :: { Loop , Watcher , Request , UvError , Buf , NativeHandle , NullCallback ,
17
+ status_to_maybe_uv_error } ;
18
+ use rt :: io:: net:: ip:: { IpAddr , Ipv4 , Ipv6 } ;
19
19
use rt:: uv:: last_uv_error;
20
20
21
- #[ cfg( test) ] use util:: ignore;
22
- #[ cfg( test) ] use cell:: Cell ;
23
- #[ cfg( test) ] use unstable:: run_in_bare_thread;
24
- #[ cfg( test) ] use super :: super :: thread:: Thread ;
25
- #[ cfg( test) ] use super :: super :: test:: * ;
26
-
27
21
fn ip4_as_uv_ip4 < T > ( addr : IpAddr , f : & fn ( * sockaddr_in ) -> T ) -> T {
28
22
match addr {
29
23
Ipv4 ( a, b, c, d, p) => {
@@ -334,96 +328,109 @@ impl NativeHandle<*uvll::uv_write_t> for WriteRequest {
334
328
}
335
329
336
330
337
- #[ test]
338
- fn connect_close ( ) {
339
- do run_in_bare_thread ( ) {
340
- let mut loop_ = Loop :: new ( ) ;
341
- let mut tcp_watcher = { TcpWatcher :: new ( & mut loop_) } ;
342
- // Connect to a port where nobody is listening
343
- let addr = next_test_ip4 ( ) ;
344
- do tcp_watcher. connect ( addr) |stream_watcher, status| {
345
- rtdebug ! ( "tcp_watcher.connect!" ) ;
346
- assert ! ( status. is_some( ) ) ;
347
- assert ! ( status. get( ) . name( ) == ~"ECONNREFUSED ");
348
- stream_watcher.close(||());
331
+ #[ cfg( test) ]
332
+ mod test {
333
+ use super :: * ;
334
+ use util:: ignore;
335
+ use cell:: Cell ;
336
+ use vec;
337
+ use unstable:: run_in_bare_thread;
338
+ use rt:: thread:: Thread ;
339
+ use rt:: test:: * ;
340
+ use rt:: uv:: { Loop , AllocCallback } ;
341
+ use rt:: uv:: { vec_from_uv_buf, vec_to_uv_buf, slice_to_uv_buf} ;
342
+
343
+ #[ test]
344
+ fn connect_close ( ) {
345
+ do run_in_bare_thread ( ) {
346
+ let mut loop_ = Loop :: new ( ) ;
347
+ let mut tcp_watcher = { TcpWatcher :: new ( & mut loop_) } ;
348
+ // Connect to a port where nobody is listening
349
+ let addr = next_test_ip4 ( ) ;
350
+ do tcp_watcher. connect ( addr) |stream_watcher, status| {
351
+ rtdebug ! ( "tcp_watcher.connect!" ) ;
352
+ assert ! ( status. is_some( ) ) ;
353
+ assert ! ( status. get( ) . name( ) == ~"ECONNREFUSED ");
354
+ stream_watcher.close(||());
355
+ }
356
+ loop_.run();
357
+ loop_.close();
349
358
}
350
- loop_.run();
351
- loop_.close();
352
359
}
353
- }
354
360
355
- #[test]
356
- fn listen() {
357
- do run_in_bare_thread() {
358
- static MAX: int = 10;
359
- let mut loop_ = Loop::new();
360
- let mut server_tcp_watcher = { TcpWatcher::new(&mut loop_) };
361
- let addr = next_test_ip4();
362
- server_tcp_watcher.bind(addr);
363
- let loop_ = loop_;
364
- rtdebug!(" listening");
365
- do server_tcp_watcher.listen |server_stream_watcher, status| {
366
- rtdebug!(" listened!");
367
- assert!(status.is_none());
368
- let mut server_stream_watcher = server_stream_watcher;
369
- let mut loop_ = loop_;
370
- let mut client_tcp_watcher = TcpWatcher::new(&mut loop_);
371
- let mut client_tcp_watcher = client_tcp_watcher.as_stream();
372
- server_stream_watcher.accept(client_tcp_watcher);
373
- let count_cell = Cell(0);
374
- let server_stream_watcher = server_stream_watcher;
375
- rtdebug!(" starting read");
376
- let alloc: AllocCallback = |size| {
377
- vec_to_uv_buf(vec::from_elem(size, 0))
378
- };
379
- do client_tcp_watcher.read_start(alloc)
380
- |stream_watcher, nread, buf, status| {
381
-
382
- rtdebug!(" i' m reading!");
383
- let buf = vec_from_uv_buf(buf);
384
- let mut count = count_cell.take();
385
- if status.is_none() {
386
- rtdebug!(" got %d bytes", nread);
387
- let buf = buf.unwrap();
388
- for buf.slice(0, nread as uint).each |byte| {
389
- assert!(*byte == count as u8);
390
- rtdebug!(" %u", *byte as uint);
391
- count += 1;
392
- }
393
- } else {
394
- assert!(count == MAX);
395
- do stream_watcher.close {
396
- server_stream_watcher.close(||());
361
+ #[test]
362
+ fn listen() {
363
+ do run_in_bare_thread() {
364
+ static MAX: int = 10;
365
+ let mut loop_ = Loop::new();
366
+ let mut server_tcp_watcher = { TcpWatcher::new(&mut loop_) };
367
+ let addr = next_test_ip4();
368
+ server_tcp_watcher.bind(addr);
369
+ let loop_ = loop_;
370
+ rtdebug!(" listening");
371
+ do server_tcp_watcher.listen |server_stream_watcher, status| {
372
+ rtdebug!(" listened!");
373
+ assert!(status.is_none());
374
+ let mut server_stream_watcher = server_stream_watcher;
375
+ let mut loop_ = loop_;
376
+ let mut client_tcp_watcher = TcpWatcher::new(&mut loop_);
377
+ let mut client_tcp_watcher = client_tcp_watcher.as_stream();
378
+ server_stream_watcher.accept(client_tcp_watcher);
379
+ let count_cell = Cell(0);
380
+ let server_stream_watcher = server_stream_watcher;
381
+ rtdebug!(" starting read");
382
+ let alloc: AllocCallback = |size| {
383
+ vec_to_uv_buf(vec::from_elem(size, 0))
384
+ };
385
+ do client_tcp_watcher.read_start(alloc)
386
+ |stream_watcher, nread, buf, status| {
387
+
388
+ rtdebug!(" i' m reading!");
389
+ let buf = vec_from_uv_buf(buf);
390
+ let mut count = count_cell.take();
391
+ if status.is_none() {
392
+ rtdebug!(" got %d bytes", nread);
393
+ let buf = buf.unwrap();
394
+ for buf.slice(0, nread as uint).each |byte| {
395
+ assert!(*byte == count as u8);
396
+ rtdebug!(" %u", *byte as uint);
397
+ count += 1;
398
+ }
399
+ } else {
400
+ assert!(count == MAX);
401
+ do stream_watcher.close {
402
+ server_stream_watcher.close(||());
403
+ }
397
404
}
405
+ count_cell.put_back(count);
398
406
}
399
- count_cell.put_back(count);
400
407
}
401
- }
402
408
403
- let _client_thread = do Thread::start {
404
- rtdebug!(" starting client thread");
405
- let mut loop_ = Loop::new();
406
- let mut tcp_watcher = { TcpWatcher::new(&mut loop_) };
407
- do tcp_watcher.connect(addr) |stream_watcher, status| {
408
- rtdebug!(" connecting");
409
- assert!(status.is_none());
410
- let mut stream_watcher = stream_watcher;
411
- let msg = ~[0, 1, 2, 3, 4, 5, 6 ,7 ,8, 9];
412
- let buf = slice_to_uv_buf(msg);
413
- let msg_cell = Cell(msg);
414
- do stream_watcher.write(buf) |stream_watcher, status| {
415
- rtdebug!(" writing" ) ;
409
+ let _client_thread = do Thread::start {
410
+ rtdebug!(" starting client thread");
411
+ let mut loop_ = Loop::new();
412
+ let mut tcp_watcher = { TcpWatcher::new(&mut loop_) };
413
+ do tcp_watcher.connect(addr) |stream_watcher, status| {
414
+ rtdebug!(" connecting");
416
415
assert!(status.is_none());
417
- let msg_cell = Cell ( msg_cell. take ( ) ) ;
418
- stream_watcher. close ( ||ignore ( msg_cell. take ( ) ) ) ;
416
+ let mut stream_watcher = stream_watcher;
417
+ let msg = ~[0, 1, 2, 3, 4, 5, 6 ,7 ,8, 9];
418
+ let buf = slice_to_uv_buf(msg);
419
+ let msg_cell = Cell(msg);
420
+ do stream_watcher.write(buf) |stream_watcher, status| {
421
+ rtdebug!(" writing" ) ;
422
+ assert ! ( status. is_none( ) ) ;
423
+ let msg_cell = Cell ( msg_cell. take ( ) ) ;
424
+ stream_watcher. close ( ||ignore ( msg_cell. take ( ) ) ) ;
425
+ }
419
426
}
420
- }
427
+ loop_. run ( ) ;
428
+ loop_. close ( ) ;
429
+ } ;
430
+
431
+ let mut loop_ = loop_;
421
432
loop_. run( ) ;
422
433
loop_. close( ) ;
423
- } ;
424
-
425
- let mut loop_ = loop_;
426
- loop_. run ( ) ;
427
- loop_. close ( ) ;
434
+ }
428
435
}
429
- }
436
+ }
0 commit comments