Skip to content

Commit 4d36c0e

Browse files
committed
refactor(fd/socket/udp): Flatten deeply nested if chains by reordering
1 parent e91d780 commit 4d36c0e

1 file changed

Lines changed: 31 additions & 35 deletions

File tree

src/fd/socket/udp.rs

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ impl Socket {
5454
async fn write_with_meta(&self, buffer: &[u8], meta: &UdpMetadata) -> io::Result<usize> {
5555
future::poll_fn(|cx| {
5656
self.with(|socket| {
57-
if socket.is_open() {
57+
if !socket.is_open() {
58+
Poll::Ready(Err(Errno::Io))
59+
} else {
5860
if socket.can_send() {
5961
Poll::Ready(
6062
socket
@@ -66,8 +68,6 @@ impl Socket {
6668
socket.register_recv_waker(cx.waker());
6769
Poll::Pending
6870
}
69-
} else {
70-
Poll::Ready(Err(Errno::Io))
7171
}
7272
})
7373
})
@@ -157,25 +157,23 @@ impl ObjectInterface for Socket {
157157
async fn recvfrom(&self, buf: &mut [u8]) -> io::Result<(usize, Endpoint)> {
158158
future::poll_fn(|cx| {
159159
self.with(|socket| {
160-
if socket.is_open() {
161-
if socket.can_recv() {
162-
match socket.recv_slice(buf) {
163-
Ok((len, meta)) => {
164-
if self.remote_endpoint.is_none_or(|ep| ep == meta.endpoint) {
165-
Poll::Ready(Ok((len, meta.endpoint)))
166-
} else {
167-
socket.register_recv_waker(cx.waker());
168-
Poll::Pending
169-
}
160+
if !socket.is_open() {
161+
Poll::Ready(Err(Errno::Io))
162+
} else if !socket.can_recv() {
163+
socket.register_recv_waker(cx.waker());
164+
Poll::Pending
165+
} else {
166+
match socket.recv_slice(buf) {
167+
Ok((len, meta)) => {
168+
if self.remote_endpoint.is_none_or(|ep| ep == meta.endpoint) {
169+
Poll::Ready(Ok((len, meta.endpoint)))
170+
} else {
171+
socket.register_recv_waker(cx.waker());
172+
Poll::Pending
170173
}
171-
_ => Poll::Ready(Err(Errno::Io)),
172174
}
173-
} else {
174-
socket.register_recv_waker(cx.waker());
175-
Poll::Pending
175+
_ => Poll::Ready(Err(Errno::Io)),
176176
}
177-
} else {
178-
Poll::Ready(Err(Errno::Io))
179177
}
180178
})
181179
})
@@ -186,25 +184,23 @@ impl ObjectInterface for Socket {
186184
async fn read(&self, buf: &mut [u8]) -> io::Result<usize> {
187185
future::poll_fn(|cx| {
188186
self.with(|socket| {
189-
if socket.is_open() {
190-
if socket.can_recv() {
191-
match socket.recv_slice(buf) {
192-
Ok((len, meta)) => {
193-
if self.remote_endpoint.is_none_or(|ep| ep == meta.endpoint) {
194-
Poll::Ready(Ok(len))
195-
} else {
196-
socket.register_recv_waker(cx.waker());
197-
Poll::Pending
198-
}
187+
if !socket.is_open() {
188+
Poll::Ready(Err(Errno::Io))
189+
} else if !socket.can_recv() {
190+
socket.register_recv_waker(cx.waker());
191+
Poll::Pending
192+
} else {
193+
match socket.recv_slice(buf) {
194+
Ok((len, meta)) => {
195+
if self.remote_endpoint.is_none_or(|ep| ep == meta.endpoint) {
196+
Poll::Ready(Ok(len))
197+
} else {
198+
socket.register_recv_waker(cx.waker());
199+
Poll::Pending
199200
}
200-
_ => Poll::Ready(Err(Errno::Io)),
201201
}
202-
} else {
203-
socket.register_recv_waker(cx.waker());
204-
Poll::Pending
202+
_ => Poll::Ready(Err(Errno::Io)),
205203
}
206-
} else {
207-
Poll::Ready(Err(Errno::Io))
208204
}
209205
})
210206
})

0 commit comments

Comments
 (0)