From a0917eb959c881521e1407f90e27329f673d3e75 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 19 Mar 2020 13:52:14 -0700 Subject: [PATCH] internal/poll: merge a couple of common definitions (*FD).Shutdown and (*FD).RawControl were exactly identical in fd_unix.go and fd_windows.go, so merge them into fd_posix.go. Change-Id: Ie751edb06d293e08f1493682d6bc5f22e8f3e628 Reviewed-on: https://go-review.googlesource.com/c/go/+/224137 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- src/internal/poll/fd_posix.go | 20 ++++++++++++++++++++ src/internal/poll/fd_unix.go | 20 -------------------- src/internal/poll/fd_windows.go | 20 -------------------- 3 files changed, 20 insertions(+), 40 deletions(-) diff --git a/src/internal/poll/fd_posix.go b/src/internal/poll/fd_posix.go index d0bacdd473..54747b4c99 100644 --- a/src/internal/poll/fd_posix.go +++ b/src/internal/poll/fd_posix.go @@ -20,6 +20,15 @@ func (fd *FD) eofError(n int, err error) error { return err } +// Shutdown wraps syscall.Shutdown. +func (fd *FD) Shutdown(how int) error { + if err := fd.incref(); err != nil { + return err + } + defer fd.decref() + return syscall.Shutdown(fd.Sysfd, how) +} + // Fchmod wraps syscall.Fchmod. func (fd *FD) Fchmod(mode uint32) error { if err := fd.incref(); err != nil { @@ -46,3 +55,14 @@ func (fd *FD) Ftruncate(size int64) error { defer fd.decref() return syscall.Ftruncate(fd.Sysfd, size) } + +// RawControl invokes the user-defined function f for a non-IO +// operation. +func (fd *FD) RawControl(f func(uintptr)) error { + if err := fd.incref(); err != nil { + return err + } + defer fd.decref() + f(uintptr(fd.Sysfd)) + return nil +} diff --git a/src/internal/poll/fd_unix.go b/src/internal/poll/fd_unix.go index 8752450a1f..4716d58a6e 100644 --- a/src/internal/poll/fd_unix.go +++ b/src/internal/poll/fd_unix.go @@ -112,15 +112,6 @@ func (fd *FD) Close() error { return err } -// Shutdown wraps the shutdown network call. -func (fd *FD) Shutdown(how int) error { - if err := fd.incref(); err != nil { - return err - } - defer fd.decref() - return syscall.Shutdown(fd.Sysfd, how) -} - // SetBlocking puts the file into blocking mode. func (fd *FD) SetBlocking() error { if err := fd.incref(); err != nil { @@ -507,17 +498,6 @@ func (fd *FD) WriteOnce(p []byte) (int, error) { return syscall.Write(fd.Sysfd, p) } -// RawControl invokes the user-defined function f for a non-IO -// operation. -func (fd *FD) RawControl(f func(uintptr)) error { - if err := fd.incref(); err != nil { - return err - } - defer fd.decref() - f(uintptr(fd.Sysfd)) - return nil -} - // RawRead invokes the user-defined function f for a read operation. func (fd *FD) RawRead(f func(uintptr) bool) error { if err := fd.readLock(); err != nil { diff --git a/src/internal/poll/fd_windows.go b/src/internal/poll/fd_windows.go index f96e441abe..cabca75d22 100644 --- a/src/internal/poll/fd_windows.go +++ b/src/internal/poll/fd_windows.go @@ -476,15 +476,6 @@ func (fd *FD) Close() error { return err } -// Shutdown wraps the shutdown network call. -func (fd *FD) Shutdown(how int) error { - if err := fd.incref(); err != nil { - return err - } - defer fd.decref() - return syscall.Shutdown(fd.Sysfd, how) -} - // Windows ReadFile and WSARecv use DWORD (uint32) parameter to pass buffer length. // This prevents us reading blocks larger than 4GB. // See golang.org/issue/26923. @@ -999,17 +990,6 @@ func (fd *FD) GetFileInformationByHandle(data *syscall.ByHandleFileInformation) return syscall.GetFileInformationByHandle(fd.Sysfd, data) } -// RawControl invokes the user-defined function f for a non-IO -// operation. -func (fd *FD) RawControl(f func(uintptr)) error { - if err := fd.incref(); err != nil { - return err - } - defer fd.decref() - f(uintptr(fd.Sysfd)) - return nil -} - // RawRead invokes the user-defined function f for a read operation. func (fd *FD) RawRead(f func(uintptr) bool) error { if err := fd.readLock(); err != nil { -- 2.48.1