Files
free-turn-proxy/internal/session/observer.go
T

19 lines
1.2 KiB
Go

package session
// Observer получает переходы состояния сессии. Дополняет Snapshot: снимок нужен
// для метрик на тик UI, наблюдатель - чтобы хост не опрашивал стадию ради
// событий, которые случаются несколько раз за сессию.
//
// Контракт:
// - OnPhase вызывается только при изменении (стадия, число стримов или текст
// ошибки), не на каждый тик;
// - вызовы сериализованы: последовательность приходит из одной горутины, локи
// на стороне хоста не нужны;
// - реализация не должна блокировать - она стоит на пути status-тикера.
//
// Логи идут не сюда, а через logx.Logger из Deps: уровень задаёт вызванный
// метод, второго канала для того же потока заводить незачем.
type Observer interface {
OnPhase(phase Phase, streams, total int, errMsg string)
}