@@ -2,8 +2,9 @@ use crate::{
2
2
connection:: { BaseConnection , Buffer } ,
3
3
utils:: { Error , READ_BUFFER_SIZE } ,
4
4
} ;
5
+ use std:: time:: Duration ;
5
6
6
- use std :: { net:: Shutdown , os:: unix:: net:: UnixStream , io :: { Write , Read } } ;
7
+ use async_std :: { io , net:: Shutdown , os:: unix:: net:: UnixStream , prelude :: * } ;
7
8
use async_trait:: async_trait;
8
9
9
10
pub struct UnixSocketConnection {
@@ -28,12 +29,11 @@ impl BaseConnection for UnixSocketConnection {
28
29
if self . connection_setup {
29
30
panic ! ( "Cannot call setup_connection() more than once!" ) ;
30
31
}
31
- let result = UnixStream :: connect ( & self . socket_path ) ;
32
+ let result = UnixStream :: connect ( & self . socket_path ) . await ;
32
33
if let Err ( err) = result {
33
34
return Err ( Error :: Internal ( format ! ( "{}" , err) ) ) ;
34
35
}
35
36
let client = result. unwrap ( ) ;
36
- client. set_nonblocking ( true ) . unwrap ( ) ;
37
37
self . client = Some ( client) ;
38
38
39
39
self . connection_setup = true ;
@@ -55,7 +55,7 @@ impl BaseConnection for UnixSocketConnection {
55
55
if !self . connection_setup || self . client . is_none ( ) {
56
56
panic ! ( "Cannot send data to a connection that hasn't been established yet. Did you forget to await the call to setup_connection()?" ) ;
57
57
}
58
- let result = self . client . as_mut ( ) . unwrap ( ) . write_all ( & buffer) ;
58
+ let result = self . client . as_mut ( ) . unwrap ( ) . write_all ( & buffer) . await ;
59
59
if let Err ( err) = result {
60
60
return Err ( Error :: Internal ( format ! ( "{}" , err) ) ) ;
61
61
}
@@ -72,10 +72,9 @@ impl BaseConnection for UnixSocketConnection {
72
72
73
73
while read_size > 0 {
74
74
let mut buf = [ 0u8 ; READ_BUFFER_SIZE ] ;
75
- let result = client. read ( & mut buf) ;
75
+ let result = io :: timeout ( Duration :: from_millis ( 10 ) , client. read ( & mut buf) ) . await ;
76
76
if result. is_err ( ) {
77
- println ! ( "Error: {}" , result. unwrap_err( ) ) ;
78
- return None ;
77
+ return Some ( buffer) ;
79
78
}
80
79
read_size = result. unwrap ( ) ;
81
80
buffer. extend ( buf[ ..read_size] . into_iter ( ) ) ;
0 commit comments