From 3a4a1e5f386137514b91c76ad06d909789bcd549 Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Sat, 2 May 2015 19:25:44 -0500 Subject: Implement Debug for std::net::{UdpSocket,TcpStream,TcpListener,Shutdown} Fixes #23134. --- src/libstd/sys/common/net2.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/common/net2.rs b/src/libstd/sys/common/net2.rs index 2b2c31d92ed..08242f6bab8 100644 --- a/src/libstd/sys/common/net2.rs +++ b/src/libstd/sys/common/net2.rs @@ -11,6 +11,7 @@ use prelude::v1::*; use ffi::{CStr, CString}; +use fmt; use io::{self, Error, ErrorKind}; use libc::{self, c_int, c_char, c_void, socklen_t}; use mem; @@ -268,6 +269,16 @@ impl FromInner for TcpStream { } } +impl fmt::Debug for TcpStream { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("TcpStream") + .field("addr", &self.socket_addr()) + .field("peer", &self.peer_addr()) + .field("inner", &self.inner.as_inner()) + .finish() + } +} + //////////////////////////////////////////////////////////////////////////////// // TCP listeners //////////////////////////////////////////////////////////////////////////////// @@ -327,6 +338,15 @@ impl FromInner for TcpListener { } } +impl fmt::Debug for TcpListener { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("TcpListener") + .field("addr", &self.socket_addr()) + .field("inner", &self.inner.as_inner()) + .finish() + } +} + //////////////////////////////////////////////////////////////////////////////// // UDP //////////////////////////////////////////////////////////////////////////////// @@ -445,3 +465,12 @@ impl FromInner for UdpSocket { UdpSocket { inner: socket } } } + +impl fmt::Debug for UdpSocket { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.debug_struct("UdpSocket") + .field("addr", &self.socket_addr()) + .field("inner", &self.inner.as_inner()) + .finish() + } +} -- cgit 1.4.1-3-g733a5 From dd85c42ee151a9d350327f3aab7492a178716507 Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Sun, 3 May 2015 17:13:42 -0500 Subject: Unwrap address values in Debug implementations for TcpStream/TcpListener/UdpSocket. This now omits address fields in Debug implementations when a proper address value cannot be unwrapped. --- src/libstd/sys/common/net2.rs | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/common/net2.rs b/src/libstd/sys/common/net2.rs index 08242f6bab8..688d0edcff1 100644 --- a/src/libstd/sys/common/net2.rs +++ b/src/libstd/sys/common/net2.rs @@ -271,11 +271,18 @@ impl FromInner for TcpStream { impl fmt::Debug for TcpStream { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("TcpStream") - .field("addr", &self.socket_addr()) - .field("peer", &self.peer_addr()) - .field("inner", &self.inner.as_inner()) - .finish() + let mut res = f.debug_struct("TcpStream"); + + if let Ok(addr) = self.socket_addr() { + res = res.field("addr", &addr); + } + + if let Ok(peer) = self.peer_addr() { + res = res.field("peer", &peer); + } + + res = res.field("inner", &self.inner.as_inner()); + res.finish() } } @@ -340,10 +347,14 @@ impl FromInner for TcpListener { impl fmt::Debug for TcpListener { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("TcpListener") - .field("addr", &self.socket_addr()) - .field("inner", &self.inner.as_inner()) - .finish() + let mut res = f.debug_struct("TcpListener"); + + if let Ok(addr) = self.socket_addr() { + res = res.field("addr", &addr); + } + + res = res.field("inner", &self.inner.as_inner()); + res.finish() } } @@ -468,9 +479,13 @@ impl FromInner for UdpSocket { impl fmt::Debug for UdpSocket { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("UdpSocket") - .field("addr", &self.socket_addr()) - .field("inner", &self.inner.as_inner()) - .finish() + let mut res = f.debug_struct("UdpSocket"); + + if let Ok(addr) = self.socket_addr() { + res = res.field("addr", &addr); + } + + res = res.field("inner", &self.inner.as_inner()); + res.finish() } } -- cgit 1.4.1-3-g733a5 From 91f9dd468fe3248d215620db00ecc739e67ae964 Mon Sep 17 00:00:00 2001 From: Nick Hamann Date: Sun, 3 May 2015 17:31:26 -0500 Subject: Change 'inner' field name to 'fd'/'socket' on Unix/Windows in Debug impls --- src/libstd/sys/common/net2.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/common/net2.rs b/src/libstd/sys/common/net2.rs index 688d0edcff1..7da7071670a 100644 --- a/src/libstd/sys/common/net2.rs +++ b/src/libstd/sys/common/net2.rs @@ -281,7 +281,8 @@ impl fmt::Debug for TcpStream { res = res.field("peer", &peer); } - res = res.field("inner", &self.inner.as_inner()); + let name = if cfg!(windows) {"socket"} else {"fd"}; + res = res.field(name, &self.inner.as_inner()); res.finish() } } @@ -353,7 +354,8 @@ impl fmt::Debug for TcpListener { res = res.field("addr", &addr); } - res = res.field("inner", &self.inner.as_inner()); + let name = if cfg!(windows) {"socket"} else {"fd"}; + res = res.field(name, &self.inner.as_inner()); res.finish() } } @@ -485,7 +487,8 @@ impl fmt::Debug for UdpSocket { res = res.field("addr", &addr); } - res = res.field("inner", &self.inner.as_inner()); + let name = if cfg!(windows) {"socket"} else {"fd"}; + res = res.field(name, &self.inner.as_inner()); res.finish() } } -- cgit 1.4.1-3-g733a5