@@ -3,7 +3,7 @@ extern mod extra;
3
3
use std:: cell:: Cell ;
4
4
use std:: comm:: SharedChan ;
5
5
use std:: task:: { spawn_with, spawn_supervised} ;
6
- use std:: rt:: io:: { Listener , Writer } ;
6
+ use std:: rt:: io:: { Listener , Acceptor , Writer } ;
7
7
use std:: rt:: io:: net:: ip:: SocketAddr ;
8
8
use std:: rt:: io:: io_error;
9
9
use extra:: time:: precise_time_ns;
@@ -45,26 +45,24 @@ impl<T: Send + Clone + Server> ServerUtil for T {
45
45
fn serve_forever ( self ) {
46
46
let config = self . get_config ( ) ;
47
47
debug ! ( "About to bind to %?" , config. bind_address) ;
48
- let mut optlistener = TcpListener :: bind ( config. bind_address ) ;
49
- debug ! ( "Bind attempt completed" ) ;
50
- let ( perf_po, perf_ch) = stream ( ) ;
51
- let perf_ch = SharedChan :: new ( perf_ch) ;
52
- spawn_with ( perf_po, perf_dumper) ;
53
- match optlistener {
48
+ match TcpListener :: bind ( config. bind_address ) . listen ( ) {
54
49
None => {
55
- debug ! ( "listen failed :-(" ) ;
50
+ error ! ( "bind or listen failed :-(" ) ;
56
51
return ;
57
- }
58
- Some ( ref mut listener ) => {
52
+ } ,
53
+ Some ( ref mut acceptor ) => {
59
54
debug ! ( "listening" ) ;
55
+ let ( perf_po, perf_ch) = stream ( ) ;
56
+ let perf_ch = SharedChan :: new ( perf_ch) ;
57
+ spawn_with ( perf_po, perf_dumper) ;
60
58
loop {
61
59
// OK, we're sort of shadowing an IoError here. Perhaps this should be done in a
62
60
// separate task so that it can safely fail...
63
61
let mut error = None ;
64
62
let optstream = io_error:: cond. trap ( |e| {
65
63
error = Some ( e) ;
66
64
} ) . inside ( || {
67
- listener . accept ( )
65
+ acceptor . accept ( )
68
66
} ) ;
69
67
70
68
let time_start = precise_time_ns ( ) ;
0 commit comments