package blobovniczatree

import (
	"time"

	"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobovnicza"
)

type Metrics interface {
	BlobovnicaMetrics(path string) blobovnicza.Metrics

	SetMode(readOnly bool)
	Close()

	Delete(d time.Duration, success, withStorageID bool)
	Exists(d time.Duration, success, withStorageID bool)
	GetRange(d time.Duration, size int, success, withStorageID bool)
	Get(d time.Duration, size int, success, withStorageID bool)
	Iterate(d time.Duration, success bool)
	Put(d time.Duration, size int, success bool)
}

type noopMetrics struct{}

func (m *noopMetrics) BlobovnicaMetrics(string) blobovnicza.Metrics {
	return &blobovnicza.NoopMetrics{}
}
func (m *noopMetrics) SetMode(bool)                            {}
func (m *noopMetrics) Close()                                  {}
func (m *noopMetrics) Delete(time.Duration, bool, bool)        {}
func (m *noopMetrics) Exists(time.Duration, bool, bool)        {}
func (m *noopMetrics) GetRange(time.Duration, int, bool, bool) {}
func (m *noopMetrics) Get(time.Duration, int, bool, bool)      {}
func (m *noopMetrics) Iterate(time.Duration, bool)             {}
func (m *noopMetrics) Put(time.Duration, int, bool)            {}