transport

package
v0.8.12 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2022 License: Apache-2.0 Imports: 22 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrIncompleteHeader = errors.New("incomplete frame header")

ErrIncompleteHeader is error of incomplete header.

Functions

func IsNoHandlerError

func IsNoHandlerError(err error) bool

IsNoHandlerError returns true if input error means no handler registered.

Types

type AddrConn added in v0.7.13

type AddrConn interface {
	Conn
	Addr() string
}

type ClientTransporter

type ClientTransporter func(context.Context) (*Transport, error)

ClientTransporter is alias which generate new client-side transports.

type Conn

type Conn interface {
	io.Closer
	// SetDeadline set deadline for current connection.
	// After this deadline, connection will be closed.
	SetDeadline(deadline time.Time) error
	// SetCounter bind a counter which can count r/w bytes.
	SetCounter(c *core.TrafficCounter)
	// Read reads next frame from Conn.
	Read() (core.BufferedFrame, error)
	// Write writes a frame to Conn.
	Write(core.WriteableFrame) error
	// Flush flushes the data.
	Flush() error
}

Conn is connection for RSocket.

type EventType

type EventType int

EventType represents the events when transport received frames.

const (
	OnSetup EventType = iota
	OnResume
	OnLease
	OnResumeOK
	OnFireAndForget
	OnMetadataPush
	OnRequestResponse
	OnRequestStream
	OnRequestChannel
	OnPayload
	OnRequestN
	OnError
	OnErrorWithZeroStreamID
	OnCancel
	OnKeepalive
)

EventTypes

type FrameHandler

type FrameHandler = func(frame core.BufferedFrame) (err error)

FrameHandler is an alias of frame handler.

type LengthBasedFrameDecoder

type LengthBasedFrameDecoder bufio.Scanner

LengthBasedFrameDecoder defines a decoder for decoding frames which have a header of length.

func NewLengthBasedFrameDecoder

func NewLengthBasedFrameDecoder(r io.Reader) *LengthBasedFrameDecoder

NewLengthBasedFrameDecoder creates a new frame decoder.

func (*LengthBasedFrameDecoder) Read

func (p *LengthBasedFrameDecoder) Read() (raw []byte, err error)

Read reads next raw frame in bytes.

type ListenerFactory

type ListenerFactory func(context.Context) (net.Listener, error)

ListenerFactory is factory which generate new listeners.

type RawWebsocketConn

type RawWebsocketConn interface {
	io.Closer
	// SetReadDeadline set read deadline.
	SetReadDeadline(time.Time) error
	// ReadMessage reads next message.
	ReadMessage() (messageType int, p []byte, err error)
	// WriteMessage writes next message.
	WriteMessage(messageType int, data []byte) error
}

RawWebsocketConn is Raw websocket connection. Only for mock tests.

type ServerTransport

type ServerTransport interface {
	io.Closer
	// Accept register incoming connection handler.
	Accept(acceptor ServerTransportAcceptor)
	// Listen listens on the network address addr and handles requests on incoming connections.
	// You can specify notifier chan, it'll be sent true/false when server listening success/failed.
	Listen(ctx context.Context, notifier chan<- bool) error
}

ServerTransport is server-side RSocket transport.

func NewTCPServerTransport

func NewTCPServerTransport(f ListenerFactory) ServerTransport

NewTCPServerTransport creates a new server-side transport.

func NewTCPServerTransportWithAddr

func NewTCPServerTransportWithAddr(network, addr string, tlsConfig *tls.Config) ServerTransport

NewTCPServerTransportWithAddr creates a new server-side transport.

func NewWebsocketServerTransport

func NewWebsocketServerTransport(f ListenerFactory, path string, upgrader *websocket.Upgrader) ServerTransport

NewWebsocketServerTransport creates a new server-side transport.

func NewWebsocketServerTransportWithAddr

func NewWebsocketServerTransportWithAddr(addr string, path string, upgrader *websocket.Upgrader, config *tls.Config) ServerTransport

NewWebsocketServerTransportWithAddr creates a new server-side transport.

type ServerTransportAcceptor

type ServerTransportAcceptor = func(ctx context.Context, tp *Transport, onClose func(*Transport))

ServerTransportAcceptor is an alias of server transport handler.

type ServerTransporter

type ServerTransporter func(context.Context) (ServerTransport, error)

ServerTransporter is alias which generate new server-side transports.

type TCPConn

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

