memory

package
v1.9.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2024 License: MIT Imports: 13 Imported by: 0

README

Буфер для хранения данных в памяти.

Реализует интерфейс io.ReadWriteCloser и стратегию хранения данных в памяти приложения.

Объект конфигурации.
type Config struct {
    Compressor    string
    NameForMetric string
}

Описание полей:

Поле Описание Значение по умолчанию Доступные значения
Compressor Тип алгоритма сжатия, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --buffer.memory.compressor
- переменная окружения BUFFER_MEMORY_COMPRESSOR
- значение в конфиг файле buffer.memory.compressor
none - none - не использовать сжатие;
- lz4 - сжимает входящий поток байтов алгоритмом lz4.
NameForMetric Имя буфера в метриках, устанавливает в ручную, должно быть установлено на этапе конфигурирования приложения, до создание объекта буфера
Метрики

Метрики добавляются автоматически и не могут быть отключены.

go_buffer_memory_bytes - счетчик кол. записанных и прочитанных байтов. Доступные лейблы в метрике:

  • app - имя приложения;
  • name - имя буфера из поля конфига NameForMetric;
  • action - тип действия, запись - write, чтение - read;
  • compressor - тип выбранного алгоритма сжатия, если выбран алгоритм сжатия lz4 то метрика будет писаться дважды, на каждое действие записи/чтения, до сжатия и после сжатия.

Documentation

Index

Constants

View Source
const (
	CompressorFieldName = "buffer.memory.compressor"

	CompressorNone = "none"
	CompressorLZ4  = "lz4"

	CompressorDefault = CompressorNone
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		configurator.Component,
		metric.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewWithConfigurator,
			func(buffer *Memory) Buffer { return buffer },
		)
	}),
	BindFlags: app.BindFlags(BindFlags),
}

Functions

func BindFlags

func BindFlags(flagSet *pflag.FlagSet, container container.Container) error

Types

type Buffer

type Buffer io.ReadWriteCloser

type BufferReader

type BufferReader struct {
	// contains filtered or unexported fields
}

func NewBufferReader

func NewBufferReader() *BufferReader

func (*BufferReader) Len

func (reader *BufferReader) Len() int

func (*BufferReader) Read

func (reader *BufferReader) Read(p []byte) (int, error)

func (*BufferReader) Reset

func (reader *BufferReader) Reset()

func (*BufferReader) Write

func (reader *BufferReader) Write(p []byte) (int, error)

type BufferWriter

type BufferWriter struct {
	// contains filtered or unexported fields
}

func NewBufferWriter

func NewBufferWriter() *BufferWriter

func (*BufferWriter) Bytes

func (writer *BufferWriter) Bytes() []byte

func (*BufferWriter) Len

func (writer *BufferWriter) Len() int

func (*BufferWriter) Reset

func (writer *BufferWriter) Reset()

func (*BufferWriter) Write

func (writer *BufferWriter) Write(p []byte) (int, error)

type Config

type Config struct {
	Compressor    string
	NameForMetric string
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type LZ4Reader

type LZ4Reader struct {
	// contains filtered or unexported fields
}

func NewLZ4Reader

func NewLZ4Reader(reader Reader) *LZ4Reader

func (LZ4Reader) Len

func (reader LZ4Reader) Len() int

func (LZ4Reader) Read

func (reader LZ4Reader) Read(p []byte) (int, error)

func (LZ4Reader) Reset

func (reader LZ4Reader) Reset()

func (LZ4Reader) Write

func (reader LZ4Reader) Write(p []byte) (int, error)

type Lz4Writer

type Lz4Writer struct {
	// contains filtered or unexported fields
}

func NewLz4Writer

func NewLz4Writer(writer Writer) *Lz4Writer

func (*Lz4Writer) Bytes

func (writer *Lz4Writer) Bytes() []byte

func (*Lz4Writer) Len

func (writer *Lz4Writer) Len() int

func (*Lz4Writer) Reset

func (writer *Lz4Writer) Reset()

func (*Lz4Writer) Write

func (writer *Lz4Writer) Write(p []byte) (int, error)

type Memory

type Memory struct {
	// contains filtered or unexported fields
}

func New

func New(config *Config, metrics *metric.Metric) (*Memory, error)

func NewMemory

func NewMemory(options ...Option) *Memory

func NewWithConfigurator

func NewWithConfigurator(config *Config, configurator configurator.Configurator, metric *metric.Metric) (*Memory, error)

func (*Memory) Close

func (memory *Memory) Close() error

func (*Memory) Read

func (memory *Memory) Read(p []byte) (int, error)

func (*Memory) Write

func (memory *Memory) Write(p []byte) (int, error)

type MetricReader

type MetricReader struct {
	Reader
	// contains filtered or unexported fields
}

func NewMetricReader

func NewMetricReader(reader Reader, counter prometheus.Counter) *MetricReader

func (*MetricReader) Read

func (metric *MetricReader) Read(buffer []byte) (int, error)

type MetricWrite

type MetricWrite struct {
	Writer
	// contains filtered or unexported fields
}

func NewMetricWrite

func NewMetricWrite(writer Writer, counter prometheus.Counter) *MetricWrite

func (*MetricWrite) Write

func (metric *MetricWrite) Write(buffer []byte) (int, error)

type Option

type Option func(memory *Memory)

func WithLZ4Reader

func WithLZ4Reader() Option

func WithLz4Writer

func WithLz4Writer() Option

func WithReaderMetric

func WithReaderMetric(counter prometheus.Counter) Option

func WithWriterMetric

func WithWriterMetric(counter prometheus.Counter) Option

type Reader

type Reader interface {
	io.Reader
	io.Writer
	Reset()
	Len() int
}

type Writer

type Writer interface {
	io.Writer
	Bytes() []byte
	Reset()
	Len() int
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL