fsconn

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithInterceptor

func ContextWithInterceptor(ctx context.Context, its ...*Interceptor) context.Context

ContextWithInterceptor set connWithIt interceptor to context

func NewWithContext

func NewWithContext(ctx context.Context, conn net.Conn) net.Conn

NewWithContext 取出 ctx 里的 Interceptor, 并对 conn 进行封装

func OriginConn

func OriginConn(conn net.Conn) net.Conn

OriginConn 获取最底层的 net.Conn

func RawListener

func RawListener(l net.Listener) net.Listener

RawListener 返回原始连接

func RegisterInterceptor

func RegisterInterceptor(its ...*Interceptor)

RegisterInterceptor 注册全局的 Interceptor 会在通过 ctx 注册的之前执行

func Service

func Service(c Info) any

Service 读取连接的 service 属性

func WithInterceptor

func WithInterceptor(c net.Conn, its ...*Interceptor) net.Conn

WithInterceptor wrap connWithIt with Interceptor its 将倒序执行:后注册的先执行

func WithService

func WithService(service any, c net.Conn) net.Conn

Types

type Copy

type Copy struct {
	// ReadTo 将 Read 到的数据写入此处,比如 os.Stdout
	ReadTo io.Writer

	// WriterTo 将 Writer 的数据写入此处,比如 os.Stdout
	WriterTo io.Writer
	// contains filtered or unexported fields
}

Copy 实现对网络连接读写数据的复制

func (*Copy) EnableRead

func (cc *Copy) EnableRead(enable bool)

EnableRead 设置是否允许 copy read 流量

func (*Copy) EnableWrite

func (cc *Copy) EnableWrite(enable bool)

EnableWrite 设置是否允许 copy write 流量

func (*Copy) Interceptor

func (cc *Copy) Interceptor() *Interceptor

Interceptor 获取 Interceptor 实例

type HasRaw

type HasRaw interface {
	RawConn() net.Conn
}

HasRaw 有原始的 net.Conn

type HasService

type HasService interface {
	// Service 服务名
	Service() any
}

HasService 用于判断是否有服务名

type Info

type Info interface {
	// LocalAddr returns the local network address, if known.
	LocalAddr() net.Addr

	// RemoteAddr returns the remote network address, if known.
	RemoteAddr() net.Addr
}

type Interceptor

type Interceptor struct {
	Read      func(info Info, b []byte, invoker func([]byte) (int, error)) (int, error)
	AfterRead func(info Info, b []byte, readSize int, err error)

	Write      func(info Info, b []byte, invoker func([]byte) (int, error)) (int, error)
	AfterWrite func(info Info, b []byte, wroteSize int, err error)

	Close      func(info Info, invoker func() error) error
	AfterClose func(info Info, err error)

	LocalAddr  func(info Info, invoker func() net.Addr) net.Addr
	RemoteAddr func(info Info, invoker func() net.Addr) net.Addr

	SetDeadline      func(info Info, tm time.Time, invoker func(tm time.Time) error) error
	AfterSetDeadline func(info Info, tm time.Time, err error)

	SetReadDeadline      func(info Info, tm time.Time, invoker func(tm time.Time) error) error
	AfterSetReadDeadline func(info Info, tm time.Time, err error)

	SetWriteDeadline      func(info Info, tm time.Time, invoker func(tm time.Time) error) error
	AfterSetWriteDeadline func(info Info, tm time.Time, err error)
}

Interceptor for net.Conn

func InterceptorsFromContext

func InterceptorsFromContext(ctx context.Context) []*Interceptor

InterceptorsFromContext get connWithIt ConnInterceptors from context

type Listener

type Listener struct {
	net.Listener

	AfterAccepts []func(conn net.Conn) (net.Conn, error)

	AcceptTimeout time.Duration
	// contains filtered or unexported fields
}

Listener 支持自定义回调的 Listener

func (*Listener) Accept

func (l *Listener) Accept() (net.Conn, error)

Accept 获得一个连接

func (*Listener) RawListener

func (l *Listener) RawListener() net.Listener

RawListener 返回当前对象的底层 Listener

type ReadTracer

type ReadTracer struct {
	// contains filtered or unexported fields
}

ReadTracer 获取所有通过 Read 方法读取的数据的副本

func (*ReadTracer) ConnInterceptor

func (ch *ReadTracer) ConnInterceptor() *Interceptor

ConnInterceptor 获取 Interceptor 实例

func (*ReadTracer) ReadBytes

func (ch *ReadTracer) ReadBytes() []byte

ReadBytes Read 方法读取到的数据的副本

func (*ReadTracer) Reset

func (ch *ReadTracer) Reset()

Reset 重置 buffer

type StreamConn

type StreamConn struct {
	// Addr 要连接的网络地址,必填
	Addr net.Addr

	// Logger 可选,打印日志的 writer
	Logger io.Writer

	// Dial 可选,拨号函数
	Dial func(ctx context.Context, addr net.Addr) (net.Conn, error)

	// Wrap 可选
	Wrap func(conn net.Conn) net.Conn

	// DialTimeout 拨号超时时间,可选,默认为 3s
	DialTimeout time.Duration

	// Retry 可选,重试次数,默认为 0 (不重试)
	// -1 :无限重试
	Retry int

	// RetryWait 可选,重试等待间隔时间
	// 默认值为 1s
	RetryWait time.Duration
	// contains filtered or unexported fields
}

StreamConn 一个总是保持连接的 WriterReader

func (*StreamConn) Close

func (sc *StreamConn) Close() error

func (*StreamConn) Read

func (sc *StreamConn) Read(b []byte) (int, error)

func (*StreamConn) RemoteAddr

func (sc *StreamConn) RemoteAddr() net.Addr

RemoteAddr 当前连接的远端地址

func (*StreamConn) Write

func (sc *StreamConn) Write(b []byte) (int, error)

type WriteTracer

type WriteTracer struct {
	// contains filtered or unexported fields
}

WriteTracer 获取所有通过 Write 方法写出的数据的副本

func (*WriteTracer) Interceptor

func (ch *WriteTracer) Interceptor() *Interceptor

Interceptor 获取 Interceptor 实例

func (*WriteTracer) Reset

func (ch *WriteTracer) Reset()

Reset 重置 buffer

func (*WriteTracer) WriteBytes

func (ch *WriteTracer) WriteBytes() []byte

WriteBytes Write 方法写出的数据的副本

Directories

Path Synopsis
Package conndump 提供通用的流量 dump 的功能
Package conndump 提供通用的流量 dump 的功能

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL