package jobqueue import ( "sync" ) // CounterResult is a result of a counter type CounterResult struct { Count int } // CounterRunnable is a runnable that counts type CounterRunnable struct { Count int mu sync.Mutex } // GetCount returns the current count func (c *CounterRunnable) GetCount() int { c.mu.Lock() defer c.mu.Unlock() return c.Count } // Run runs the counter func (c *CounterRunnable) Run() (RunResult[CounterResult], error) { c.mu.Lock() defer c.mu.Unlock() c.Count++ return RunResult[CounterResult]{ Status: ResultStatusSuccess, Data: CounterResult{ Count: c.Count, }, }, nil }