github.com/Cloud-Foundations/Dominator@v0.3.4/lib/fsrateio/api.go (about)

     1  package fsrateio
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/rateio"
     7  	"github.com/Cloud-Foundations/tricorder/go/tricorder"
     8  	"github.com/Cloud-Foundations/tricorder/go/tricorder/units"
     9  )
    10  
    11  type ReaderContext struct {
    12  	maxBytesPerSecond  uint64
    13  	maxBlocksPerSecond uint64
    14  	ctx                *rateio.ReaderContext
    15  }
    16  
    17  func NewReaderContext(maxBytesPerSecond uint64,
    18  	maxBlocksPerSecond uint64, speedPercent uint64) *ReaderContext {
    19  	return newReaderContext(maxBytesPerSecond, maxBlocksPerSecond, speedPercent)
    20  }
    21  
    22  func (ctx *ReaderContext) GetContext() *rateio.ReaderContext { return ctx.ctx }
    23  
    24  func (ctx *ReaderContext) NewReader(rd io.Reader) *rateio.Reader {
    25  	return ctx.ctx.NewReader(rd)
    26  }
    27  
    28  func (ctx *ReaderContext) RegisterMetrics(dir *tricorder.DirectorySpec) error {
    29  	if ctx.maxBlocksPerSecond > 0 {
    30  		return ctx.ctx.RegisterMetrics(dir, units.None,
    31  			"file-system speed in blocks per second")
    32  	}
    33  	return ctx.ctx.RegisterMetrics(dir, units.BytePerSecond,
    34  		"file-system speed")
    35  }
    36  
    37  func (ctx *ReaderContext) String() string {
    38  	return ctx.format()
    39  }