stf4go

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2020 License: MIT Imports: 12 Imported by: 0

README

stf4go

simple network tunnel chain facade for golang

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTransport = errors.New("transport load error", errors.WithVendor(errVendor), errors.WithCode(-1))
	ErrMultiAddr = errors.New("multiaddr error", errors.WithVendor(errVendor), errors.WithCode(-2))
	ErrPassword  = errors.New("password error", errors.WithVendor(errVendor), errors.WithCode(-3))
	ErrSign      = errors.New("signature invalid", errors.WithVendor(errVendor), errors.WithCode(-4))
	ErrResource  = errors.New("resource not found", errors.WithVendor(errVendor), errors.WithCode(-5))
)

errors

Functions

func FromNetAddr

func FromNetAddr(addr net.Addr) (multiaddr.Multiaddr, error)

FromNetAddr .

func RegisterTransport

func RegisterTransport(transport Transport)

RegisterTransport transport module init function call this function register transport

func ToNetAddr

func ToNetAddr(addr multiaddr.Multiaddr) (net.Addr, error)

ToNetAddr .

func WrapConn

func WrapConn(conn Conn) (net.Conn, error)

WrapConn .

func WrapListener

func WrapListener(listener Listener) net.Listener

WrapListener wrap stf4go Listener to net.Listener

Types

type Conn

type Conn interface {
	// Read reads data from the connection.
	// Read can be made to time out and return an Error with Timeout() == true
	// after a fixed time limit; see SetDeadline and SetReadDeadline.
	Read(b []byte) (n int, err error)

	// Write writes data to the connection.
	// Write can be made to time out and return an Error with Timeout() == true
	// after a fixed time limit; see SetDeadline and SetWriteDeadline.
	Write(b []byte) (n int, err error)

	// Close closes the connection.
	// Any blocked Read or Write operations will be unblocked and return errors.
	Close() error

	// LocalAddr returns the local network address.
	LocalAddr() multiaddr.Multiaddr

	// RemoteAddr returns the remote network address.
	RemoteAddr() multiaddr.Multiaddr

	// SetDeadline sets the read and write deadlines associated
	// with the connection. It is equivalent to calling both
	// SetReadDeadline and SetWriteDeadline.
	//
	// A deadline is an absolute time after which I/O operations
	// fail with a timeout (see type Error) instead of
	// blocking. The deadline applies to all future and pending
	// I/O, not just the immediately following call to Read or
	// Write. After a deadline has been exceeded, the connection
	// can be refreshed by setting a deadline in the future.
	//
	// An idle timeout can be implemented by repeatedly extending
	// the deadline after successful Read or Write calls.
	//
	// A zero value for t means I/O operations will not time out.
	//
	// Note that if a TCP connection has keep-alive turned on,
	// which is the default unless overridden by Dialer.KeepAlive
	// or ListenConfig.KeepAlive, then a keep-alive failure may
	// also return a timeout error. On Unix systems a keep-alive
	// failure on I/O can be detected using
	// errors.Is(err, syscall.ETIMEDOUT).
	SetDeadline(t time.Time) error

	// SetReadDeadline sets the deadline for future Read calls
	// and any currently-blocked Read call.
	// A zero value for t means Read will not time out.
	SetReadDeadline(t time.Time) error

	// SetWriteDeadline sets the deadline for future Write calls
	// and any currently-blocked Write call.
	// Even if write times out, it may return n > 0, indicating that
	// some of the data was successfully written.
	// A zero value for t means Write will not time out.
	SetWriteDeadline(t time.Time) error
	// Underlying get underlying wrap conn
	Underlying() Conn
}

Conn stf4go connection object

func Dial

func Dial(ctx context.Context, raddr multiaddr.Multiaddr, options ...Option) (Conn, error)

Dial .

type Listener

type Listener interface {
	Close() error
	Accept() (Conn, error)
	Addr() multiaddr.Multiaddr
}

Listener .

func Listen

func Listen(laddr multiaddr.Multiaddr, options ...Option) (Listener, error)

Listen .

type NativeTransport

type NativeTransport interface {
	Transport
	Listen(laddr multiaddr.Multiaddr, options *Options) (Listener, error)
	Dial(ctx context.Context, raddr multiaddr.Multiaddr, options *Options) (Conn, error)
}

NativeTransport .

type Option

type Option func(*Options) error

Option stf4go function option arg

func Config

func Config(config scf4go.Config) Option

Config create config Option

type Options added in v0.0.2

type Options struct {
	Config scf4go.Config
	// contains filtered or unexported fields
}

Options .

func (*Options) GetObj added in v0.0.2

func (cw *Options) GetObj(path ...string) (interface{}, bool)

GetObj .

func (*Options) Load added in v0.0.2

func (cw *Options) Load() error

Load load config

func (*Options) SetConfig added in v0.0.2

func (cw *Options) SetConfig(value interface{}, path ...string)

SetConfig set config value

func (*Options) SetObject added in v0.0.2

func (cw *Options) SetObject(value interface{}, path ...string)

SetObject .

type Transport

type Transport interface {
	// Name transport name
	String() string
	// Transport support protocols
	Protocols() []multiaddr.Protocol
}

Transport stf4go tunnel transport base protocol

type TunnelTransport

type TunnelTransport interface {
	Transport
	Client(conn Conn, raddr multiaddr.Multiaddr, options *Options) (Conn, error)
	Server(conn Conn, laddr multiaddr.Multiaddr, options *Options) (Conn, error)
}

TunnelTransport .

Directories

Path Synopsis
transports
kcp
tcp
tls

Jump to

Keyboard shortcuts

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