forked from TrueCloudLab/frostfs-node
49 lines
925 B
Go
49 lines
925 B
Go
|
package audit
|
||
|
|
||
|
import (
|
||
|
"github.com/nspcc-dev/neofs-node/pkg/util/logger"
|
||
|
"go.uber.org/zap"
|
||
|
)
|
||
|
|
||
|
// Calculator represents component for calculating payments
|
||
|
// based on data audit results and sending remittances to the chain.
|
||
|
type Calculator struct {
|
||
|
prm *CalculatorPrm
|
||
|
|
||
|
opts *options
|
||
|
}
|
||
|
|
||
|
// CalculatorOption is a Calculator constructor's option.
|
||
|
type CalculatorOption func(*options)
|
||
|
|
||
|
type options struct {
|
||
|
log *logger.Logger
|
||
|
}
|
||
|
|
||
|
func defaultOptions() *options {
|
||
|
return &options{
|
||
|
log: zap.L(),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// NewCalculator creates, initializes and returns new Calculator instance.
|
||
|
func NewCalculator(p *CalculatorPrm, opts ...CalculatorOption) *Calculator {
|
||
|
o := defaultOptions()
|
||
|
|
||
|
for i := range opts {
|
||
|
opts[i](o)
|
||
|
}
|
||
|
|
||
|
return &Calculator{
|
||
|
prm: p,
|
||
|
opts: o,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithLogger returns option to specify logging component.
|
||
|
func WithLogger(l *logger.Logger) CalculatorOption {
|
||
|
return func(o *options) {
|
||
|
o.log = l
|
||
|
}
|
||
|
}
|