From 66c3aa534f4b4a7628dae70700017164a9c5fc1d Mon Sep 17 00:00:00 2001 From: Harry Ho Date: Fri, 12 Mar 2021 11:26:07 +0800 Subject: [PATCH] =?UTF-8?q?nal:=20socket=20(TcpSocket)=20=E2=86=92=20handl?= =?UTF-8?q?e;=20internal=5Fsocket=20=E2=86=92=20socket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/nal.rs | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/nal.rs b/src/nal.rs index 5bb9fd3..3ae4b76 100644 --- a/src/nal.rs +++ b/src/nal.rs @@ -146,8 +146,8 @@ where Some(handle) => { // Abort any active connections on the handle. let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); - internal_socket.abort(); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); + socket.abort(); Ok(handle) } None => Err(NetworkError::NoSocket), @@ -156,30 +156,30 @@ where fn connect( &self, - socket: Self::TcpSocket, + handle: Self::TcpSocket, remote: nal::SocketAddr, ) -> Result { { // If the socket has already been connected, ignore the connection // request silently. let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(socket); - if internal_socket.state() == net::socket::TcpState::Established { - return Ok(socket) + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); + if socket.state() == net::socket::TcpState::Established { + return Ok(handle) } } { let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(socket); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); // abort() instead of close() prevents TcpSocket::connect() from // raising an error - internal_socket.abort(); + socket.abort(); match remote.ip() { nal::IpAddr::V4(addr) => { let address = net::wire::Ipv4Address::from_bytes(&addr.octets()[..]); - internal_socket + socket .connect((address, remote.port()), self.get_ephemeral_port()) .map_err(|_| NetworkError::ConnectionFailure)?; net::wire::IpAddress::Ipv4(address) @@ -187,7 +187,7 @@ where nal::IpAddr::V6(addr) => { let address = net::wire::Ipv6Address::from_parts(&addr.segments()[..]); - internal_socket + socket .connect((address, remote.port()), self.get_ephemeral_port()) .map_err(|_| NetworkError::ConnectionFailure)?; net::wire::IpAddress::Ipv6(address) @@ -201,19 +201,19 @@ where loop { { let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(socket); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); // TCP state at ESTABLISHED means there is connection, so // simply return the socket. - if internal_socket.state() == net::socket::TcpState::Established { - return Ok(socket) + if socket.state() == net::socket::TcpState::Established { + return Ok(handle) } // TCP state at CLOSED implies that the remote rejected connection; // In this case, abort the connection, and then return the socket // for re-connection in the future. - if internal_socket.state() == net::socket::TcpState::Closed { - internal_socket.abort(); + if socket.state() == net::socket::TcpState::Closed { + socket.abort(); // TODO: Return Err(), but would require changes in quartiq/minimq - return Ok(socket) + return Ok(handle) } } // Any TCP states other than CLOSED and ESTABLISHED are considered @@ -224,24 +224,24 @@ where // Time out, and return the socket for re-connection in the future. if timeout_ms > self.connection_timeout_ms { // TODO: Return Err(), but would require changes in quartiq/minimq - return Ok(socket) + return Ok(handle) } } } - fn is_connected(&self, socket: &Self::TcpSocket) -> Result { + fn is_connected(&self, handle: &Self::TcpSocket) -> Result { let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(*socket); - Ok(internal_socket.state() == net::socket::TcpState::Established) + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(*handle); + Ok(socket.state() == net::socket::TcpState::Established) } - fn write(&self, socket: &mut Self::TcpSocket, buffer: &[u8]) -> nb::Result { + fn write(&self, handle: &mut Self::TcpSocket, buffer: &[u8]) -> nb::Result { let mut write_error = false; let mut non_queued_bytes = &buffer[..]; while non_queued_bytes.len() != 0 { let result = { let mut sockets = self.sockets.borrow_mut(); - let socket: &mut net::socket::TcpSocket = &mut *sockets.get(*socket); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(*handle); let result = socket.send_slice(non_queued_bytes); result }; @@ -264,7 +264,7 @@ where if write_error { // Close the socket to push it back to the array, for // re-opening the socket in the future - self.close(*socket)?; + self.close(*handle)?; return Err(nb::Error::Other(NetworkError::WriteFailure)) } Ok(buffer.len()) @@ -272,7 +272,7 @@ where fn read( &self, - socket: &mut Self::TcpSocket, + handle: &mut Self::TcpSocket, buffer: &mut [u8], ) -> nb::Result { // Enqueue received bytes into the TCP socket buffer @@ -280,7 +280,7 @@ where self.poll()?; { let mut sockets = self.sockets.borrow_mut(); - let socket: &mut net::socket::TcpSocket = &mut *sockets.get(*socket); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(*handle); let result = socket.recv_slice(buffer); match result { Ok(num_bytes) => { return Ok(num_bytes) }, @@ -289,15 +289,15 @@ where } // Close the socket to push it back to the array, for // re-opening the socket in the future - self.close(*socket)?; + self.close(*handle)?; Err(nb::Error::Other(NetworkError::ReadFailure)) } - fn close(&self, socket: Self::TcpSocket) -> Result<(), Self::Error> { + fn close(&self, handle: Self::TcpSocket) -> Result<(), Self::Error> { let mut sockets = self.sockets.borrow_mut(); - let internal_socket: &mut net::socket::TcpSocket = &mut *sockets.get(socket); - internal_socket.close(); - self.unused_handles.borrow_mut().push(socket).unwrap(); + let socket: &mut net::socket::TcpSocket = &mut *sockets.get(handle); + socket.close(); + self.unused_handles.borrow_mut().push(handle).unwrap(); Ok(()) } } \ No newline at end of file