tcp

package
v2.0.0-...-691db5a Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDeleteRequest

func NewDeleteRequest(ctx context.Context, path string, opts ...message.Option) (*pool.Message, error)

NewDeleteRequest creates delete request.

Use ctx to set timeout.

func NewGetRequest

func NewGetRequest(ctx context.Context, path string, opts ...message.Option) (*pool.Message, error)

NewGetRequest creates get request.

Use ctx to set timeout.

func NewPostRequest

func NewPostRequest(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*pool.Message, error)

NewPostRequest creates post request.

Use ctx to set timeout.

An error is returned if by failure to speak COAP (such as a network connectivity problem). Any status code doesn't cause an error.

If payload is nil then content format is not used.

func NewPutRequest

func NewPutRequest(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*pool.Message, error)

NewPutRequest creates put request.

Use ctx to set timeout.

If payload is nil then content format is not used.

Types

type BlockwiseFactoryFunc

type BlockwiseFactoryFunc = func(getSendedRequest func(token message.Token) (blockwise.Message, bool)) *blockwise.BlockWise

type BlockwiseOpt

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

BlockwiseOpt network option.

func WithBlockwise

func WithBlockwise(enable bool, szx blockwise.SZX, transferTimeout time.Duration) BlockwiseOpt

WithBlockwise configure's blockwise transfer.

type ClientConn

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

ClientConn represents a virtual connection to a conceptual endpoint, to perform COAPs commands.

func Client

func Client(conn net.Conn, opts ...DialOption) *ClientConn

Client creates client over tcp/tcp-tls connection.

func Dial

func Dial(target string, opts ...DialOption) (*ClientConn, error)

Dial creates a client connection to the given target.

func NewClientConn

func NewClientConn(session *Session, observationTokenHandler *HandlerContainer, observationRequests *kitSync.Map) *ClientConn

NewClientConn creates connection over session and observation.

func (*ClientConn) AddOnClose

func (cc *ClientConn) AddOnClose(f EventFunc)

AddOnClose calls function on close connection event.

func (*ClientConn) AsyncPing

func (cc *ClientConn) AsyncPing(receivedPong func()) (func(), error)

AsyncPing sends ping and receivedPong will be called when pong arrives. It returns cancellation of ping operation.

func (*ClientConn) Client

func (cc *ClientConn) Client() *ClientTCP

Client get instance which implements mux.Client.

func (*ClientConn) Close

func (cc *ClientConn) Close() error

Close closes connection without wait of ends Run function.

func (*ClientConn) Context

func (cc *ClientConn) Context() context.Context

Context returns the client's context.

If connections was closed context is cancelled.

func (*ClientConn) Delete

func (cc *ClientConn) Delete(ctx context.Context, path string, opts ...message.Option) (*pool.Message, error)

Delete deletes the resource identified by the request path.

Use ctx to set timeout.

func (*ClientConn) Do

func (cc *ClientConn) Do(req *pool.Message) (*pool.Message, error)

Do sends an coap message and returns an coap response.

An error is returned if by failure to speak COAP (such as a network connectivity problem). Any status code doesn't cause an error.

Caller is responsible to release request and response.

func (*ClientConn) Get

func (cc *ClientConn) Get(ctx context.Context, path string, opts ...message.Option) (*pool.Message, error)

Get issues a GET to the specified path.

Use ctx to set timeout.

An error is returned if by failure to speak COAP (such as a network connectivity problem). Any status code doesn't cause an error.

func (*ClientConn) Lock

func (*ClientConn) Lock()

func (*ClientConn) Observe

func (cc *ClientConn) Observe(ctx context.Context, path string, observeFunc func(req *pool.Message), opts ...message.Option) (*Observation, error)

Observe subscribes for every change of resource on path.

func (*ClientConn) Ping

func (cc *ClientConn) Ping(ctx context.Context) error

Ping issues a PING to the client and waits for PONG reponse.

Use ctx to set timeout.

func (*ClientConn) Post

func (cc *ClientConn) Post(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*pool.Message, error)

Post issues a POST to the specified path.

Use ctx to set timeout.

An error is returned if by failure to speak COAP (such as a network connectivity problem). Any status code doesn't cause an error.

If payload is nil then content format is not used.

func (*ClientConn) Put

func (cc *ClientConn) Put(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*pool.Message, error)

Put issues a PUT to the specified path.

Use ctx to set timeout.

An error is returned if by failure to speak COAP (such as a network connectivity problem). Any status code doesn't cause an error.

If payload is nil then content format is not used.

func (*ClientConn) RemoteAddr

func (cc *ClientConn) RemoteAddr() net.Addr

RemoteAddr gets remote address.

func (*ClientConn) Run

func (cc *ClientConn) Run() (err error)

Run reads and process requests from a connection, until the connection is not closed.

func (*ClientConn) Sequence

func (cc *ClientConn) Sequence() uint64

Sequence acquires sequence number.

func (*ClientConn) Session

func (cc *ClientConn) Session() *Session

func (*ClientConn) SetContextValue

func (cc *ClientConn) SetContextValue(key interface{}, val interface{})

SetContextValue stores the value associated with key to context of connection.

func (*ClientConn) Unlock

func (*ClientConn) Unlock()

func (*ClientConn) WriteMessage

func (cc *ClientConn) WriteMessage(req *pool.Message) error

WriteMessage sends an coap message.

type ClientTCP

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

func NewClientTCP

func NewClientTCP(cc *ClientConn) *ClientTCP

func (*ClientTCP) ClientConn

func (c *ClientTCP) ClientConn() interface{}

ClientConn get's underlaying client connection.

func (*ClientTCP) Close

func (c *ClientTCP) Close() error

func (*ClientTCP) Context

func (c *ClientTCP) Context() context.Context

func (*ClientTCP) Delete

func (c *ClientTCP) Delete(ctx context.Context, path string, opts ...message.Option) (*message.Message, error)

func (*ClientTCP) Do

func (c *ClientTCP) Do(req *message.Message) (*message.Message, error)

func (*ClientTCP) Get

func (c *ClientTCP) Get(ctx context.Context, path string, opts ...message.Option) (*message.Message, error)

func (*ClientTCP) Observe

func (c *ClientTCP) Observe(ctx context.Context, path string, observeFunc func(notification *message.Message), opts ...message.Option) (mux.Observation, error)

func (*ClientTCP) Ping

func (c *ClientTCP) Ping(ctx context.Context) error

func (*ClientTCP) Post

func (c *ClientTCP) Post(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*message.Message, error)

func (*ClientTCP) Put

func (c *ClientTCP) Put(ctx context.Context, path string, contentFormat message.MediaType, payload io.ReadSeeker, opts ...message.Option) (*message.Message, error)

func (*ClientTCP) RemoteAddr

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

func (*ClientTCP) Sequence

func (c *ClientTCP) Sequence() uint64

Sequence acquires sequence number.

func (*ClientTCP) SetContextValue

func (c *ClientTCP) SetContextValue(key interface{}, val interface{})

func (*ClientTCP) WriteMessage

func (c *ClientTCP) WriteMessage(req *message.Message) error

type CloseSocketOpt

type CloseSocketOpt struct {
}

CloseSocketOpt close socket option.

func WithCloseSocket

func WithCloseSocket() CloseSocketOpt

WithCloseSocket closes socket at the close connection.

type ContextOpt

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

ContextOpt handler function option.

func WithContext

func WithContext(ctx context.Context) ContextOpt

WithContext set's parent context of server.

type DialOption

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

A DialOption sets options such as credentials, keepalive parameters, etc.

type DialerOpt

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

DialerOpt dialer option.

func WithDialer

func WithDialer(dialer *net.Dialer) DialerOpt

WithDialer set dialer for dial.

type DisablePeerTCPSignalMessageCSMsOpt

type DisablePeerTCPSignalMessageCSMsOpt struct {
}

DisablePeerTCPSignalMessageCSMsOpt coap-tcp csm option.

func WithDisablePeerTCPSignalMessageCSMs

func WithDisablePeerTCPSignalMessageCSMs() DisablePeerTCPSignalMessageCSMsOpt

WithDisablePeerTCPSignalMessageCSMs ignor peer's CSM message.

type DisableTCPSignalMessageCSMOpt

type DisableTCPSignalMessageCSMOpt struct {
}

DisableTCPSignalMessageCSMOpt coap-tcp csm option.

func WithDisableTCPSignalMessageCSM

func WithDisableTCPSignalMessageCSM() DisableTCPSignalMessageCSMOpt

WithDisableTCPSignalMessageCSM don't send CSM when client conn is created.

type ErrorFunc

type ErrorFunc = func(error)

type ErrorsOpt

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

ErrorsOpt errors option.

func WithErrors

func WithErrors(errors ErrorFunc) ErrorsOpt

WithErrors set function for logging error.

type EventFunc

type EventFunc func()

type GoPoolFunc

type GoPoolFunc = func(func()) error

type GoPoolOpt

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

GoPoolOpt gopool option.

func WithGoPool

func WithGoPool(goPool GoPoolFunc) GoPoolOpt

WithGoPool sets function for managing spawning go routines for handling incoming request's. Eg: https://github.com/panjf2000/ants.

type HandlerContainer

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

HandlerContainer for regirstration handlers by key

func NewHandlerContainer

func NewHandlerContainer() *HandlerContainer

NewHandlerContainer factory

func (*HandlerContainer) Get

func (s *HandlerContainer) Get(key interface{}) (HandlerFunc, error)

Get returns handler for key

func (*HandlerContainer) Insert

func (s *HandlerContainer) Insert(key interface{}, handler HandlerFunc) error

Insert handler for key.

func (*HandlerContainer) Pop

func (s *HandlerContainer) Pop(key interface{}) (HandlerFunc, error)

Pop pops handler for key

type HandlerFunc

type HandlerFunc = func(*ResponseWriter, *pool.Message)

The HandlerFunc type is an adapter to allow the use of ordinary functions as COAP handlers.

func NewObservationHandler

func NewObservationHandler(obsertionTokenHandler *HandlerContainer, next HandlerFunc) HandlerFunc

type HandlerFuncOpt

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

HandlerFuncOpt handler function option.

func WithHandlerFunc

func WithHandlerFunc(h HandlerFunc) HandlerFuncOpt

WithHandlerFunc set handle for handling request's.

func WithMux

func WithMux(m mux.Handler) HandlerFuncOpt

WithMux set's multiplexer for handle requests.

type HeartBeatOpt

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

HeartBeatOpt heatbeat of read/write operations over connection.

func WithHeartBeat

func WithHeartBeat(heartbeat time.Duration) HeartBeatOpt

WithHeartBeat set deadline's for read/write operations over client connection.

type InactivityMonitorOpt

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

InactivityMonitorOpt notifies when a connection was inactive for a given duration.

func WithInactivityMonitor

func WithInactivityMonitor(duration time.Duration, onInactive inactivity.OnInactiveFunc) InactivityMonitorOpt

WithInactivityMonitor set deadline's for read operations over client connection.

type KeepAliveOpt

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

KeepAliveOpt keepalive option.

func WithKeepAlive

func WithKeepAlive(maxRetries uint32, timeout time.Duration, onInactive inactivity.OnInactiveFunc) KeepAliveOpt

WithKeepAlive monitoring's client connection's.

type Listener

type Listener interface {
	Close() error
	AcceptWithContext(ctx context.Context) (net.Conn, error)
}

Listener defined used by coap

type MaxMessageSizeOpt

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

MaxMessageSizeOpt handler function option.

func WithMaxMessageSize

func WithMaxMessageSize(maxMessageSize int) MaxMessageSizeOpt

