ray

package
v3.8.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2018 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConnection

func NewConnection(input InputStream, output OutputStream, options ...ConnectionOption) net.Conn

NewConnection wraps a Ray into net.Conn.

Types

type ConnectionOption

type ConnectionOption func(*connection)

func ConnCloseSignal

func ConnCloseSignal(s *signal.Notifier) ConnectionOption

func ConnLocalAddr

func ConnLocalAddr(addr net.Addr) ConnectionOption

func ConnRemoteAddr

func ConnRemoteAddr(addr net.Addr) ConnectionOption

type InboundRay

type InboundRay interface {
	// InboundInput provides a stream to retrieve the request from client.
	// The inbound connection shall close the channel after the entire request
	// is received and put into the channel.
	InboundInput() OutputStream

	// InboudBound provides a stream of data for the inbound connection to write
	// as response. The inbound connection shall write all the data from the
	// channel until it is closed.
	InboundOutput() InputStream
}

InboundRay is a transport interface for inbound connections.

type InputStream

type InputStream interface {
	buf.Reader
	buf.TimeoutReader
	RayStream
	Peek(*buf.Buffer)
}

type OutboundRay

type OutboundRay interface {
	// OutboundInput provides a stream for the input of the outbound connection.
	// The outbound connection shall write all the input until it is closed.
	OutboundInput() InputStream

	// OutboundOutput provides a stream to retrieve the response from the
	// outbound connection. The outbound connection shall close the channel
	// after all responses are receivced and put into the channel.
	OutboundOutput() OutputStream
}

OutboundRay is a transport interface for outbound connections.

type OutputStream

type OutputStream interface {
	buf.Writer
	RayStream
}

type Ray

type Ray interface {
	InboundRay
	OutboundRay
}

Ray is an internal tranport channel between inbound and outbound connection.

func NewRay

func NewRay(ctx context.Context) Ray

NewRay creates a new Ray for direct traffic transport.

type RayStream

type RayStream interface {
	common.Closable
	CloseError()
}

type Stream

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

Stream is a sequential container for data in bytes.

func NewStream

func NewStream(ctx context.Context) *Stream

NewStream creates a new Stream.

func (*Stream) Close

func (s *Stream) Close() error

Close closes the stream for writing. Read() still works until EOF.

func (*Stream) CloseError

func (s *Stream) CloseError()

CloseError closes the Stream with error. Read() will return an error afterwards.

func (*Stream) Peek

func (s *Stream) Peek(b *buf.Buffer)

Peek fills in the given buffer with data from head of the Stream.

func (*Stream) ReadMultiBuffer

func (s *Stream) ReadMultiBuffer() (buf.MultiBuffer, error)

ReadMultiBuffer reads data from the Stream.

func (*Stream) ReadTimeout

func (s *Stream) ReadTimeout(timeout time.Duration) (buf.MultiBuffer, error)

ReadTimeout reads from the Stream with a specified timeout.

func (*Stream) Size

func (s *Stream) Size() uint64

Size returns the number of bytes hold in the Stream.

func (*Stream) WriteMultiBuffer

func (s *Stream) WriteMultiBuffer(data buf.MultiBuffer) error

WriteMultiBuffer writes more data into the Stream.

Jump to

Keyboard shortcuts

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