Skip to content
A Go package for throttling application IO (such as bandwidth).
Go Shell
Find file
Latest commit 60e7e54 Nov 21, 2014 Evan Farrer Simplification of the unit tests.
Handle an error within createTcpPipe so it's callers don't have to handle it.

README.md

iothrottler

A Go package for throttling application IO (such as bandwidth).

Installation

If you have the Go Language installed type go get "github.com/efarrer/iothrottler"

Example

import (
    "bytes"
    "fmt"
    "io"
    "github.com/efarrer/iothrottler"
    "os"
)

// Basic usage of a IOThrottlerPool to throttle reading from a file 
func ExampleIOThrottlerPool() {
    // Construct a bandwidth throttling pool that's limited to 100 bytes per second
    pool := iothrottler.NewIOThrottlerPool(iothrottler.BytesPerSecond * 100)
    defer pool.ReleasePool()

    file, err := os.Open("/dev/zero")
    if err != nil {
        // handle error
        return
    }
    defer file.Close()

    throttledFile, err := pool.AddReader(file)
    if err != nil {
        // handle error
        return
    }

    var zeros bytes.Buffer

    copied, err := io.CopyN(&zeros, throttledFile, 200)
    if err != nil {
        // handle error
    }

    fmt.Printf("Copied %v bytes\n", copied)
    // Output: Copied 200 bytes
}
Something went wrong with that request. Please try again.