diff options
Diffstat (limited to 'embassy-net')
| -rw-r--r-- | embassy-net/Cargo.toml | 2 | ||||
| -rw-r--r-- | embassy-net/src/raw.rs | 17 | ||||
| -rw-r--r-- | embassy-net/src/udp.rs | 17 |
3 files changed, 35 insertions, 1 deletions
diff --git a/embassy-net/Cargo.toml b/embassy-net/Cargo.toml index a33c693fc..8a29aca79 100644 --- a/embassy-net/Cargo.toml +++ b/embassy-net/Cargo.toml | |||
| @@ -68,7 +68,7 @@ multicast = ["smoltcp/multicast"] | |||
| 68 | defmt = { version = "0.3", optional = true } | 68 | defmt = { version = "0.3", optional = true } |
| 69 | log = { version = "0.4.14", optional = true } | 69 | log = { version = "0.4.14", optional = true } |
| 70 | 70 | ||
| 71 | smoltcp = { git="https://github.com/smoltcp-rs/smoltcp", rev="b65e1b64dc9b66fa984a2ad34e90685cb0b606de", default-features = false, features = [ | 71 | smoltcp = { git="https://github.com/smoltcp-rs/smoltcp", rev="fe0b4d102253465850cd1cf39cd33d4721a4a8d5", default-features = false, features = [ |
| 72 | "socket", | 72 | "socket", |
| 73 | "async", | 73 | "async", |
| 74 | ] } | 74 | ] } |
diff --git a/embassy-net/src/raw.rs b/embassy-net/src/raw.rs index 1098dc208..ace325a46 100644 --- a/embassy-net/src/raw.rs +++ b/embassy-net/src/raw.rs | |||
| @@ -108,6 +108,23 @@ impl<'a> RawSocket<'a> { | |||
| 108 | } | 108 | } |
| 109 | }) | 109 | }) |
| 110 | } | 110 | } |
| 111 | |||
| 112 | /// Flush the socket. | ||
| 113 | /// | ||
| 114 | /// This method will wait until the socket is flushed. | ||
| 115 | pub async fn flush(&mut self) { | ||
| 116 | poll_fn(move |cx| { | ||
| 117 | self.with_mut(|s, _| { | ||
| 118 | if s.send_queue() == 0 { | ||
| 119 | Poll::Ready(()) | ||
| 120 | } else { | ||
| 121 | s.register_send_waker(cx.waker()); | ||
| 122 | Poll::Pending | ||
| 123 | } | ||
| 124 | }) | ||
| 125 | }) | ||
| 126 | .await | ||
| 127 | } | ||
| 111 | } | 128 | } |
| 112 | 129 | ||
| 113 | impl Drop for RawSocket<'_> { | 130 | impl Drop for RawSocket<'_> { |
diff --git a/embassy-net/src/udp.rs b/embassy-net/src/udp.rs index 3eb6e2f83..ac650364e 100644 --- a/embassy-net/src/udp.rs +++ b/embassy-net/src/udp.rs | |||
| @@ -241,6 +241,23 @@ impl<'a> UdpSocket<'a> { | |||
| 241 | .await | 241 | .await |
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | /// Flush the socket. | ||
| 245 | /// | ||
| 246 | /// This method will wait until the socket is flushed. | ||
| 247 | pub async fn flush(&mut self) { | ||
| 248 | poll_fn(move |cx| { | ||
| 249 | self.with_mut(|s, _| { | ||
| 250 | if s.send_queue() == 0 { | ||
| 251 | Poll::Ready(()) | ||
| 252 | } else { | ||
| 253 | s.register_send_waker(cx.waker()); | ||
| 254 | Poll::Pending | ||
| 255 | } | ||
| 256 | }) | ||
| 257 | }) | ||
| 258 | .await | ||
| 259 | } | ||
| 260 | |||
| 244 | /// Returns the local endpoint of the socket. | 261 | /// Returns the local endpoint of the socket. |
| 245 | pub fn endpoint(&self) -> IpListenEndpoint { | 262 | pub fn endpoint(&self) -> IpListenEndpoint { |
| 246 | self.with(|s, _| s.endpoint()) | 263 | self.with(|s, _| s.endpoint()) |
