closer

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2023 License: MIT Imports: 8 Imported by: 0

README

Отслеживание сигнала на закрытие приложения.

Компонент для управления глобальным контекстом, при закрытии которого приложение должно остановить все процессы и закрыться.

Реализует интерфейс Closer, который доступен в контейнере объектов.

type Closer interface {
    io.Closer
    GetContext() context.Context
    Closed() bool
}
Доступные методы.
  • Close - наследуется от интерфейса io.Closer, принудительно закрывает глобальный контекст;
  • GetContext - возвращает глобальный контекст;
  • Closed - возвращает флаг, закрытости глобального контекста, метод потокобезопасный;

Пакет предоставляет две реализации:

  • OsSignal
  • Manual
OsSignal.

Прослушивает системные вызовы:

  • SIGINT;
  • SIGTERM;
  • SIGABRT.

При получении одного из этих сигналов, закрывает контекст. Эта реализация используется в приложении по умолчанию.

Manual.

Закрывает контекст, только при вызове метода Close. Полезен когда надо сделать задержку перед закрытием приложения.

Documentation

Index

Constants

View Source
const (
	ExitCodeError int = 1
)

Variables

View Source
var ManualComponent = &app.Component{
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewManual,
			func(closer *Manual) Closer { return closer },
		)
	},
}
View Source
var OsSignalComponent = &app.Component{
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewOsSignal,
			func(closer *OsSignal) Closer { return closer },
		)
	},
	BindFlags: nil,
	Serve: func(c container.Container) error {
		closer, err := container.Get[*OsSignal](c)
		if err != nil {
			return err
		}

		closer.serve()

		return nil
	},
}

Functions

This section is empty.

Types

type Closer

type Closer interface {
	io.Closer
	GetContext() context.Context
	Closed() bool
}

type Manual

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

func NewManual

func NewManual() *Manual

func (*Manual) Close

func (closer *Manual) Close() error

func (*Manual) Closed

func (closer *Manual) Closed() bool

func (*Manual) GetContext

func (closer *Manual) GetContext() context.Context

type OsSignal

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

func NewOsSignal

func NewOsSignal() *OsSignal

func (*OsSignal) Close

func (closer *OsSignal) Close() error

func (*OsSignal) Closed

func (closer *OsSignal) Closed() bool

func (*OsSignal) GetContext

func (closer *OsSignal) GetContext() context.Context

Jump to

Keyboard shortcuts

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