@@ -83,7 +83,7 @@ fn fillbyte(x: cmplx, incr: f64) -> u8 {
83
83
rv
84
84
}
85
85
86
- fn chanmb ( i : uint , size : uint , ch : oldcomm :: Chan < Line > ) -> ( )
86
+ fn chanmb ( i : uint , size : uint ) -> Line
87
87
{
88
88
let mut crv = ~[ ] ;
89
89
let incr = 2f64 /( size as f64 ) ;
@@ -93,7 +93,7 @@ fn chanmb(i: uint, size: uint, ch: oldcomm::Chan<Line>) -> ()
93
93
let x = cmplx { re : xincr* ( j as f64 ) - 1.5f64 , im : y} ;
94
94
crv. push ( fillbyte ( x, incr) ) ;
95
95
} ;
96
- oldcomm :: send ( ch , Line { i : i, b : move crv} ) ;
96
+ Line { i : i, b : crv}
97
97
}
98
98
99
99
type devnull = { dn : int } ;
@@ -106,11 +106,8 @@ impl devnull: io::Writer {
106
106
fn get_type ( & self ) -> io:: WriterType { io:: File }
107
107
}
108
108
109
- fn writer ( path : ~str , writech : oldcomm :: Chan < oldcomm :: Chan < Line > > , size : uint )
109
+ fn writer ( path : ~str , pport : pipes :: Port < Line > , size : uint )
110
110
{
111
- let p: oldcomm:: Port < Line > = oldcomm:: Port ( ) ;
112
- let ch = oldcomm:: Chan ( & p) ;
113
- oldcomm:: send ( writech, ch) ;
114
111
let cout: io:: Writer = match path {
115
112
~"" => {
116
113
{ dn: 0 } as io:: Writer
@@ -130,7 +127,7 @@ fn writer(path: ~str, writech: oldcomm::Chan<oldcomm::Chan<Line>>, size: uint)
130
127
let mut done = 0_ u;
131
128
let mut i = 0_ u;
132
129
while i < size {
133
- let aline = oldcomm :: recv ( p ) ;
130
+ let aline = pport . recv ( ) ;
134
131
if aline. i == done {
135
132
debug ! ( "W %u" , aline. i) ;
136
133
cout. write ( aline. b ) ;
@@ -171,13 +168,11 @@ fn main() {
171
168
let size = if vec:: len ( args) < 2_ u { 80_ u }
172
169
else { uint:: from_str ( args[ 1 ] ) . get ( ) } ;
173
170
174
- let writep = oldcomm:: Port ( ) ;
175
- let writech = oldcomm:: Chan ( & writep) ;
176
- do task:: spawn |move path| {
177
- writer ( copy path, writech, size) ;
178
- } ;
179
- let ch = oldcomm:: recv ( writep) ;
171
+ let ( pport, pchan) = pipes:: stream ( ) ;
172
+ let pchan = pipes:: SharedChan ( pchan) ;
180
173
for uint:: range( 0_ u, size) |j| {
181
- do task:: spawn { chanmb( j, size, ch) } ;
174
+ let cchan = pchan. clone ( ) ;
175
+ do task:: spawn |move cchan| { cchan. send ( chanmb ( j, size) ) } ;
182
176
} ;
177
+ writer ( path, pport, size) ;
183
178
}
0 commit comments