Skip to content

Commit 9e1f32d

Browse files
committed
fix read/write loop.
1 parent f05e5fe commit 9e1f32d

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/transport/tcp.rs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,22 @@ pub fn connect(addr: &SocketAddr) -> TcpStream {
1515
}
1616

1717
pub async fn process(socket: TcpStream, mut inputs: Rx, outputs: Tx) {
18-
let mut stream = Framed::new(socket, RFrameCodec);
19-
loop {
20-
match stream.next().await {
21-
Some(it) => outputs.send(it.unwrap()).unwrap(),
22-
None => {
23-
drop(outputs);
24-
break;
18+
let (mut writer, mut reader) = Framed::new(socket, RFrameCodec).split();
19+
tokio::spawn(async move {
20+
loop {
21+
match reader.next().await {
22+
Some(it) => outputs.send(it.unwrap()).unwrap(),
23+
None => {
24+
drop(outputs);
25+
break;
26+
}
2527
}
2628
}
27-
// TODO: How to split R/W ???
28-
// match inputs.recv().await {
29-
// Some(v) => stream.send(v).await.unwrap(),
30-
// None => (),
31-
// }
29+
});
30+
loop {
31+
match inputs.recv().await {
32+
Some(it) => writer.send(it).await.unwrap(),
33+
None => break,
34+
}
3235
}
3336
}

0 commit comments

Comments
 (0)