sockcomm

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2025 License: BSD-3-Clause Imports: 14 Imported by: 0

README


This package provides functionalities for establishing socket-based communications in Go applications.

Installation

go get github.com/exonlabs/go-utils/pkg/comm/sockcomm

Usage

Connection URI

sock@<path>

  • path: The file system path for socket to use.
Usage Example

https://github.com/exonlabs/go-utils/tree/master/examples/comm

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetAddr

func GetAddr(path string) (net.Addr, error)

GetAddr returns (net.Addr) type for net socket path.

func ParseUri

func ParseUri(uri string) (string, error)

ParseUri parses a network socket URI.

The expected URI format is `sock@<path>`

example:
   - sock@/path/to/sock/file

Returns the sock params and any error encountered.

Types

type Connection

type Connection struct {

	// Log is the logger instance for communication data logging.
	Log *logging.Logger

	// PollConfig defines the read polling.
	PollConfig *comm.PollingConfig
	// contains filtered or unexported fields
}

Connection represents a net socket connection with event support and logging.

func NewConnection

func NewConnection(uri string, log *logging.Logger, opts dictx.Dict) (*Connection, error)

NewConnection creates and initializes a new Connection for the given URI.

The parsed options are:

func (*Connection) Cancel

func (c *Connection) Cancel()

Cancel cancels any ongoing operations on the connection.

func (*Connection) CancelRecv

func (c *Connection) CancelRecv()

Cancel interrupts the ongoing receiving operation for this Connection.

func (*Connection) CancelSend

func (c *Connection) CancelSend()

Cancel interrupts the ongoing sending operation for this Connection.

func (*Connection) Close

func (c *Connection) Close()

Close shuts down the connection and cleaning up resources.

func (*Connection) IsOpened

func (c *Connection) IsOpened() bool

IsOpened indicates whether the connection is currently open and active.

func (*Connection) NetConn

func (c *Connection) NetConn() net.Conn

NetConn returns the net connection instance.

func (*Connection) Open

func (c *Connection) Open(timeout float64) error

Open establishes the connection.

func (*Connection) Parent

func (c *Connection) Parent() comm.Listener

Parent returns the parent Listener if any is associated with the Connection.

func (*Connection) Recv

func (c *Connection) Recv(timeout float64) ([]byte, error)

Recv waits for incoming data over the connection until a timeout or interrupt event occurs. Setting timeout=0 will wait indefinitely.

func (*Connection) RecvFrom

func (c *Connection) RecvFrom(timeout float64) ([]byte, any, error)

RecvFrom waits for incoming data from addr over the connection until a timeout or interrupt event occurs.

Setting timeout 0 or negative value will wait indefinitely.

func (*Connection) Send

func (c *Connection) Send(data []byte, timeout float64) error

Send transmits data over the connection, with a specified timeout.

func (*Connection) SendTo

func (c *Connection) SendTo(data []byte, addr any, timeout float64) error

SendTo transmits data to addr over the connection, with a specified timeout.

Setting timeout 0 or negative value will wait indefinitely.

func (*Connection) String

func (c *Connection) String() string

String returns a string representation of the Connection.

func (*Connection) Type

func (c *Connection) Type() string

Type returns the type of the connection as inferred from the Uri.

func (*Connection) Uri

func (c *Connection) Uri() string

Uri returns the URI of the connection

type Listener

type Listener struct {

	// ConnectionHandler defines the function to handle incoming connections.
	ConnectionHandler func(comm.Connection)

	// Log is the logger instance for communication data logging.
	Log *logging.Logger

	// PollConfig defines the read polling.
	PollConfig *comm.PollingConfig
	// LimiterConfig defines the limits for TCP connections.
	LimiterConfig *comm.LimiterConfig
	// contains filtered or unexported fields
}

Listener represents a net socket listener that handles incoming connections with a custom connection handler.

func NewListener

func NewListener(uri string, log *logging.Logger, opts dictx.Dict) (*Listener, error)

NewListener creates a new Listener.

The parsed options are:

func (*Listener) IsActive

func (l *Listener) IsActive() bool

IsActive checks if the listener is currently active.

func (*Listener) NetListener

func (l *Listener) NetListener() net.Listener

NetListener returns the net listener instance.

func (*Listener) SetConnHandler

func (l *Listener) SetConnHandler(handler func(comm.Connection))

SetConnHandler sets a callback function to handle connections.

func (*Listener) Start

func (l *Listener) Start() error

Start begins listening for connections, calling the connectionHandler for each established connection.

func (*Listener) Stop

func (l *Listener) Stop()

Stop gracefully shuts down the listener.

func (*Listener) String

func (l *Listener) String() string

String returns a string representation of the Listener.

func (*Listener) Type

func (l *Listener) Type() string

Type returns the type of the listener as inferred from the Uri.

func (*Listener) Uri

func (l *Listener) Uri() string

Uri returns the URI of the listener

Jump to

Keyboard shortcuts

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