slowdown

package
v0.0.0-...-c1a3bfb Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2020 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package slowdown provides an implementation of net.Listener that limits bandwidth.

Index

Constants

This section is empty.

Variables

View Source
var MaxRate uint = (1024 * 1024) * 1000

The maximum rate you should specify for readrate or writerate.If this is too high, the token bucket implementation seems to break down.

Functions

func NewSlowListener

func NewSlowListener(listener net.Listener, readrate uint, writerate uint) net.Listener

NewSlowListener creates a SlowListener with specified read and write rates. Both the readrate and the writerate are specified in bytes per second. A value of 0 disables throttling.

Types

type SlowConn

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

SlowConn is a slow connection

func (*SlowConn) Close

func (sc *SlowConn) Close() error

Close closes the connection. Any blocked Read or Write operations will be unblocked and return errors.

func (*SlowConn) LocalAddr

func (sc *SlowConn) LocalAddr() net.Addr

LocalAddr returns the local network address.

func (*SlowConn) Read

func (sc *SlowConn) Read(b []byte) (n int, err error)

Read reads data from the connection. Read can be made to time out and return a Error with Timeout() == true after a fixed time limit; see SetDeadline and SetReadDeadline.

func (*SlowConn) RemoteAddr

func (sc *SlowConn) RemoteAddr() net.Addr

RemoteAddr returns the remote network address.

func (*SlowConn) SetDeadline

func (sc *SlowConn) SetDeadline(t time.Time) error

SetDeadline sets the read and write deadlines associated with the connection. It is equivalent to calling both SetReadDeadline and SetWriteDeadline.

A deadline is an absolute time after which I/O operations fail with a timeout (see type Error) instead of blocking. The deadline applies to all future I/O, not just the immediately following call to Read or Write.

An idle timeout can be implemented by repeatedly extending the deadline after successful Read or Write calls.

A zero value for t means I/O operations will not time out.

func (*SlowConn) SetReadDeadline

func (sc *SlowConn) SetReadDeadline(t time.Time) error

SetReadDeadline sets the deadline for future Read calls. A zero value for t means Read will not time out.

func (*SlowConn) SetWriteDeadline

func (sc *SlowConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline sets the deadline for future Write calls. Even if write times out, it may return n > 0, indicating that some of the data was successfully written. A zero value for t means Write will not time out.

func (*SlowConn) Write

func (sc *SlowConn) Write(b []byte) (n int, err error)

Write writes data to the connection. Write can be made to time out and return a Error with Timeout() == true after a fixed time limit; see SetDeadline and SetWriteDeadline.

type SlowListener

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

SlowListener is a listener that limits global IO over all connections

func (*SlowListener) Accept

func (l *SlowListener) Accept() (net.Conn, error)

Accept waits for and returns the next connection to the listener.

func (*SlowListener) Addr

func (l *SlowListener) Addr() net.Addr

Addr returns the listener's network address.

func (*SlowListener) Close

func (l *SlowListener) Close() error

Close closes the listener.

Jump to

Keyboard shortcuts

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