Files
tasks/service/matching/liveness.go
zeekay 5a601d081b rebrand: go.temporal.io/server -> github.com/hanzoai/tasks
Full module path rebrand from Temporal to Hanzo Tasks:
- go.mod module: github.com/hanzoai/tasks
- All internal Go imports updated (1906 files)
- cmd/server renamed to cmd/tasksd
- Binary name: tasksd (was temporal-server)
- Docker images: hanzoai/tasks (was temporalio/server)
- README rewritten with Hanzo Tasks branding
- LLM.md created with integration notes
- Makefile, goreleaser, CI workflows updated
- go.temporal.io/sdk and go.temporal.io/api imports preserved (separate repos)

Fork of Temporal.io (MIT license).
2026-03-19 10:36:40 -07:00

50 lines
829 B
Go

package matching
import (
"sync/atomic"
"time"
"github.com/hanzoai/tasks/common/clock"
)
type (
liveness struct {
timeSource clock.TimeSource
ttl func() time.Duration
onIdle func()
timer atomic.Value
}
timerWrapper struct {
clock.Timer
}
)
func newLiveness(
timeSource clock.TimeSource,
ttl func() time.Duration,
onIdle func(),
) *liveness {
return &liveness{
timeSource: timeSource,
ttl: ttl,
onIdle: onIdle,
}
}
func (l *liveness) Start() {
l.timer.Store(timerWrapper{l.timeSource.AfterFunc(l.ttl(), l.onIdle)})
}
func (l *liveness) Stop() {
if t, ok := l.timer.Swap(timerWrapper{}).(timerWrapper); ok && t.Timer != nil {
t.Stop()
}
}
func (l *liveness) markAlive() {
if t, ok := l.timer.Load().(timerWrapper); ok && t.Timer != nil {
t.Reset(l.ttl())
}
}