Documentation
¶
Index ¶
- type Client
- func (c *Client) Callsign() string
- func (c *Client) Close()
- func (c *Client) Connect() error
- func (c *Client) Filter() string
- func (c *Client) GetStats() Stats
- func (c *Client) Host() string
- func (c *Client) Mode() Mode
- func (c *Client) Port() int
- func (c *Client) Protocol() Protocol
- func (c *Client) RemoteAddr() string
- func (c *Client) ResetStats()
- func (c *Client) SendPacket(packet string) error
- func (c *Client) Server() string
- func (c *Client) ServerID() string
- func (c *Client) Up() bool
- func (c *Client) Uptime() time.Time
- func (c *Client) Wait()
- type Mode
- type Option
- func WithBufSize(bufSize int) Option
- func WithFilter(filter string) Option
- func WithHandler(handler func(packet string)) Option
- func WithKeepAlive(idle, interval time.Duration, count int) Option
- func WithLocalAddr(v4, v6 string) Option
- func WithLogger(logger aprsutils.Logger) Option
- func WithReadTimeout(d time.Duration) Option
- func WithRetryTimes(retryTimes int) Option
- func WithSoftwareAndVersion(software string, version string) Option
- type Protocol
- type Stats
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client provides a basic struct of Client object
func NewClient ¶
func NewClient( callsign string, passcode string, mode Mode, protocol Protocol, host string, port int, options ...Option, ) *Client
NewClient creates a new APRS client
func (*Client) Connect ¶
Connect to an APRS server.
For TCP the client opens a persistent stream, performs the login handshake and starts the receive/heartbeat goroutines. For UDP it opens a connected datagram socket used in "UDP submit" mode: there is no login handshake or receive loop; instead every SendPacket datagram is prefixed with the login line (see SendPacket).
func (*Client) RemoteAddr ¶ added in v1.3.0
RemoteAddr returns the resolved remote address of the active connection (e.g. "44.135.0.1:10152"), or "" if not connected. Unlike Host(), which is the configured (possibly DNS) hostname, this reflects the actual IP a rotating DNS name resolved to for the current session.
func (*Client) SendPacket ¶
SendPacket sends an APRS packet.
For TCP the packet is written to the stream terminated by CRLF. For UDP (submit mode) the datagram is the login line followed by the packet, both CRLF-terminated, so the server can authenticate and inject each datagram independently (qAU).
func (*Client) ServerID ¶ added in v1.3.0
ServerID returns the upstream server's callsign, parsed from its logresp line (empty until login completes).
func (*Client) Wait ¶
func (c *Client) Wait()
Wait blocks until the client is permanently done, i.e. the link has dropped and the client will not (re)connect on its own. It returns when either:
- Close() is called, or
- the connection dropped and the client exhausted its reconnection attempts (including the WithRetryTimes(0) case, where the client does no internal reconnection at all — see signalDone in receivePackets).
This is the contract relied on by an external supervisor (e.g. the aprsgo uplink manager) that owns reconnection: it sets WithRetryTimes(0) and uses Wait() to learn when the link is down so it can dial a fresh connection.
type Option ¶
type Option func(*Client)
Option provides a basic option type
func WithBufSize ¶ added in v1.2.4
WithBufSize sets a custom buf size for reader
func WithHandler ¶
WithHandler sets default packet handler to custom
func WithKeepAlive ¶ added in v1.4.0
WithKeepAlive enables TCP keepalive on the connection: probing starts after the socket has been idle for idle, probes are sent every interval, and the link is dropped after count failed probes. It has no effect on UDP.
func WithLocalAddr ¶ added in v1.4.0
WithLocalAddr binds the local source address for outbound connections. v4 is used when connecting to an IPv4 remote, v6 for IPv6; either may be empty to let the OS choose for that family.
func WithLogger ¶
WithLogger sets default logger to custom
func WithReadTimeout ¶ added in v1.4.0
WithReadTimeout sets the per-read deadline applied while receiving from the server. A zero or negative value keeps the built-in default.
func WithRetryTimes ¶
WithRetryTimes sets how many times the client tries to reconnect itself after the link drops. Set it to 0 to disable internal reconnection entirely: in that mode the client does not reconnect on its own, and when the link drops it releases Wait() so an external supervisor can dial a fresh connection (see Wait for the full contract).
func WithSoftwareAndVersion ¶
WithSoftwareAndVersion sets default software name and version to custom