net

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxMessageSize = 1 << 19
)

Variables

View Source
var ErrServerClosed = errors.New("Server closed")

ErrServerClosed occurs when a tcp server is closed.

Functions

func Encode

func Encode(pack MessagePack) (bytes.Buffer, error)

Encode encodes the message into binary data

func StreamConn

func StreamConn(
	stream grpc.Stream,
) *common.Conn

Types

type Conn

type Conn struct {
	// Stream is the stream to wrap into a Conn. This is duplex stream.
	Stream *websocket.Conn

	// InMsg is the type to use for reading request data from the streaming
	// endpoint. This must be a non-nil allocated value and must NOT point to
	// the same value as OutMsg since they may be used concurrently.
	//
	// The Reset method will be called on InMsg during Reads so data you
	// set initially will be lost.
	InMsg proto.Message

	// OutMsg is the type to use for sending data to streaming endpoint. This must be
	// a non-nil allocated value and must NOT point to the same value as InMsg
	// since they may be used concurrently.
	//
	// The Reset method is never called on OutMsg so they will be sent for every request
	// unless the Encode field changes it.
	OutMsg proto.Message

	// WriteLock, if non-nil, will be locked while calling SendMsg
	// on the Stream. This can be used to prevent concurrent access to
	// SendMsg which is unsafe.
	WriteLock *sync.Mutex

	// Encode encodes messages into the Request. See Encoder for more information.
	Encode common.Encoder

	// Decode decodes messages from the Response into a byte slice. See
	// Decoder for more information.
	Decode common.Decoder
	// contains filtered or unexported fields
}

Conn implements net.Conn across a Websocket.

Methods such as LocalAddr, RemoteAddr, deadlines, etc. do not work.

func WebSocketConn

func WebSocketConn(
	stream *websocket.Conn,
) *Conn

func (*Conn) Close

func (c *Conn) Close() error

Close will close the client if this is a client. If this is a server stream this does nothing since gRPC expects you to close the stream by returning from the RPC call.

This calls CloseSend underneath for clients, so read the documentation for that to understand the semantics of this call.

func (*Conn) LocalAddr

func (c *Conn) LocalAddr() net.Addr

LocalAddr returns nil.

func (*Conn) Read

func (c *Conn) Read(p []byte) (n int, err error)

Read implements io.Reader.

func (*Conn) RemoteAddr

func (c *Conn) RemoteAddr() net.Addr

RemoteAddr returns nil.

func (*Conn) SetDeadline

func (c *Conn) SetDeadline(time.Time) error

SetDeadline is non-functional due to limitations on how gRPC works. You can mimic deadlines often using call options.

func (*Conn) SetReadDeadline

func (c *Conn) SetReadDeadline(time.Time) error

SetReadDeadline is non-functional, see SetDeadline.

func (*Conn) SetWriteDeadline

func (c *Conn) SetWriteDeadline(time.Time) error

SetWriteDeadline is non-functional, see SetDeadline.

func (*Conn) Write

func (c *Conn) Write(p []byte) (int, error)

Write implements io.Writer.

type GrpcServer

type GrpcServer server

func NewGrpcServer

func NewGrpcServer(opts ...Options) *GrpcServer

func (*GrpcServer) Serve

func (s *GrpcServer) Serve(list net.Listener) error

func (*GrpcServer) Stream

func (s *GrpcServer) Stream(stream pbx.Unitdb_StreamServer) error

Stream implements duplex unitdb.Stream

type Handler

type Handler func(c net.Conn)

Handler is a callback which get called when a tcp, websocket connection is established or a grpc stream is established

type HttpServer

type HttpServer server

func NewHttpServer

func NewHttpServer(opts ...Options) *HttpServer

func (*HttpServer) HandleFunc

func (s *HttpServer) HandleFunc(w http.ResponseWriter, r *http.Request)

func (*HttpServer) Serve

func (s *HttpServer) Serve(list net.Listener) error

type MessagePack added in v0.2.0

type MessagePack interface {
	ToBinary() (bytes.Buffer, error)
	FromBinary(fh utp.FixedHeader, data []byte)
	Type() utp.MessageType
	Info() utp.Info
}

MessagePack is the interface for all Messages

func Read

func Read(r io.Reader) (MessagePack, error)

Read unpacks the packet from the provided reader.

type Options

type Options interface {
	// contains filtered or unexported methods
}

Options it contains configurable options for client

func WithDefaultOptions

func WithDefaultOptions() Options

WithDefaultOptions will create client connection with some default values.

KeepAlive: true
TlsConfig: nil

func WithTLSConfig

func WithTLSConfig(t *tls.Config) Options

WithTLSConfig will set an SSL/TLS configuration to be used when connecting to server.

type Proto

type Proto int

Proto represents the type of connection

const (
	UTP    Proto = iota // Unit Transport Protocol
	UNITQL              // Unit Query Language
)

type Server

type Server interface {
	// Serve serve the requests if type tcp, websocket or grpc stream
	Serve(net.Listener) error
}

type TcpServer

type TcpServer server

func NewTcpServer

func NewTcpServer(opts ...Options) *TcpServer

func (*TcpServer) Serve

func (s *TcpServer) Serve(list net.Listener) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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