buffer

package
v1.9.14 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 15 Imported by: 0

README

Буфер для данных.

Это пакет для хранения байтовых данных. Буфер реализует интерфейс io.ReadWriteCloser, через свой собственный интерфейс Buffer который доступен в контейнере объектов.

Буфер состоит из 3-х компонентов, который реализует каждый свою стратегию хранения данных:

Хранение данных комбинированным методом.

Как следует из названия, хранит данные и в памяти и в файле, автоматически переключая место хранения, основываясь на показателе компонента "сканер занятой памяти", так же, при получении сигнала на закрытие приложения от компонента "отслеживание сигнала на закрытие приложения" сбрасывает все данные, которые хранились и оставались в памяти, в файл.

Выбор стратегии хранения данных.

Выбор стратегии осуществляется через файл конфигурации:

type Config struct {
	Strategy      string
	NameForMetric string
}

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

Поле Описание Значение по умолчанию Доступные значения
Strategy Стратегия хранения данных, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --buffer.strategy
- переменная окружения BUFFER_STRATEGY
- значение в конфиг файле buffer.strategy
combination - memory - хранения данных только в памяти;
- file - хранения данных только в файле;
- combination - комбинированная стратегия хранения.
NameForMetric Имя буфера в метриках, устанавливает в ручную, должно быть установлено на этапе конфигурирования приложения, до создание объекта буфера
Дополнительные компоненты.

Documentation

Index

Constants

View Source
const (
	StrategyFieldName = "buffer.strategy"

	MemoryBufferStrategy      = "memory"
	FileBufferStrategy        = "file"
	CombinationBufferStrategy = "combination"

	StrategyDefault = CombinationBufferStrategy
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		configurator.Component,
		runner.Component,
		file.Component,
		memory.Component,
		memory2.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewWithConfigurator,
			func(buffer *Process) Buffer { return buffer },
		)
	}),
	BindFlags: app.BindFlags(BindFlags),
	Run: app.Run(func(container container.Container) error {
		return container.Invoke(func(runner runner.Runner, buffer *Process) error {
			return runner.AddProcesses(buffer)
		})
	}),
}

Functions

func BindFlags added in v1.9.14

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

Types

type Buffer

type Buffer io.ReadWriteCloser

func NewBuffer

func NewBuffer(config *Config, memory memoryBuffer.Buffer, file file.Buffer, memoryStater memory.Stater, informer logger.Informer) Buffer

type Config

type Config struct {
	Strategy string
	Name     string
}

func Configuration

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

func NewConfig

func NewConfig() *Config

type Process added in v1.8.12

type Process struct {
	Buffer
	// contains filtered or unexported fields
}

func NewProcess added in v1.8.12

func NewProcess(buffer Buffer, config *Config, informer logger.Informer) *Process

func NewWithConfigurator

func NewWithConfigurator(config *Config, configurator configurator.Configurator, informer logger.Informer, container container.Container) (*Process, error)

func (*Process) Name added in v1.8.12

func (buffer *Process) Name() string

func (*Process) Process added in v1.8.12

func (buffer *Process) Process(ctx context.Context) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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