WithMaxMessageSize limit size of processed message.

type NetOpt

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

NetOpt network option.

func WithNetwork

func WithNetwork(net string) NetOpt

WithNetwork define's tcp version (udp4, udp6, tcp) for client.

type Notifier

type Notifier interface {
	Notify()
}

type Observation

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

Observation represents subscription to resource on the server

func (*Observation) Cancel

func (o *Observation) Cancel(ctx context.Context) error

Cancel remove observation from server. For recreate observation use Observe.

type OnNewClientConnFunc

type OnNewClientConnFunc = func(cc *ClientConn, tlscon *tls.Conn)

OnNewClientConnFunc is the callback for new connections.

Note: Calling `tlscon.Close()` is forbidden, and `tlscon` should be treated as a "read-only" parameter, mainly used to get the peer certificate from the underlining connection

type OnNewClientConnOpt

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

OnNewClientConnOpt network option.

func WithOnNewClientConn

func WithOnNewClientConn(onNewClientConn OnNewClientConnFunc) OnNewClientConnOpt

WithOnNewClientConn server's notify about new client connection.

Note: Calling `tlscon.Close()` is forbidden, and `tlscon` should be treated as a "read-only" parameter, mainly used to get the peer certificate from the underlining connection

type ResponseWriter

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

A ResponseWriter interface is used by an CAOP handler to construct an COAP response.

func NewResponseWriter

func NewResponseWriter(response *pool.Message, cc *ClientConn, requestOptions message.Options) *ResponseWriter

func (*ResponseWriter) ClientConn

func (r *ResponseWriter) ClientConn() *ClientConn

func (*ResponseWriter) SetResponse

func (r *ResponseWriter) SetResponse(code codes.Code, contentFormat message.MediaType, d io.ReadSeeker, opts ...message.Option) error

type Server

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

func NewServer

func NewServer(opt ...ServerOption) *Server

func (*Server) Serve

func (s *Server) Serve(l Listener) error

func (*Server) Stop

func (s *Server) Stop()

Stop stops server without wait of ends Serve function.

type ServerOption

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

A ServerOption sets options such as credentials, codec and keepalive parameters, etc.

type Session

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

func NewSession

func NewSession(
	ctx context.Context,
	connection *coapNet.Conn,
	handler HandlerFunc,
	maxMessageSize int,
	goPool GoPoolFunc,
	errors ErrorFunc,
	blockwiseSZX blockwise.SZX,
	blockWise *blockwise.BlockWise,
	disablePeerTCPSignalMessageCSMs bool,
	disableTCPSignalMessageCSM bool,
	closeSocket bool,
	inactivityMonitor Notifier,
) *Session

func (*Session) AddOnClose

func (s *Session) AddOnClose(f EventFunc)

func (*Session) Close

func (s *Session) Close() error

func (*Session) Context

func (s *Session) Context() context.Context

func (*Session) Done

func (s *Session) Done() <-chan struct{}

func (*Session) Handle

func (s *Session) Handle(w *ResponseWriter, r *pool.Message)

func (*Session) PeerBlockWiseTransferEnabled

func (s *Session) PeerBlockWiseTransferEnabled() bool

func (*Session) PeerMaxMessageSize

func (s *Session) PeerMaxMessageSize() uint32

func (*Session) Run

func (s *Session) Run(cc *ClientConn) (err error)

Run reads and process requests from a connection, until the connection is not closed.

func (*Session) Sequence

func (s *Session) Sequence() uint64

func (*Session) SetContextValue

func (s *Session) SetContextValue(key interface{}, val interface{})

SetContextValue stores the value associated with key to context of connection.

func (*Session) TokenHandler

func (s *Session) TokenHandler() *HandlerContainer

func (*Session) WriteMessage

func (s *Session) WriteMessage(req *pool.Message) error

type TLSOpt

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

TLSOpt tls configuration option.

func WithTLS

func WithTLS(cfg *tls.Config) TLSOpt

WithTLS creates tls connection.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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