TCPConn is RSocket connection for TCP transport.

func NewTCPConn

func NewTCPConn(conn net.Conn) *TCPConn

NewTCPConn creates a new TCP RSocket connection.

func (TCPConn) Addr added in v0.7.13

func (p TCPConn) Addr() string

func (*TCPConn) Close

func (p *TCPConn) Close() error

Close closes current connection.

func (*TCPConn) Flush

func (p *TCPConn) Flush() (err error)

Flush flush data.

func (*TCPConn) Read

func (p *TCPConn) Read() (f core.BufferedFrame, err error)

Read reads next frame from Conn.

func (*TCPConn) SetCounter

func (p *TCPConn) SetCounter(c *core.TrafficCounter)

SetCounter bind a counter which can count r/w bytes.

func (*TCPConn) SetDeadline

func (p *TCPConn) SetDeadline(deadline time.Time) error

SetDeadline set deadline for current connection. After this deadline, connection will be closed.

func (*TCPConn) Write

func (p *TCPConn) Write(frame core.WriteableFrame) (err error)

Write writes a frame.

type Transport

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

Transport is RSocket transport which is used to carry RSocket frames.

func NewTCPClientTransport

func NewTCPClientTransport(c net.Conn) *Transport

NewTCPClientTransport creates new transport.

func NewTCPClientTransportWithAddr

func NewTCPClientTransportWithAddr(ctx context.Context, network, addr string, tlsConfig *tls.Config) (tp *Transport, err error)

NewTCPClientTransportWithAddr creates new transport.

func NewTransport

func NewTransport(c Conn) *Transport

NewTransport creates new transport.

func NewWebsocketClientTransport

func NewWebsocketClientTransport(ctx context.Context, url string, config *tls.Config, header http.Header, proxy func(*http.Request) (*url.URL, error)) (*Transport, error)

NewWebsocketClientTransport creates a new client-side transport.

func (*Transport) Addr added in v0.7.13

func (p *Transport) Addr() (string, bool)

func (*Transport) Close

func (p *Transport) Close() (err error)

Close close current transport.

func (*Transport) Connection

func (p *Transport) Connection() Conn

Connection returns current connection.

func (*Transport) DispatchFrame

func (p *Transport) DispatchFrame(_ context.Context, frame core.BufferedFrame) (err error)

DispatchFrame delivery incoming frames.

func (*Transport) Flush

func (p *Transport) Flush() (err error)

Flush flush all bytes in current connection.

func (*Transport) Handle

func (p *Transport) Handle(event EventType, handler FrameHandler)

Handle register event handlers

func (*Transport) ReadFirst

func (p *Transport) ReadFirst(ctx context.Context) (frame core.BufferedFrame, err error)

ReadFirst reads first frame.

func (*Transport) Send

func (p *Transport) Send(frame core.WriteableFrame, flush bool) (err error)

Send send a frame.

func (*Transport) SetLifetime

func (p *Transport) SetLifetime(lifetime time.Duration)

SetLifetime set max lifetime for current transport.

func (*Transport) Start

func (p *Transport) Start(ctx context.Context) error

Start start transport.

type WebsocketConn

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

WebsocketConn is websocket RSocket connection.

func NewWebsocketConnection

func NewWebsocketConnection(rawConn RawWebsocketConn) *WebsocketConn

NewWebsocketConnection creates a new RSocket websocket connection.

func (*WebsocketConn) Addr added in v0.7.13

func (p *WebsocketConn) Addr() string

Addr returns the address info.

func (*WebsocketConn) Close

func (p *WebsocketConn) Close() error

Close closes connection.

func (*WebsocketConn) Flush

func (p *WebsocketConn) Flush() (err error)

Flush flush data.

func (*WebsocketConn) Read

func (p *WebsocketConn) Read() (f core.BufferedFrame, err error)

Read reads next frame from Conn.

func (*WebsocketConn) SetCounter

func (p *WebsocketConn) SetCounter(c *core.TrafficCounter)

SetCounter bind a counter which can count r/w bytes.

func (*WebsocketConn) SetDeadline

func (p *WebsocketConn) SetDeadline(deadline time.Time) error

SetDeadline set deadline for current connection. After this deadline, connection will be closed.

func (*WebsocketConn) Write

func (p *WebsocketConn) Write(frame core.WriteableFrame) (err error)

Write writes frames.

Jump to

Keyboard shortcuts

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