Mercurial > prosody-hg
comparison util/async.lua @ 8651:1b7c5933b215
util.async: Add sleep() method
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 22 Mar 2018 13:02:00 +0000 |
| parents | 9246f64d6f1e |
| children | ba6a6a04b46c |
comparison
equal
deleted
inserted
replaced
| 8650:2f133b6e8740 | 8651:1b7c5933b215 |
|---|---|
| 1 local log = require "util.logger".init("util.async"); | 1 local log = require "util.logger".init("util.async"); |
| 2 local new_id = require "util.id".short; | 2 local new_id = require "util.id".short; |
| 3 local timer = require "util.timer"; | |
| 3 | 4 |
| 4 local function checkthread() | 5 local function checkthread() |
| 5 local thread, main = coroutine.running(); | 6 local thread, main = coroutine.running(); |
| 6 if not thread or main then | 7 if not thread or main then |
| 7 error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); | 8 error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); |
| 231 local r = runner(func, once_watchers); | 232 local r = runner(func, once_watchers); |
| 232 return r:run(func); | 233 return r:run(func); |
| 233 end | 234 end |
| 234 end | 235 end |
| 235 | 236 |
| 237 local function sleep(s) | |
| 238 local wait, done = waiter(); | |
| 239 timer.add_task(s, done); | |
| 240 wait(); | |
| 241 end | |
| 242 | |
| 236 return { | 243 return { |
| 237 once = once; | 244 once = once; |
| 238 ready = ready; | 245 ready = ready; |
| 239 waiter = waiter; | 246 waiter = waiter; |
| 240 guarder = guarder; | 247 guarder = guarder; |
| 241 runner = runner | 248 runner = runner; |
| 249 sleep = sleep; | |
| 242 }; | 250 }; |
