Leverage kernel copy for UnixStream
UDS can be a sendfile destination, just like TCP sockets.
This commit is contained in:
parent
eda4c63fdc
commit
59874516fa
@ -56,6 +56,7 @@ use crate::mem::ManuallyDrop;
|
||||
use crate::net::TcpStream;
|
||||
use crate::os::unix::fs::FileTypeExt;
|
||||
use crate::os::unix::io::{AsRawFd, FromRawFd, RawFd};
|
||||
use crate::os::unix::net::UnixStream;
|
||||
use crate::process::{ChildStderr, ChildStdin, ChildStdout};
|
||||
use crate::ptr;
|
||||
use crate::sync::atomic::{AtomicBool, Ordering};
|
||||
@ -320,6 +321,34 @@ impl CopyWrite for &TcpStream {
|
||||
}
|
||||
}
|
||||
|
||||
impl CopyRead for UnixStream {
|
||||
fn properties(&self) -> CopyParams {
|
||||
// avoid the stat syscall since we can be fairly sure it's a socket
|
||||
CopyParams(FdMeta::Socket, Some(self.as_raw_fd()))
|
||||
}
|
||||
}
|
||||
|
||||
impl CopyRead for &UnixStream {
|
||||
fn properties(&self) -> CopyParams {
|
||||
// avoid the stat syscall since we can be fairly sure it's a socket
|
||||
CopyParams(FdMeta::Socket, Some(self.as_raw_fd()))
|
||||
}
|
||||
}
|
||||
|
||||
impl CopyWrite for UnixStream {
|
||||
fn properties(&self) -> CopyParams {
|
||||
// avoid the stat syscall since we can be fairly sure it's a socket
|
||||
CopyParams(FdMeta::Socket, Some(self.as_raw_fd()))
|
||||
}
|
||||
}
|
||||
|
||||
impl CopyWrite for &UnixStream {
|
||||
fn properties(&self) -> CopyParams {
|
||||
// avoid the stat syscall since we can be fairly sure it's a socket
|
||||
CopyParams(FdMeta::Socket, Some(self.as_raw_fd()))
|
||||
}
|
||||
}
|
||||
|
||||
impl CopyWrite for ChildStdin {
|
||||
fn properties(&self) -> CopyParams {
|
||||
CopyParams(FdMeta::Pipe, Some(self.as_raw_fd()))
|
||||
|
Loading…
Reference in New Issue
Block a user