Software /
code /
prosody
Comparison
util/async.lua @ 8649:9246f64d6f1e
util.async: Add once() to create temporary runners
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 22 Mar 2018 07:56:01 +0000 |
parent | 8648:ca710a71d730 |
child | 8651:1b7c5933b215 |
comparison
equal
deleted
inserted
replaced
8648:ca710a71d730 | 8649:9246f64d6f1e |
---|---|
217 | 217 |
218 local function ready() | 218 local function ready() |
219 return pcall(checkthread); | 219 return pcall(checkthread); |
220 end | 220 end |
221 | 221 |
222 return { ready = ready, waiter = waiter, guarder = guarder, runner = runner }; | 222 local once; -- forward declaration |
223 do | |
224 local once_watchers = { | |
225 error = function (_, err) | |
226 error(err); | |
227 end; | |
228 }; | |
229 local function once_runner(func) func(); end | |
230 function once(func) | |
231 local r = runner(func, once_watchers); | |
232 return r:run(func); | |
233 end | |
234 end | |
235 | |
236 return { | |
237 once = once; | |
238 ready = ready; | |
239 waiter = waiter; | |
240 guarder = guarder; | |
241 runner = runner | |
242 }; |