mirror of
https://github.com/hanzoai/tasks.git
synced 2026-11-03 03:56:04 +00:00
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).
50 lines
829 B
Go
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())
|
|
}
|
|
}
|