@@ -12,7 +12,7 @@ use crate::{
12
12
runtime:: { fail:: Fail , limits, memory:: DemiBuffer , DemiRuntime } ,
13
13
} ;
14
14
use :: socket2:: Socket ;
15
- use :: std:: { cmp:: min, io , mem:: MaybeUninit , net:: SocketAddr } ;
15
+ use :: std:: { cmp:: min, mem:: MaybeUninit , net:: SocketAddr , slice } ;
16
16
17
17
//======================================================================================================================
18
18
// Structures
@@ -21,7 +21,7 @@ use ::std::{cmp::min, io, mem::MaybeUninit, net::SocketAddr};
21
21
/// This structure represents outgoing packets.
22
22
struct Outgoing {
23
23
addr : Option < SocketAddr > ,
24
- buf : DemiBuffer ,
24
+ buffer : DemiBuffer ,
25
25
result : SharedAsyncValue < Option < Result < ( ) , Fail > > > ,
26
26
}
27
27
@@ -54,43 +54,43 @@ impl ActiveSocketData {
54
54
pub fn poll_send ( & mut self ) {
55
55
if let Some ( Outgoing {
56
56
addr,
57
- mut buf ,
57
+ mut buffer ,
58
58
mut result,
59
59
} ) = self . send_queue . try_pop ( )
60
60
{
61
61
// A dummy request to detect when the socket has connected.
62
- if buf . is_empty ( ) {
62
+ if buffer . is_empty ( ) {
63
63
result. set ( Some ( Ok ( ( ) ) ) ) ;
64
64
return ;
65
65
}
66
66
// Try to send the buffer.
67
- let io_result: Result < usize , io :: Error > = match addr {
68
- Some ( addr) => self . socket . send_to ( & buf , & addr. into ( ) ) ,
69
- None => self . socket . send ( & buf ) ,
67
+ let io_result = match addr {
68
+ Some ( addr) => self . socket . send_to ( & buffer , & addr. into ( ) ) ,
69
+ None => self . socket . send ( & buffer ) ,
70
70
} ;
71
71
match io_result {
72
72
// Operation completed.
73
73
Ok ( nbytes) => {
74
- trace ! ( "data pushed ({:?}/{:?} bytes)" , nbytes, buf . len( ) ) ;
74
+ trace ! ( "data pushed ({:?}/{:?} bytes)" , nbytes, buffer . len( ) ) ;
75
75
expect_ok ! (
76
- buf . adjust( nbytes) ,
76
+ buffer . adjust( nbytes) ,
77
77
"OS should not have sent more bytes than in the buffer"
78
78
) ;
79
- if buf . is_empty ( ) {
79
+ if buffer . is_empty ( ) {
80
80
// Done sending this buffer
81
81
result. set ( Some ( Ok ( ( ) ) ) ) ;
82
82
} else {
83
83
// Only sent part of the buffer so try again later.
84
- self . send_queue . push_front ( Outgoing { addr, buf , result } ) ;
84
+ self . send_queue . push_front ( Outgoing { addr, buffer , result } ) ;
85
85
}
86
86
} ,
87
87
Err ( e) => {
88
- let errno: i32 = get_libc_err ( e) ;
88
+ let errno = get_libc_err ( e) ;
89
89
if DemiRuntime :: should_retry ( errno) {
90
90
// Put the buffer back and try again later.
91
- self . send_queue . push_front ( Outgoing { addr, buf , result } ) ;
91
+ self . send_queue . push_front ( Outgoing { addr, buffer , result } ) ;
92
92
} else {
93
- let cause: String = format ! ( "failed to send on socket: {:?}" , errno) ;
93
+ let cause = format ! ( "failed to send on socket: {:?}" , errno) ;
94
94
error ! ( "poll_send(): {}" , cause) ;
95
95
result. set ( Some ( Err ( Fail :: new ( errno, & cause) ) ) ) ;
96
96
}
@@ -103,30 +103,30 @@ impl ActiveSocketData {
103
103
/// queue.
104
104
/// TODO: Incoming queue should possibly be byte oriented.
105
105
pub fn poll_recv ( & mut self ) {
106
- let mut buf : DemiBuffer = DemiBuffer :: new ( limits:: POP_SIZE_MAX as u16 ) ;
106
+ let mut buffer = DemiBuffer :: new ( limits:: POP_SIZE_MAX as u16 ) ;
107
107
if self . closed {
108
108
return ;
109
109
}
110
110
match self
111
111
. socket
112
- . recv_from ( unsafe { std :: slice:: from_raw_parts_mut ( buf . as_mut_ptr ( ) as * mut MaybeUninit < u8 > , buf . len ( ) ) } )
112
+ . recv_from ( unsafe { slice:: from_raw_parts_mut ( buffer . as_mut_ptr ( ) as * mut MaybeUninit < u8 > , buffer . len ( ) ) } )
113
113
{
114
114
// Operation completed.
115
- Ok ( ( nbytes , socketaddr) ) => {
116
- if let Err ( e) = buf . trim ( buf . len ( ) - nbytes ) {
115
+ Ok ( ( num_bytes , socketaddr) ) => {
116
+ if let Err ( e) = buffer . trim ( buffer . len ( ) - num_bytes ) {
117
117
self . recv_queue . push ( Err ( e) ) ;
118
118
} else {
119
- trace ! ( "data popped ({:?} bytes)" , nbytes ) ;
120
- if buf . is_empty ( ) {
119
+ trace ! ( "data popped ({:?} bytes)" , num_bytes ) ;
120
+ if buffer . is_empty ( ) {
121
121
self . closed = true ;
122
122
}
123
- self . recv_queue . push ( Ok ( ( socketaddr. as_socket ( ) , buf ) ) ) ;
123
+ self . recv_queue . push ( Ok ( ( socketaddr. as_socket ( ) , buffer ) ) ) ;
124
124
}
125
125
} ,
126
126
Err ( e) => {
127
- let errno: i32 = get_libc_err ( e) ;
127
+ let errno = get_libc_err ( e) ;
128
128
if !DemiRuntime :: should_retry ( errno) {
129
- let cause: String = format ! ( "failed to receive on socket: {:?}" , errno) ;
129
+ let cause = format ! ( "failed to receive on socket: {:?}" , errno) ;
130
130
error ! ( "poll_recv(): {}" , cause) ;
131
131
self . recv_queue . push ( Err ( Fail :: new ( errno, & cause) ) ) ;
132
132
}
@@ -135,11 +135,11 @@ impl ActiveSocketData {
135
135
}
136
136
137
137
/// Pushes data to the socket. Blocks until completion.
138
- pub async fn push ( & mut self , addr : Option < SocketAddr > , buf : DemiBuffer ) -> Result < ( ) , Fail > {
139
- let mut result: SharedAsyncValue < Option < Result < ( ) , Fail > > > = SharedAsyncValue :: new ( None ) ;
138
+ pub async fn push ( & mut self , addr : Option < SocketAddr > , buffer : DemiBuffer ) -> Result < ( ) , Fail > {
139
+ let mut result = SharedAsyncValue :: new ( None ) ;
140
140
self . send_queue . push ( Outgoing {
141
141
addr,
142
- buf ,
142
+ buffer ,
143
143
result : result. clone ( ) ,
144
144
} ) ;
145
145
loop {
@@ -153,19 +153,18 @@ impl ActiveSocketData {
153
153
}
154
154
}
155
155
156
- /// Pops data from the socket. Blocks until some data is found but does not wait until the buf has reached [size].
156
+ /// Pops data from the socket. Blocks until some data is found but does not wait until the buffer has reached [size].
157
157
pub async fn pop ( & mut self , size : usize ) -> Result < ( Option < SocketAddr > , DemiBuffer ) , Fail > {
158
- let ( addr, mut incoming ) : ( Option < SocketAddr > , DemiBuffer ) = self . recv_queue . pop ( None ) . await ??;
158
+ let ( addr, mut buffer ) = self . recv_queue . pop ( None ) . await ??;
159
159
// Figure out how much data we got.
160
- let bytes_read: usize = min ( incoming . len ( ) , size) ;
160
+ let bytes_read = min ( buffer . len ( ) , size) ;
161
161
// Trim the buffer and leave for next read if we got more than expected.
162
- if let Ok ( remainder) = incoming . split_back ( bytes_read) {
162
+ if let Ok ( remainder) = buffer . split_back ( bytes_read) {
163
163
if !remainder. is_empty ( ) {
164
164
self . recv_queue . push_front ( Ok ( ( addr, remainder) ) ) ;
165
165
}
166
166
}
167
-
168
- Ok ( ( addr, incoming) )
167
+ Ok ( ( addr, buffer) )
169
168
}
170
169
171
170
pub fn get_socket ( & self ) -> & Socket {
0 commit comments