Files
zeekay 1cf7fee468 refactor: remove node dependency
- Use luxfi/codec instead of node/codec
- Use luxfi/metric instead of node/utils/metric
- Use luxfi/utils instead of node/utils
2025-12-24 13:16:04 -08:00

92 lines
3.1 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package meterdb
import (
"fmt"
"github.com/luxfi/metric"
)
func newSizeMetric(namespace, name string, reg metric.Metrics, errs *metric.Errs) metric.Averager {
return metric.NewAveragerWithErrs(
fmt.Sprintf("%s_%s_size", namespace, name),
fmt.Sprintf("bytes passed in a %s call", name),
reg.Registry(),
errs,
)
}
func newTimeMetric(namespace, name string, reg metric.Metrics, errs *metric.Errs) metric.Averager {
return metric.NewAveragerWithErrs(
fmt.Sprintf("%s_%s", namespace, name),
fmt.Sprintf("time (in ns) of a %s", name),
reg.Registry(),
errs,
)
}
type dbMetrics struct {
readSize,
writeSize,
has, hasSize,
get, getSize,
put, putSize,
delete, deleteSize,
newBatch,
newIterator,
compact,
close,
healthCheck,
bPut, bPutSize,
bDelete, bDeleteSize,
bSize,
bWrite, bWriteSize,
bReset,
bReplay,
bInner,
iNext, iNextSize,
iError,
iKey,
iValue,
iRelease metric.Averager
}
func newMetrics(namespace string, reg metric.Metrics) (dbMetrics, error) {
errs := metric.Errs{}
return dbMetrics{
readSize: newSizeMetric(namespace, "read", reg, &errs),
writeSize: newSizeMetric(namespace, "write", reg, &errs),
has: newTimeMetric(namespace, "has", reg, &errs),
hasSize: newSizeMetric(namespace, "has", reg, &errs),
get: newTimeMetric(namespace, "get", reg, &errs),
getSize: newSizeMetric(namespace, "get", reg, &errs),
put: newTimeMetric(namespace, "put", reg, &errs),
putSize: newSizeMetric(namespace, "put", reg, &errs),
delete: newTimeMetric(namespace, "delete", reg, &errs),
deleteSize: newSizeMetric(namespace, "delete", reg, &errs),
newBatch: newTimeMetric(namespace, "new_batch", reg, &errs),
newIterator: newTimeMetric(namespace, "new_iterator", reg, &errs),
compact: newTimeMetric(namespace, "compact", reg, &errs),
close: newTimeMetric(namespace, "close", reg, &errs),
healthCheck: newTimeMetric(namespace, "health_check", reg, &errs),
bPut: newTimeMetric(namespace, "batch_put", reg, &errs),
bPutSize: newSizeMetric(namespace, "batch_put", reg, &errs),
bDelete: newTimeMetric(namespace, "batch_delete", reg, &errs),
bDeleteSize: newSizeMetric(namespace, "batch_delete", reg, &errs),
bSize: newTimeMetric(namespace, "batch_size", reg, &errs),
bWrite: newTimeMetric(namespace, "batch_write", reg, &errs),
bWriteSize: newSizeMetric(namespace, "batch_write", reg, &errs),
bReset: newTimeMetric(namespace, "batch_reset", reg, &errs),
bReplay: newTimeMetric(namespace, "batch_replay", reg, &errs),
bInner: newTimeMetric(namespace, "batch_inner", reg, &errs),
iNext: newTimeMetric(namespace, "iterator_next", reg, &errs),
iNextSize: newSizeMetric(namespace, "iterator_next", reg, &errs),
iError: newTimeMetric(namespace, "iterator_error", reg, &errs),
iKey: newTimeMetric(namespace, "iterator_key", reg, &errs),
iValue: newTimeMetric(namespace, "iterator_value", reg, &errs),
iRelease: newTimeMetric(namespace, "iterator_release", reg, &errs),
}, errs.Err
}