diff options
author | Kim Alvefur <zash@zash.se> | 2017-11-21 21:48:14 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-11-21 21:48:14 +0100 |
commit | a031c5073ba0956caf405d49987be3ed32eff99e (patch) | |
tree | 842de57db0b2d2db49cb1990c03710ad81807717 /util/async.lua | |
parent | f271418b3a61c37d0b74b5d6975b6c12f2667345 (diff) | |
download | prosody-a031c5073ba0956caf405d49987be3ed32eff99e.tar.gz prosody-a031c5073ba0956caf405d49987be3ed32eff99e.zip |
util.async: Factor out thread check into a function
Diffstat (limited to 'util/async.lua')
-rw-r--r-- | util/async.lua | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/util/async.lua b/util/async.lua index 2aff2f2d..17a3bae1 100644 --- a/util/async.lua +++ b/util/async.lua @@ -1,5 +1,13 @@ local log = require "util.logger".init("util.async"); +local function checkthread() + local thread = coroutine.running(); + if not thread then + error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); + end + return thread; +end + local function runner_continue(thread) -- ASSUMPTION: runner is in 'waiting' state (but we don't have the runner to know for sure) if coroutine.status(thread) ~= "suspended" then -- This should suffice @@ -25,10 +33,7 @@ local function runner_continue(thread) end local function waiter(num) - local thread = coroutine.running(); - if not thread then - error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); - end + local thread = checkthread(); num = num or 1; local waiting; return function () @@ -48,10 +53,7 @@ end local function guarder() local guards = {}; return function (id, func) - local thread = coroutine.running(); - if not thread then - error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); - end + local thread = checkthread(); local guard = guards[id]; if not guard then guard = {}; |