mirror of
https://github.com/terorie/od-database-crawler.git
synced 2025-04-04 06:52:59 +00:00
39 lines
629 B
Go
39 lines
629 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
)
|
|
|
|
// https://programming.guide/go/formatting-byte-size-to-human-readable-format.html
|
|
func FormatByteCount(b uint64) string {
|
|
const unit = 1024
|
|
if b < unit {
|
|
return fmt.Sprintf("%d B", b)
|
|
} else {
|
|
div, exp := int64(unit), 0
|
|
for n := b / unit; n >= unit; n /= unit {
|
|
div *= unit
|
|
exp++
|
|
}
|
|
return fmt.Sprintf("%.1f %ciB", float64(b)/float64(div), "KMGTPE"[exp])
|
|
}
|
|
}
|
|
|
|
type Hooks struct {
|
|
m sync.Mutex
|
|
l []func()
|
|
}
|
|
|
|
func (h *Hooks) Add(hook func()) {
|
|
h.m.Lock()
|
|
h.l = append(h.l, hook)
|
|
h.m.Unlock()
|
|
}
|
|
|
|
func (h *Hooks) Execute() {
|
|
for _, hook := range h.l {
|
|
hook()
|
|
}
|
|
}
|