2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain
5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information.
9 local use_luaevent = prosody and require "core.configmanager".get("*", "core", "use_libevent");
12 use_luaevent = pcall(require, "luaevent.core");
13 if not use_luaevent then
14 log("error", "libevent not found, falling back to select()");
21 server = require "net.server_event";
22 -- util.timer requires "net.server", so instead of having
23 -- Lua look for, and load us again (causing a loop) - set this here
24 -- (usually it isn't set until we return, look down there...)
25 package.loaded["net.server"] = server;
27 -- Backwards compatibility for timers, addtimer
28 -- called a function roughly every second
29 local add_task = require "util.timer".add_task;
30 function server.addtimer(f)
31 return add_task(1, function (...) f(...); return 1; end);
34 -- Overwrite signal.signal() because we need to ask libevent to
35 -- handle them instead
36 local ok, signal = pcall(require, "util.signal");
38 local _signal_signal = signal.signal;
39 function signal.signal(signal_id, handler)
40 if type(signal_id) == "string" then
41 signal_id = signal[signal_id:upper()];
43 if type(signal_id) ~= "number" then
44 return false, "invalid-signal";
46 return server.hook_signal(signal_id, handler);
50 server = require "net.server_select";
51 package.loaded["net.server"] = server;
54 -- require "net.server" shall now forever return this,
55 -- ie. server_select or server_event as chosen above.