bytecounter

package
v3.15.1 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2022 License: GPL-3.0 Imports: 3 Imported by: 0

Documentation

Overview

Package bytecounter contains code to track the number of bytes sent and received by a probe.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MaybeWrap added in v3.14.0

func MaybeWrap(conn net.Conn, counter *Counter) net.Conn

MaybeWrap is like wrap if counter is not nil, otherwise it's a no-op.

func MaybeWrapWithContextByteCounters added in v3.14.0

func MaybeWrapWithContextByteCounters(ctx context.Context, conn net.Conn) net.Conn

MaybeWrapWithContextByteCounters wraps a conn with the byte counters that have previosuly been configured into a context.

func WithExperimentByteCounter added in v3.14.0

func WithExperimentByteCounter(ctx context.Context, counter *Counter) context.Context

WithExperimentByteCounter assigns the experiment byte counter to the context.

func WithSessionByteCounter added in v3.14.0

func WithSessionByteCounter(ctx context.Context, counter *Counter) context.Context

WithSessionByteCounter assigns the session byte counter to the context.

func Wrap added in v3.14.0

func Wrap(conn net.Conn, counter *Counter) net.Conn

Wrap returns a new conn that uses the given counter.

Types

type Conn

type Conn struct {
	// net.Conn is the underlying net.Conn.
	net.Conn

	// Counter is the byte counter.
	Counter *Counter
}

Conn wraps a network connection and counts bytes.

func (*Conn) Read

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

Read implements net.Conn.Read.

func (*Conn) Write

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

Write implements net.Conn.Write.

type Counter

type Counter struct {
	// Received contains the bytes received. You MUST initialize
	// this field, or you can just use the New factory.
	Received *atomicx.Int64

	// Sent contains the bytes sent. You MUST initialize
	// this field, or you can just use the New factory.
	Sent *atomicx.Int64
}

Counter counts bytes sent and received.

func ContextExperimentByteCounter added in v3.14.0

func ContextExperimentByteCounter(ctx context.Context) *Counter

ContextExperimentByteCounter retrieves the experiment byte counter from the context

func ContextSessionByteCounter added in v3.14.0

func ContextSessionByteCounter(ctx context.Context) *Counter

ContextSessionByteCounter retrieves the session byte counter from the context

func New

func New() *Counter

New creates a new Counter.

func (*Counter) BytesReceived

func (c *Counter) BytesReceived() int64

BytesReceived returns the bytes received so far.

func (*Counter) BytesSent

func (c *Counter) BytesSent() int64

BytesSent returns the bytes sent so far.

func (*Counter) CountBytesReceived

func (c *Counter) CountBytesReceived(count int)

CountBytesReceived adds count to the bytes received counter.

func (*Counter) CountBytesSent

func (c *Counter) CountBytesSent(count int)

CountBytesSent adds count to the bytes sent counter.

func (*Counter) CountKibiBytesReceived

func (c *Counter) CountKibiBytesReceived(count float64)

CountKibiBytesReceived adds 1024*count to the bytes received counter.

func (*Counter) CountKibiBytesSent

func (c *Counter) CountKibiBytesSent(count float64)

CountKibiBytesSent adds 1024*count to the bytes sent counter.

func (*Counter) KibiBytesReceived

func (c *Counter) KibiBytesReceived() float64

KibiBytesReceived returns the KiB received so far.

func (*Counter) KibiBytesSent

func (c *Counter) KibiBytesSent() float64

KibiBytesSent returns the KiB sent so far.

Jump to

Keyboard shortcuts

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