Skip to content

v2.0.1

Latest

Choose a tag to compare

@rssh-jp rssh-jp released this 14 May 13:38
7005eec

インストール

go get github.com/rssh-jp/go-bandwidth

使い方

Writer(書き込み帯域制限)

package main

import (
    "log"
    "os"
    "time"

    bandwidth "github.com/rssh-jp/go-bandwidth"
)

func main() {
    fd, err := os.OpenFile("./output", os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer fd.Close()

    // 1秒あたり 1024 バイトに帯域制限して書き込む
    w := bandwidth.New(
        bandwidth.OptionWriter(fd),
        bandwidth.OptionConstant(1024, time.Second),
    )

    for i := 0; i < 100; i++ {
        if _, err := w.Write([]byte{byte(i)}); err != nil {
            log.Fatal(err)
        }
    }
}

Reader(読み込み帯域制限)

r := bandwidth.New(
    bandwidth.OptionReader(fd),
    bandwidth.OptionConstant(1024, time.Second),
)

buf := make([]byte, 4096)
n, err := r.Read(buf)

ReadWriter(読み書き両方)

rw := bandwidth.New(
    bandwidth.OptionReader(fd),
    bandwidth.OptionWriter(fd),
    bandwidth.OptionConstant(1024, time.Second),
)

デフォルト設定の利用

// デフォルト設定(初期値: 1MiB/秒)を変更する
bandwidth.SetDefault(512*1024, time.Second)

// デフォルト設定を共有するインスタンスを作成
w := bandwidth.New(bandwidth.OptionUseDefault(), bandwidth.OptionWriter(fd))

What's Changed

  • Goのバージョンを1.26に更新し、テストとドキュメントを改善しました。また、Copilot用の指示を追加しました。 by @rssh-jp in #1
  • 変数の削除と関数の戻り値を修正 by @rssh-jp in #2

New Contributors

Full Changelog: v1.1.0...v2.0.1