Documentation ¶
Index ¶
- Variables
- func IsCancelOrCloseError(err error) bool
- func IsConnectionBrokenError(err error) bool
- func IsIPv6(addr net.IP) bool
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) NetConn() net.Conn
- func (c *Conn) ReadFullWithContext(ctx context.Context, buffer []byte) error
- func (c *Conn) ReadWithContext(ctx context.Context, buffer []byte) (int, error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) WriteWithContext(ctx context.Context, data []byte) error
- type ContextOption
- type ControlMessage
- type DTLSListener
- type ErrorsOpt
- type InterfaceError
- type MulticastHoplimitOpt
- type MulticastInterfaceErrorOpt
- type MulticastInterfaceMode
- type MulticastInterfaceModeOpt
- type MulticastInterfaceOpt
- type MulticastOption
- func WithAllMulticastInterface() MulticastOption
- func WithAnyMulticastInterface() MulticastOption
- func WithMulticastHoplimit(hoplimit int) MulticastOption
- func WithMulticastInterface(iface net.Interface) MulticastOption
- func WithMulticastInterfaceError(interfaceError InterfaceError) MulticastOption
- func WithMulticastSource(source net.IP) MulticastOption
- type MulticastOptions
- type MulticastSourceOpt
- type ReadWriteOptionHandler
- type TCPListener
- type TLSListener
- type UDPConn
- func (c *UDPConn) Close() error
- func (c *UDPConn) JoinGroup(ifi *net.Interface, group net.Addr) error
- func (c *UDPConn) LeaveGroup(ifi *net.Interface, group net.Addr) error
- func (c *UDPConn) LocalAddr() net.Addr
- func (c *UDPConn) NetConn() net.Conn
- func (c *UDPConn) Network() string
- func (c *UDPConn) ReadWithContext(ctx context.Context, buffer []byte) (int, *net.UDPAddr, error)
- func (c *UDPConn) ReadWithOptions(buffer []byte, opts ...UDPReadOption) (int, error)
- func (c *UDPConn) RemoteAddr() net.Addr
- func (c *UDPConn) SetMulticastLoopback(on bool) error
- func (c *UDPConn) WriteMulticast(ctx context.Context, raddr *net.UDPAddr, buffer []byte, ...) error
- func (c *UDPConn) WriteWithContext(ctx context.Context, raddr *net.UDPAddr, buffer []byte) error
- func (c *UDPConn) WriteWithOptions(buffer []byte, opts ...UDPWriteOption) error
- type UDPConnConfig
- type UDPOption
- type UDPReadApplyFunc
- type UDPReadCfg
- type UDPReadOption
- type UDPWriteApplyFunc
- type UDPWriteCfg
- type UDPWriteOption
Constants ¶
This section is empty.
Variables ¶
var ( ErrListenerIsClosed = io.EOF ErrConnectionIsClosed = io.EOF ErrWriteInterrupted = errors.New("only part data was written to socket") )
var DefaultUDPConnConfig = UDPConnConfig{ Errors: func(error) { }, }
Functions ¶
func IsCancelOrCloseError ¶
func IsConnectionBrokenError ¶
Check if error returned by operation on a socket failed because the other side has closed the connection.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is a generic stream-oriented network connection that provides Read/Write with context.
Multiple goroutines may invoke methods on a Conn simultaneously.
func (*Conn) LocalAddr ¶
LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it.
func (*Conn) NetConn ¶
NetConn returns the underlying connection that is wrapped by c. The Conn returned is shared by all invocations of Connection, so do not modify it.
func (*Conn) ReadFullWithContext ¶
ReadFullWithContext reads stream with context until whole buffer is satisfied.
func (*Conn) ReadWithContext ¶
ReadWithContext reads stream with context.
func (*Conn) RemoteAddr ¶
RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it.
type ContextOption ¶ added in v3.2.0
func WithContext ¶ added in v3.2.0
func WithContext(ctx context.Context) ContextOption
WithContext sets the context of operation.
func (ContextOption) ApplyRead ¶ added in v3.2.0
func (o ContextOption) ApplyRead(cfg *UDPReadCfg)
func (ContextOption) ApplyWrite ¶ added in v3.2.0
func (o ContextOption) ApplyWrite(cfg *UDPWriteCfg)
type ControlMessage ¶
type ControlMessage struct { Dst net.IP // destination address of the packet Src net.IP // source address of the packet IfIndex int // interface index, 0 means any interface }
func (*ControlMessage) GetIfIndex ¶ added in v3.2.0
func (c *ControlMessage) GetIfIndex() int
GetIfIndex returns the interface index of the network interface. 0 means no interface index specified.
func (*ControlMessage) String ¶ added in v3.2.0
func (c *ControlMessage) String() string
type DTLSListener ¶
type DTLSListener struct {
// contains filtered or unexported fields
}
DTLSListener is a DTLS listener that provides accept with context.
func NewDTLSListener ¶
NewDTLSListener creates dtls listener. Known networks are "udp", "udp4" (IPv4-only), "udp6" (IPv6-only).
func (*DTLSListener) Accept ¶
func (l *DTLSListener) Accept() (net.Conn, error)
Accept waits for a generic Conn.
func (*DTLSListener) AcceptWithContext ¶
AcceptWithContext waits with context for a generic Conn.
func (*DTLSListener) Addr ¶
func (l *DTLSListener) Addr() net.Addr
Addr represents a network end point address.
type ErrorsOpt ¶
type ErrorsOpt struct {
// contains filtered or unexported fields
}
func WithErrors ¶
func (ErrorsOpt) ApplyUDP ¶
func (h ErrorsOpt) ApplyUDP(o *UDPConnConfig)
type InterfaceError ¶
type MulticastHoplimitOpt ¶
type MulticastHoplimitOpt struct {
// contains filtered or unexported fields
}
type MulticastInterfaceErrorOpt ¶
type MulticastInterfaceErrorOpt struct {
// contains filtered or unexported fields
}
type MulticastInterfaceMode ¶
type MulticastInterfaceMode int
const ( MulticastAllInterface MulticastInterfaceMode = 0 MulticastAnyInterface MulticastInterfaceMode = 1 MulticastSpecificInterface MulticastInterfaceMode = 2 )
type MulticastInterfaceModeOpt ¶
type MulticastInterfaceModeOpt struct {
// contains filtered or unexported fields
}
type MulticastInterfaceOpt ¶
type MulticastInterfaceOpt struct {
// contains filtered or unexported fields
}
type MulticastOption ¶
type MulticastOption interface {
// contains filtered or unexported methods
}
A MulticastOption sets options such as hop limit, etc.
func WithAllMulticastInterface ¶
func WithAllMulticastInterface() MulticastOption
func WithAnyMulticastInterface ¶
func WithAnyMulticastInterface() MulticastOption
func WithMulticastHoplimit ¶
func WithMulticastHoplimit(hoplimit int) MulticastOption
func WithMulticastInterface ¶
func WithMulticastInterface(iface net.Interface) MulticastOption
func WithMulticastInterfaceError ¶
func WithMulticastInterfaceError(interfaceError InterfaceError) MulticastOption
WithMulticastInterfaceError sets the callback for interface errors. If it is set error is not propagated as result of WriteMulticast.
func WithMulticastSource ¶
func WithMulticastSource(source net.IP) MulticastOption
type MulticastOptions ¶
type MulticastOptions struct { IFaceMode MulticastInterfaceMode Iface *net.Interface Source *net.IP HopLimit int InterfaceError InterfaceError }
func DefaultMulticastOptions ¶
func DefaultMulticastOptions() MulticastOptions
func (*MulticastOptions) Apply ¶
func (m *MulticastOptions) Apply(o MulticastOption)
type MulticastSourceOpt ¶
type MulticastSourceOpt struct {
// contains filtered or unexported fields
}
type ReadWriteOptionHandler ¶ added in v3.2.0
type ReadWriteOptionHandler[F UDPWriteApplyFunc | UDPReadApplyFunc] struct { Func F }
func (ReadWriteOptionHandler[F]) ApplyRead ¶ added in v3.2.0
func (o ReadWriteOptionHandler[F]) ApplyRead(cfg *UDPReadCfg)
func (ReadWriteOptionHandler[F]) ApplyWrite ¶ added in v3.2.0
func (o ReadWriteOptionHandler[F]) ApplyWrite(cfg *UDPWriteCfg)
type TCPListener ¶
type TCPListener struct {
// contains filtered or unexported fields
}
TCPListener is a TCP network listener that provides accept with context.
func NewTCPListener ¶
func NewTCPListener(network string, addr string) (*TCPListener, error)
NewTCPListener creates tcp listener. Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only).
func (*TCPListener) Accept ¶
func (l *TCPListener) Accept() (net.Conn, error)
Accept waits for a generic Conn.
func (*TCPListener) AcceptWithContext ¶
AcceptWithContext waits with context for a generic Conn.
func (*TCPListener) Addr ¶
func (l *TCPListener) Addr() net.Addr
Addr represents a network end point address.
type TLSListener ¶
type TLSListener struct {
// contains filtered or unexported fields
}
TLSListener is a TLS listener that provides accept with context.
func NewTLSListener ¶
NewTLSListener creates tcp listener. Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only).
func (*TLSListener) Accept ¶
func (l *TLSListener) Accept() (net.Conn, error)
Accept waits for a generic Conn.
func (*TLSListener) AcceptWithContext ¶
AcceptWithContext waits with context for a generic Conn.
func (*TLSListener) Addr ¶
func (l *TLSListener) Addr() net.Addr
Addr represents a network end point address.
type UDPConn ¶
type UDPConn struct {
// contains filtered or unexported fields
}
UDPConn is a udp connection provides Read/Write with context.
Multiple goroutines may invoke methods on a UDPConn simultaneously.
func NewUDPConn ¶
NewUDPConn creates connection over net.UDPConn.
func (*UDPConn) JoinGroup ¶
JoinGroup joins the group address group on the interface ifi. By default all sources that can cast data to group are accepted. It's possible to mute and unmute data transmission from a specific source by using ExcludeSourceSpecificGroup and IncludeSourceSpecificGroup. JoinGroup uses the system assigned multicast interface when ifi is nil, although this is not recommended because the assignment depends on platforms and sometimes it might require routing configuration.
func (*UDPConn) LeaveGroup ¶
LeaveGroup leaves the group address group on the interface ifi regardless of whether the group is any-source group or source-specific group.
func (*UDPConn) LocalAddr ¶
LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it.
func (*UDPConn) NetConn ¶
NetConn returns the underlying connection that is wrapped by c. The Conn returned is shared by all invocations of NetConn, so do not modify it.
func (*UDPConn) ReadWithContext ¶
ReadWithContext reads packet with context.
func (*UDPConn) ReadWithOptions ¶ added in v3.2.0
func (c *UDPConn) ReadWithOptions(buffer []byte, opts ...UDPReadOption) (int, error)
ReadWithOptions reads packet with options. Via opts you can get also the remote address and control message.
func (*UDPConn) RemoteAddr ¶
RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it.
func (*UDPConn) SetMulticastLoopback ¶
SetMulticastLoopback sets whether transmitted multicast packets should be copied and send back to the originator.
func (*UDPConn) WriteMulticast ¶
func (c *UDPConn) WriteMulticast(ctx context.Context, raddr *net.UDPAddr, buffer []byte, opts ...MulticastOption) error
WriteMulticast sends multicast to the remote multicast address. By default it is sent over all network interfaces and all compatible source IP addresses with hop limit 1. Via opts you can specify the network interface, source IP address, and hop limit.
func (*UDPConn) WriteWithContext ¶
WriteWithContext writes data with context.
func (*UDPConn) WriteWithOptions ¶ added in v3.2.0
func (c *UDPConn) WriteWithOptions(buffer []byte, opts ...UDPWriteOption) error
WriteWithOptions writes data with options. Via opts you can specify the remote address and control message.
type UDPConnConfig ¶
type UDPConnConfig struct {
Errors func(err error)
}
type UDPOption ¶
type UDPOption interface {
ApplyUDP(*UDPConnConfig)
}
A UDPOption sets options such as errors parameters, etc.
type UDPReadApplyFunc ¶ added in v3.2.0
type UDPReadApplyFunc func(cfg *UDPReadCfg)
type UDPReadCfg ¶ added in v3.2.0
type UDPReadCfg struct { Ctx context.Context RemoteAddr **net.UDPAddr ControlMessage **ControlMessage }
func (*UDPReadCfg) ApplyRead ¶ added in v3.2.0
func (c *UDPReadCfg) ApplyRead(cfg *UDPReadCfg)
type UDPReadOption ¶ added in v3.2.0
type UDPReadOption interface {
ApplyRead(cfg *UDPReadCfg)
}
func WithGetControlMessage ¶ added in v3.2.0
func WithGetControlMessage(cm **ControlMessage) UDPReadOption
WithGetControlMessage fills the control message when reading succeeds.
func WithGetRemoteAddr ¶ added in v3.2.0
func WithGetRemoteAddr(raddr **net.UDPAddr) UDPReadOption
WithGetRemoteAddr fills the remote address when reading succeeds.
type UDPWriteApplyFunc ¶ added in v3.2.0
type UDPWriteApplyFunc func(cfg *UDPWriteCfg)
type UDPWriteCfg ¶ added in v3.2.0
type UDPWriteCfg struct { Ctx context.Context RemoteAddr *net.UDPAddr ControlMessage *ControlMessage }
func (*UDPWriteCfg) ApplyWrite ¶ added in v3.2.0
func (c *UDPWriteCfg) ApplyWrite(cfg *UDPWriteCfg)
type UDPWriteOption ¶ added in v3.2.0
type UDPWriteOption interface {
ApplyWrite(cfg *UDPWriteCfg)
}
func WithControlMessage ¶ added in v3.2.0
func WithControlMessage(cm *ControlMessage) UDPWriteOption
WithControlMessage sets the control message to packet.
func WithRemoteAddr ¶ added in v3.2.0
func WithRemoteAddr(raddr *net.UDPAddr) UDPWriteOption
WithRemoteAddr sets the remote address to packet.