package blobovniczatree

import (
	"time"

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

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

	SetParentID(parentID string)

	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) SetParentID(string)                      {}
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)            {}