27 lines
785 B
Go
27 lines
785 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"git.ipao.vip/rogee/go-sip/internal/agent"
|
|
"git.ipao.vip/rogee/go-sip/internal/daily"
|
|
)
|
|
|
|
// This owns only local delivered-file cleanup, never RPC/cloud recovery.
|
|
func startAgentMidnightCleanup(parent context.Context, root string) func() {
|
|
ctx, cancel := context.WithCancel(parent)
|
|
done := make(chan struct{})
|
|
go func() {
|
|
defer close(done)
|
|
if err := daily.Run(ctx, func(ctx context.Context) error {
|
|
count, err := (&agent.RecordingRecovery{Root: root}).CleanupDelivered(ctx)
|
|
slog.InfoContext(ctx, "Agent midnight cleanup finished", "completed_recordings", count, "error", err)
|
|
return err
|
|
}); err != nil {
|
|
slog.Error("Agent midnight cleanup timer failed", "error", err)
|
|
}
|
|
}()
|
|
return func() { cancel(); <-done }
|
|
}
|