ratio-spoof/internal/generator/rouding.go
2021-03-12 23:15:18 -03:00

20 lines
747 B
Go

package generator
type RoundingGenerator interface {
NextAmountReport(downloadCandidateNextAmount, uploadCandidateNextAmount, leftCandidateNextAmount, pieceSize int) (downloaded, uploaded, left int)
}
func NewRoundingGenerator(code string) (RoundingGenerator, error) {
return &DefaultRoundingGenerator{}, nil
}
type DefaultRoundingGenerator struct{}
func (d *DefaultRoundingGenerator) NextAmountReport(downloadCandidateNextAmount, uploadCandidateNextAmount, leftCandidateNextAmount, pieceSize int) (downloaded, uploaded, left int) {
down := downloadCandidateNextAmount
up := uploadCandidateNextAmount - (uploadCandidateNextAmount % (16 * 1024))
l := leftCandidateNextAmount - (leftCandidateNextAmount % pieceSize)
return down, up, l
}