Annotate

net/server.lua @ 4811:1d1fdfa29f06

net.server: server_select != server_event (thanks Nulani, Florob)
author Matthew Wild <mwild1@gmail.com>
date Thu, 03 May 2012 18:53:36 +0100
parent 4808:07d0a3a75c8a
child 5198:430797a8fc81
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2925
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
1 -- Prosody IM
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
4 --
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
6 -- COPYING file in the source package for more information.
692b3c6c5bd2 Merge 0.6->0.7
Matthew Wild <mwild1@gmail.com>
parents: 2645 2923
diff changeset
7 --
2162
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
8
3461
447634564356 net.server: Don't load configmanager if not running inside Prosody, assume server_select
Matthew Wild <mwild1@gmail.com>
parents: 2968
diff changeset
9 local use_luaevent = prosody and require "core.configmanager".get("*", "core", "use_libevent");
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
2162
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
11 if use_luaevent then
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
12 use_luaevent = pcall(require, "luaevent.core");
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
13 if not use_luaevent then
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
14 log("error", "libevent not found, falling back to select()");
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
15 end
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
16 end
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
17
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 local server;
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19
2162
22b6b1899a55 net.server: Log an error when libevent is requested, but luaevent is unavailable, and don't load luaevent when not requested.
Waqas Hussain <waqas20@gmail.com>
parents: 2136
diff changeset
20 if use_luaevent then
4811
1d1fdfa29f06 net.server: server_select != server_event (thanks Nulani, Florob)
Matthew Wild <mwild1@gmail.com>
parents: 4808
diff changeset
21 server = require "net.server_event";
4808
07d0a3a75c8a net.server, net.timer, net.server_select: Rearrange dependencies between these three modules. server.addtimer() is no longer a public function (renamed to _addtimer) and is not available at all from server_event (compat code removed to prevent traceback) (thanks Nulani)
Matthew Wild <mwild1@gmail.com>
parents: 3461
diff changeset
22
2435
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
23 -- Overwrite signal.signal() because we need to ask libevent to
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
24 -- handle them instead
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
25 local ok, signal = pcall(require, "util.signal");
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
26 if ok and signal then
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
27 local _signal_signal = signal.signal;
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
28 function signal.signal(signal_id, handler)
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
29 if type(signal_id) == "string" then
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
30 signal_id = signal[signal_id:upper()];
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
31 end
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
32 if type(signal_id) ~= "number" then
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
33 return false, "invalid-signal";
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
34 end
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
35 return server.hook_signal(signal_id, handler);
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
36 end
1ab73691b58e net.server: When libevent backend is in use, override signal.signal to use server.hook_signal
Matthew Wild <mwild1@gmail.com>
parents: 2281
diff changeset
37 end
2094
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 else
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 server = require "net.server_select";
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 end
c69cb5c171e0 net.server: New net.server to choose the appropriate library from server_select/server_event based on the availability of luaevent and the use_libevent config option
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41
2136
23c687039652 net.server: Add some comments to explain to waqas how it all works :)
Matthew Wild <mwild1@gmail.com>
parents: 2105
diff changeset
42 -- require "net.server" shall now forever return this,
23c687039652 net.server: Add some comments to explain to waqas how it all works :)
Matthew Wild <mwild1@gmail.com>
parents: 2105
diff changeset
43 -- ie. server_select or server_event as chosen above.
2645
625d02b2a1a0 net.server: Remove redundant commented code and some trailing whitespace
Matthew Wild <mwild1@gmail.com>
parents: 2435
diff changeset
44 return server;