diff --git a/api/api.go b/api/api.go index 818fc96..462dd94 100644 --- a/api/api.go +++ b/api/api.go @@ -35,19 +35,19 @@ type RegistryStats struct { type TaskRegistry struct { mu *sync.RWMutex - lifetime time.Duration + config *config.Config tasks map[uint32]*Task idCounter uint32 api *sati.Api stats RegistryStats } -func NewTaskRegistry(api *sati.Api, lifetime time.Duration) *TaskRegistry { +func NewTaskRegistry(api *sati.Api, config *config.Config) *TaskRegistry { return &TaskRegistry{ - mu: &sync.RWMutex{}, - tasks: map[uint32]*Task{}, - api: api, - lifetime: lifetime, + mu: &sync.RWMutex{}, + tasks: map[uint32]*Task{}, + api: api, + config: config, } } @@ -82,7 +82,7 @@ func (t *TaskRegistry) CreateTask(task sati.AnyTask) uint32 { entry.EndTime = time.Now().Unix() t.mu.Unlock() - time.Sleep(t.lifetime) + time.Sleep(time.Millisecond * time.Duration(t.config.TaskLifetime)) t.mu.Lock() delete(t.tasks, id) t.mu.Unlock() @@ -98,6 +98,10 @@ func (t *TaskRegistry) Stats() RegistryStats { } func (t *TaskRegistry) Get(id uint32) *Task { + if t.config.TaskGetDelay != 0 { + time.Sleep(time.Millisecond * time.Duration(t.config.TaskGetDelay)) + } + t.mu.RLock() defer t.mu.RUnlock() task := t.tasks[id] diff --git a/config/config.go b/config/config.go index 6d6b252..0c8fc9c 100644 --- a/config/config.go +++ b/config/config.go @@ -16,6 +16,8 @@ type Config struct { TlsKeyPath string `json:"tlsKeyPath"` Host string `json:"host"` TlsHost string `json:"tlsHost"` + TaskLifetime int64 `json:"taskLifetime"` + TaskGetDelay int64 `json:"taskGetDelay"` AntiGateV2 struct { TurnstileUserAgent string `json:"turnstileUserAgent"` Ip string `json:"ip"` @@ -32,6 +34,8 @@ func Default() *Config { TlsKeyPath: "./data/ca.key", Host: "127.0.0.1:80", TlsHost: "127.0.0.1:443", + TaskLifetime: 60000, + TaskGetDelay: 0, AntiGateV2: struct { TurnstileUserAgent string `json:"turnstileUserAgent"` Ip string `json:"ip"` diff --git a/main.go b/main.go index fcd64af..c49572e 100644 --- a/main.go +++ b/main.go @@ -289,7 +289,7 @@ func main() { satiConfig.Debug = cfg.Debug satiApi := sati.NewApi(satiConfig) - registry := api.NewTaskRegistry(satiApi, time.Minute) + registry := api.NewTaskRegistry(satiApi, cfg) ctx := api.ApiContext{ Config: cfg,