sing-box/daemon/log_ring.go
世界 bdd86c1fef
Some checks are pending
Build / Calculate version (push) Waiting to run
Build / Build binary (push) Blocked by required conditions
Build / Build binary-1 (push) Blocked by required conditions
Build / Build binary-2 (push) Blocked by required conditions
Build / Build binary-3 (push) Blocked by required conditions
Build / Build binary-4 (push) Blocked by required conditions
Build / Build binary-5 (push) Blocked by required conditions
Build / Build binary-6 (push) Blocked by required conditions
Build / Build binary-7 (push) Blocked by required conditions
Build / Build binary-8 (push) Blocked by required conditions
Build / Build binary-9 (push) Blocked by required conditions
Build / Build binary-10 (push) Blocked by required conditions
Build / Build binary-11 (push) Blocked by required conditions
Build / Build binary-12 (push) Blocked by required conditions
Build / Build binary-13 (push) Blocked by required conditions
Build / Build binary-14 (push) Blocked by required conditions
Build / Build binary-15 (push) Blocked by required conditions
Build / Build binary-16 (push) Blocked by required conditions
Build / Build binary-17 (push) Blocked by required conditions
Build / Build binary-18 (push) Blocked by required conditions
Build / Build binary-19 (push) Blocked by required conditions
Build / Build binary-20 (push) Blocked by required conditions
Build / Build binary-21 (push) Blocked by required conditions
Build / Build binary-22 (push) Blocked by required conditions
Build / Build binary-23 (push) Blocked by required conditions
Build / Build binary-24 (push) Blocked by required conditions
Build / Build binary-25 (push) Blocked by required conditions
Build / Build binary-26 (push) Blocked by required conditions
Build / Build binary-27 (push) Blocked by required conditions
Build / Build binary-28 (push) Blocked by required conditions
Build / Build binary-29 (push) Blocked by required conditions
Build / Build binary-30 (push) Blocked by required conditions
Build / Build binary-31 (push) Blocked by required conditions
Build / Build binary-32 (push) Blocked by required conditions
Build / Build binary-33 (push) Blocked by required conditions
Build / Build binary-34 (push) Blocked by required conditions
Build / Build binary-35 (push) Blocked by required conditions
Build / Build binary-36 (push) Blocked by required conditions
Build / Build binary-37 (push) Blocked by required conditions
Build / Build Darwin binaries (push) Blocked by required conditions
Build / Build Darwin binaries-1 (push) Blocked by required conditions
Build / Build Darwin binaries-2 (push) Blocked by required conditions
Build / Build Windows binaries (push) Blocked by required conditions
Build / Build Windows binaries-1 (push) Blocked by required conditions
Build / Build Windows binaries-2 (push) Blocked by required conditions
Build / Build Android library (386) (push) Blocked by required conditions
Build / Build Android library (amd64) (push) Blocked by required conditions
Build / Build Android library (arm) (push) Blocked by required conditions
Build / Build Android library (arm64) (push) Blocked by required conditions
Build / Build Android (other) (push) Blocked by required conditions
Build / Build Android (other-legacy) (push) Blocked by required conditions
Build / Publish Android (push) Blocked by required conditions
Build / Build Windows client (arm64) (push) Blocked by required conditions
Build / Build Windows client (x64) (push) Blocked by required conditions
Build / Build Windows client (x86) (push) Blocked by required conditions
Build / Build Linux client (arm64) (push) Blocked by required conditions
Build / Build Linux client (armv7l) (push) Blocked by required conditions
Build / Build Linux client (x64) (push) Blocked by required conditions
Build / Build Apple library (ios-arm64) (push) Blocked by required conditions
Build / Build Apple library (macos-amd64) (push) Blocked by required conditions
Build / Build Apple library (macos-arm64) (push) Blocked by required conditions
Build / Build Apple library (tvos-arm64) (push) Blocked by required conditions
Build / Build Apple release clients (push) Blocked by required conditions
Build / Build Apple release clients-1 (push) Blocked by required conditions
Build / Build Apple App Store clients (push) Blocked by required conditions
Build / Build Apple App Store clients-1 (push) Blocked by required conditions
Build / Build Apple App Store clients-2 (push) Blocked by required conditions
Build / Upload builds (push) Blocked by required conditions
Build / Cache GC (push) Blocked by required conditions
Reduce logging allocations
2026-09-01 22:39:35 +08:00

39 lines
687 B
Go

package daemon
import (
"github.com/sagernet/sing-box/log"
)
type logRing struct {
entries []*log.Entry
maxLines int
start int
}
func (r *logRing) push(entry *log.Entry) {
if r.maxLines <= 0 {
return
}
if len(r.entries) < r.maxLines {
r.entries = append(r.entries, entry)
return
}
r.entries[r.start] = entry
r.start++
if r.start == len(r.entries) {
r.start = 0
}
}
func (r *logRing) array() []*log.Entry {
result := make([]*log.Entry, 0, len(r.entries))
result = append(result, r.entries[r.start:]...)
result = append(result, r.entries[:r.start]...)
return result
}
func (r *logRing) reset() {
clear(r.entries)
r.entries = r.entries[:0]
r.start = 0
}