Documentation ¶
Index ¶
Constants ¶
const NoOrigin = ""
NoOrigin is returned if origin detection is off or failed.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Packet ¶
type Packet struct { Contents []byte // Contents, might contain several messages Origin string // Origin container if identified // contains filtered or unexported fields }
Packet represents a statsd packet ready to process, with its origin metadata if applicable.
As the Packet object is reused in a sync.Pool, we keep the underlying buffer reference to avoid re-sizing the slice before reading
type PacketPool ¶
type PacketPool struct {
// contains filtered or unexported fields
}
PacketPool wraps the sync.Pool class for *Packet type. It allows to avoid allocating one object per packet.
Caution: as objects get reused, byte slices extracted from packet.Contents will change when the object is reused. You need to hold on to the object until you extracted all the information and parsed it into strings/float/int.
Strings extracted with `string(Contents[n:m]) don't share the origin []byte storage, so they will be unaffected.
func NewPacketPool ¶
func NewPacketPool(bufferSize int) *PacketPool
NewPacketPool creates a new pool with a specified buffer size
func (*PacketPool) Put ¶
func (p *PacketPool) Put(packet *Packet)
Put resets the Packet origin and puts it back in the pool.
type StatsdListener ¶
type StatsdListener interface { Listen() Stop() }
StatsdListener opens a communication channel to get statsd packets in.
type UDPListener ¶
type UDPListener struct {
// contains filtered or unexported fields
}
UDPListener implements the StatsdListener interface for UDP protocol. It listens to a given UDP address and sends back packets ready to be processed. Origin detection is not implemented for UDP.
func NewUDPListener ¶
func NewUDPListener(packetOut chan Packets, packetPool *PacketPool) (*UDPListener, error)
NewUDPListener returns an idle UDP Statsd listener
func (*UDPListener) Listen ¶
func (l *UDPListener) Listen()
Listen runs the intake loop. Should be called in its own goroutine
func (*UDPListener) Stop ¶
func (l *UDPListener) Stop()
Stop closes the UDP connection and stops listening
type UDSListener ¶
type UDSListener struct { OriginDetection bool // contains filtered or unexported fields }
UDSListener implements the StatsdListener interface for Unix Domain Socket datagram protocol. It listens to a given socket path and sends back packets ready to be processed. Origin detection will be implemented for UDS.
func NewUDSListener ¶
func NewUDSListener(packetOut chan Packets, packetPool *PacketPool) (*UDSListener, error)
NewUDSListener returns an idle UDS Statsd listener
func (*UDSListener) Listen ¶
func (l *UDSListener) Listen()
Listen runs the intake loop. Should be called in its own goroutine
func (*UDSListener) Stop ¶
func (l *UDSListener) Stop()
Stop closes the UDS connection and stops listening