mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
a7ec2b949a
Хосту, который ведёт лог через EventSink, кольцо для DumpLogs не нужно.
52 lines
886 B
Go
52 lines
886 B
Go
package mobile
|
|
|
|
import (
|
|
"strings"
|
|
"sync"
|
|
"sync/atomic"
|
|
)
|
|
|
|
// logBufMax - размер кольцевого буфера логов для DumpLogs.
|
|
const logBufMax = 500
|
|
|
|
type logBuffer struct {
|
|
mu sync.Mutex
|
|
lines []string
|
|
}
|
|
|
|
func (b *logBuffer) append(line string) {
|
|
b.mu.Lock()
|
|
defer b.mu.Unlock()
|
|
b.lines = append(b.lines, line)
|
|
if len(b.lines) > logBufMax {
|
|
b.lines = b.lines[len(b.lines)-logBufMax:]
|
|
}
|
|
}
|
|
|
|
func (b *logBuffer) get() string {
|
|
b.mu.Lock()
|
|
defer b.mu.Unlock()
|
|
return strings.Join(b.lines, "\n")
|
|
}
|
|
|
|
func (b *logBuffer) clear() {
|
|
b.mu.Lock()
|
|
defer b.mu.Unlock()
|
|
b.lines = b.lines[:0]
|
|
}
|
|
|
|
var sharedLogBuf = &logBuffer{}
|
|
|
|
var logBufOff atomic.Bool
|
|
|
|
func SetLogBuffer(enabled bool) {
|
|
logBufOff.Store(!enabled)
|
|
if !enabled {
|
|
sharedLogBuf.clear()
|
|
}
|
|
}
|
|
|
|
func DumpLogs() string { return sharedLogBuf.get() }
|
|
|
|
func ClearLogs() { sharedLogBuf.clear() }
|