Comparison

util/async.lua @ 9562:acf74ad0b795

Many things: switch from hacky multi-arg xpcall implementations to a standard util.xpcall
author Matthew Wild <mwild1@gmail.com>
date Fri, 26 Oct 2018 19:32:00 +0100
parent 9177:83e7ad5818d3
child 10291:7b48b620164c
comparison
equal deleted inserted replaced
9561:cfc7b2f7251e 9562:acf74ad0b795
1 local logger = require "util.logger"; 1 local logger = require "util.logger";
2 local log = logger.init("util.async"); 2 local log = logger.init("util.async");
3 local new_id = require "util.id".short; 3 local new_id = require "util.id".short;
4 local xpcall = require "util.xpcall".xpcall;
4 5
5 local function checkthread() 6 local function checkthread()
6 local thread, main = coroutine.running(); 7 local thread, main = coroutine.running();
7 if not thread or main then 8 if not thread or main then
8 error("Not running in an async context, see https://prosody.im/doc/developers/util/async"); 9 error("Not running in an async context, see https://prosody.im/doc/developers/util/async");
25 local watcher = runner.watchers[watcher_name]; 26 local watcher = runner.watchers[watcher_name];
26 if not watcher then 27 if not watcher then
27 return false; 28 return false;
28 end 29 end
29 runner:log("debug", "Calling '%s' watcher", watcher_name); 30 runner:log("debug", "Calling '%s' watcher", watcher_name);
30 local ok, err = pcall(watcher, runner, ...); -- COMPAT: Switch to xpcall after Lua 5.1 31 local ok, err = xpcall(watcher, debug.traceback, runner, ...);
31 if not ok then 32 if not ok then
32 runner:log("error", "Error in '%s' watcher: %s", watcher_name, err); 33 runner:log("error", "Error in '%s' watcher: %s", watcher_name, err);
33 return nil, err; 34 return nil, err;
34 end 35 end
35 return true; 36 return true;