@@ -101,19 +101,17 @@ fn pandoc_writer(
101
101
os::close(pipe_err.out);
102
102
os::close(pipe_in.out);
103
103
104
- let stdout_po = comm::Port();
105
- let stdout_ch = comm::Chan(&stdout_po);
106
- do task::spawn_sched(task::SingleThreaded) {
107
- comm::send(stdout_ch, readclose(pipe_out.in));
104
+ let (stdout_ch, stdout_po) = pipes::stream();
105
+ do task::spawn_sched(task::SingleThreaded) |move stdout_ch| {
106
+ stdout_ch.send(readclose(pipe_out.in));
108
107
}
109
- let stdout = comm::recv(stdout_po);
110
108
111
- let stderr_po = comm::Port();
112
- let stderr_ch = comm::Chan(&stderr_po);
113
- do task::spawn_sched(task::SingleThreaded) {
114
- comm::send(stderr_ch, readclose(pipe_err.in));
109
+ let (stderr_ch, stderr_po) = pipes::stream();
110
+ do task::spawn_sched(task::SingleThreaded) |move stderr_ch| {
111
+ stderr_ch.send(readclose(pipe_err.in));
115
112
}
116
- let stderr = comm::recv(stderr_po);
113
+ let stdout = stdout_po.recv();
114
+ let stderr = stderr_po.recv();
117
115
118
116
let status = run::waitpid(pid);
119
117
debug!(" pandoc result: %i", status);
@@ -141,18 +139,23 @@ fn readclose(fd: libc::c_int) -> ~str {
141
139
}
142
140
143
141
fn generic_writer(+process: fn~(+markdown: ~str)) -> Writer {
144
- let ch = do task::spawn_listener
145
- |move process, po: comm::Port<WriteInstr>| {
142
+ let (setup_ch, setup_po) = pipes::stream();
143
+ do task::spawn |move process, move setup_ch| {
144
+ let po: comm::Port<WriteInstr> = comm::Port();
145
+ let ch = comm::Chan(&po);
146
+ setup_ch.send(ch);
147
+
146
148
let mut markdown = ~" ";
147
149
let mut keep_going = true;
148
150
while keep_going {
149
- match comm:: recv(po ) {
151
+ match po. recv() {
150
152
Write(s) => markdown += s,
151
153
Done => keep_going = false
152
154
}
153
155
}
154
156
process(move markdown);
155
157
};
158
+ let ch = setup_po.recv();
156
159
157
160
fn~(+instr: WriteInstr) {
158
161
comm::send(ch, instr);
@@ -266,15 +269,14 @@ pub fn future_writer_factory(
266
269
let markdown_po = comm::Port();
267
270
let markdown_ch = comm::Chan(&markdown_po);
268
271
let writer_factory = fn~(+page: doc::Page) -> Writer {
269
- let writer_po = comm::Port();
270
- let writer_ch = comm::Chan(&writer_po);
271
- do task::spawn {
272
+ let (writer_ch, writer_po) = pipes::stream();
273
+ do task::spawn |move writer_ch| {
272
274
let (writer, future) = future_writer();
273
- comm:: send(writer_ch, move writer);
275
+ writer_ch. send(move writer);
274
276
let s = future::get(&future);
275
277
comm::send(markdown_ch, (page, s));
276
278
}
277
- comm:: recv(writer_po )
279
+ writer_po. recv()
278
280
};
279
281
280
282
(move writer_factory, markdown_po)
0 commit comments