aboutsummaryrefslogtreecommitdiff
path: root/embassy-net/src
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net/src')
-rw-r--r--embassy-net/src/tcp.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/embassy-net/src/tcp.rs b/embassy-net/src/tcp.rs
index 74eff9dae..be0e1a129 100644
--- a/embassy-net/src/tcp.rs
+++ b/embassy-net/src/tcp.rs
@@ -660,12 +660,25 @@ pub mod client {
660 pub struct TcpClient<'d, D: Driver, const N: usize, const TX_SZ: usize = 1024, const RX_SZ: usize = 1024> { 660 pub struct TcpClient<'d, D: Driver, const N: usize, const TX_SZ: usize = 1024, const RX_SZ: usize = 1024> {
661 stack: &'d Stack<D>, 661 stack: &'d Stack<D>,
662 state: &'d TcpClientState<N, TX_SZ, RX_SZ>, 662 state: &'d TcpClientState<N, TX_SZ, RX_SZ>,
663 socket_timeout: Option<Duration>,
663 } 664 }
664 665
665 impl<'d, D: Driver, const N: usize, const TX_SZ: usize, const RX_SZ: usize> TcpClient<'d, D, N, TX_SZ, RX_SZ> { 666 impl<'d, D: Driver, const N: usize, const TX_SZ: usize, const RX_SZ: usize> TcpClient<'d, D, N, TX_SZ, RX_SZ> {
666 /// Create a new `TcpClient`. 667 /// Create a new `TcpClient`.
667 pub fn new(stack: &'d Stack<D>, state: &'d TcpClientState<N, TX_SZ, RX_SZ>) -> Self { 668 pub fn new(stack: &'d Stack<D>, state: &'d TcpClientState<N, TX_SZ, RX_SZ>) -> Self {
668 Self { stack, state } 669 Self {
670 stack,
671 state,
672 socket_timeout: None,
673 }
674 }
675
676 /// Set the timeout for each socket created by this `TcpClient`.
677 ///
678 /// If the timeout is set, the socket will be closed if no data is received for the
679 /// specified duration.
680 pub fn set_timeout(&mut self, timeout: Option<Duration>) {
681 self.socket_timeout = timeout;
669 } 682 }
670 } 683 }
671 684
@@ -691,6 +704,7 @@ pub mod client {
691 }; 704 };
692 let remote_endpoint = (addr, remote.port()); 705 let remote_endpoint = (addr, remote.port());
693 let mut socket = TcpConnection::new(&self.stack, self.state)?; 706 let mut socket = TcpConnection::new(&self.stack, self.state)?;
707 socket.socket.set_timeout(self.socket_timeout.clone());
694 socket 708 socket
695 .socket 709 .socket
696 .connect(remote_endpoint) 710 .connect(remote_endpoint)