Documentation ¶
Overview ¶
Package sockets provides helper functions to create and configure Unix or TCP sockets.
Package sockets provides helper functions to create and configure Unix or TCP sockets.
Package sockets is a simple unix domain socket wrapper.
Usage ¶
For example:
import( "fmt" "net" "os" "github.com/docker/go-connections/sockets" ) func main() { l, err := sockets.NewUnixSocketWithOpts("/path/to/sockets", sockets.WithChown(0,0),sockets.WithChmod(0660)) if err != nil { panic(err) } echoStr := "hello" go func() { for { conn, err := l.Accept() if err != nil { return } conn.Write([]byte(echoStr)) conn.Close() } }() conn, err := net.Dial("unix", path) if err != nil { t.Fatal(err) } buf := make([]byte, 5) if _, err := conn.Read(buf); err != nil { panic(err) } else if string(buf) != echoStr { panic(fmt.Errorf("Msg may lost")) } }
Index ¶
- Variables
- func ConfigureTransport(tr *http.Transport, proto, addr string) error
- func DialPipe(_ string, _ time.Duration) (net.Conn, error)
- func DialerFromEnvironment(direct *net.Dialer) (proxy.Dialer, error)
- func GetProxyEnv(key string) string
- func NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error)
- func NewUnixSocket(path string, gid int) (net.Listener, error)
- func NewUnixSocketWithOpts(path string, opts ...SockOption) (net.Listener, error)
- type InmemSocket
- type SockOption
Constants ¶
This section is empty.
Variables ¶
var ErrProtocolNotAvailable = errors.New("protocol not available")
ErrProtocolNotAvailable is returned when a given transport protocol is not provided by the operating system.
Functions ¶
func ConfigureTransport ¶
ConfigureTransport configures the specified Transport according to the specified proto and addr. If the proto is unix (using a unix socket to communicate) or npipe the compression is disabled.
func DialerFromEnvironment ¶
DialerFromEnvironment takes in a "direct" *net.Dialer and returns a proxy.Dialer which will route the connections through the proxy using the given dialer.
func GetProxyEnv ¶
GetProxyEnv allows access to the uppercase and the lowercase forms of proxy-related variables. See the Go specification for details on these variables. https://golang.org/pkg/net/http/
func NewTCPSocket ¶
NewTCPSocket creates a TCP socket listener with the specified address and the specified tls configuration. If TLSConfig is set, will encapsulate the TCP listener inside a TLS one.
func NewUnixSocket ¶
NewUnixSocket creates a unix socket with the specified path and group.
func NewUnixSocketWithOpts ¶
func NewUnixSocketWithOpts(path string, opts ...SockOption) (net.Listener, error)
NewUnixSocketWithOpts creates a unix socket with the specified options
Types ¶
type InmemSocket ¶
type InmemSocket struct {
// contains filtered or unexported fields
}
InmemSocket implements net.Listener using in-memory only connections.
func NewInmemSocket ¶
func NewInmemSocket(addr string, bufSize int) *InmemSocket
NewInmemSocket creates an in-memory only net.Listener The addr argument can be any string, but is used to satisfy the `Addr()` part of the net.Listener interface
func (*InmemSocket) Accept ¶
func (s *InmemSocket) Accept() (net.Conn, error)
Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn.
func (*InmemSocket) Addr ¶
func (s *InmemSocket) Addr() net.Addr
Addr returns the socket's addr string to satisfy net.Listener
func (*InmemSocket) Close ¶
func (s *InmemSocket) Close() error
Close closes the listener. It will be unavailable for use once closed.
type SockOption ¶
SockOption sets up socket file's creating option
func WithChmod ¶
func WithChmod(mask os.FileMode) SockOption
WithChmod modifies socket file's access mode
func WithChown ¶
func WithChown(uid, gid int) SockOption
WithChown modifies the socket file's uid and gid