closer

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: 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: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewManual,
			func(closer *Manual) Closer { return closer },
		)
	}),
}
View Source
var OsSignalComponent = &app.Component{
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewOsSignal,
			func(closer *OsSignal) Closer { return closer },
		)
	}),
	ServeChan: app.ServeChan(func(container container.Container, isServeChan chan struct{}) error {
		return container.Invoke(func(closer *OsSignal) {
			isServeChan <- struct{}{}
			closer.Serve()
		})
	}),
}

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

func (*OsSignal) Serve added in v1.9.14

func (closer *OsSignal) Serve()

Jump to

Keyboard shortcuts

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