Skip to content

Commit 7ea6fdc

Browse files
authored
Merge pull request containerd#139 from quanweiZhou/master
asynchronous client support timeout
2 parents 66369d9 + cd69e63 commit 7ea6fdc

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/asynchronous/client.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,19 @@ impl Client {
177177
.await
178178
.map_err(|e| Error::Others(format!("Send packet to sender error {:?}", e)))?;
179179

180-
let result = rx
181-
.recv()
180+
let result = if req.timeout_nano == 0 {
181+
rx.recv()
182+
.await
183+
.ok_or_else(|| Error::Others("Receive packet from receiver error".to_string()))?
184+
} else {
185+
tokio::time::timeout(
186+
std::time::Duration::from_nanos(req.timeout_nano as u64),
187+
rx.recv(),
188+
)
182189
.await
183-
.ok_or_else(|| Error::Others("Recive packet from recver error".to_string()))?;
190+
.map_err(|e| Error::Others(format!("Receive packet timeout {:?}", e)))?
191+
.ok_or_else(|| Error::Others("Receive packet from receiver error".to_string()))?
192+
};
184193

185194
let buf = result?;
186195
let mut s = CodedInputStream::from_bytes(&buf);

0 commit comments

Comments
 (0)