mirror of
https://github.com/golang/go
synced 2024-11-18 11:44:45 -07:00
syscall: add Conn and RawConn interfaces
This change adds Conn and RawConn interfaces which can be used to manipulate raw network connection end points typically represented as socket descriptors. Fixes #19435. Change-Id: Ide2d28eeab91bfd27473ab47a87bec69950b64c9 Reviewed-on: https://go-review.googlesource.com/37913 Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
64f064cac6
commit
de5c573baa
34
src/syscall/net.go
Normal file
34
src/syscall/net.go
Normal file
@ -0,0 +1,34 @@
|
||||
// Copyright 2017 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package syscall
|
||||
|
||||
// A RawConn is a raw network connection.
|
||||
type RawConn interface {
|
||||
// Control invokes f on the underlying connection's file
|
||||
// descriptor or handle.
|
||||
// The file descriptor fd is guaranteed to remain valid while
|
||||
// f executes but not after f returns.
|
||||
Control(f func(fd uintptr)) error
|
||||
|
||||
// Read invokes f on the underlying connection's file
|
||||
// descriptor or handle; f is expected to try to read from the
|
||||
// file descriptor.
|
||||
// If f returns true, Read returns. Otherwise Read blocks
|
||||
// waiting for the connection to be ready for reading and
|
||||
// tries again repeatedly.
|
||||
// The file descriptor is guaranteed to remain valid while f
|
||||
// executes but not after f returns.
|
||||
Read(f func(fd uintptr) (done bool)) error
|
||||
|
||||
// Write is like Read but for writing.
|
||||
Write(f func(fd uintptr) (done bool)) error
|
||||
}
|
||||
|
||||
// Conn is implemented by some types in the net package to provide
|
||||
// access to the underlying file descriptor or handle.
|
||||
type Conn interface {
|
||||
// SyscallConn returns a raw network connection.
|
||||
SyscallConn() (RawConn, error)
|
||||
}
|
Loading…
Reference in New Issue
Block a user