diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-12-29 23:10:14 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-12-29 23:10:14 +0000 |
commit | 3416cbe63ae9954e0b3942620aee1afa5cc8b9ab (patch) | |
tree | c6dcda449a3baeb4dd82d1a76d5d07bd58f9713a | |
parent | * src/mod_roster_odbc.erl: Roster support via ODBC (not completed) (diff) |
* src/odbc/ejabberd_odbc.erl: Load-balance ODBC requests between
several connections
* src/odbc/ejabberd_odbc_sup.erl: Supervisor for ODBC connections
* src/mod_muc/mod_muc_room.erl: Added missed type='form' attribute
in room configuration response (thanks to Badlop)
SVN Revision: 295
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | src/mod_muc/mod_muc_room.erl | 5 | ||||
-rw-r--r-- | src/odbc/ejabberd_odbc.erl | 7 | ||||
-rw-r--r-- | src/odbc/ejabberd_odbc_sup.erl | 46 |
4 files changed, 64 insertions, 4 deletions
@@ -1,3 +1,13 @@ +2004-12-30 Alexey Shchepin <alexey@sevcom.net> + + * src/odbc/ejabberd_odbc.erl: Load-balance ODBC requests between + several connections + + * src/odbc/ejabberd_odbc_sup.erl: Supervisor for ODBC connections + + * src/mod_muc/mod_muc_room.erl: Added missed type='form' attribute + in room configuration response (thanks to Badlop) + 2004-12-19 Alexey Shchepin <alexey@sevcom.net> * src/mod_roster_odbc.erl: Roster support via ODBC (not completed) diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index f41c4532e..bc1563d69 100644 --- a/src/mod_muc/mod_muc_room.erl +++ b/src/mod_muc/mod_muc_room.erl @@ -1970,7 +1970,10 @@ get_config(Lang, StateData) -> [{xmlcdata, translate:translate( Lang, "You need an x:data capable client to configure room")}]}, - {xmlelement, "x", [{"xmlns", ?NS_XDATA}], Res}], StateData}. + {xmlelement, "x", [{"xmlns", ?NS_XDATA}, + {"type", "form"}], + Res}], + StateData}. diff --git a/src/odbc/ejabberd_odbc.erl b/src/odbc/ejabberd_odbc.erl index c496bf2be..3800d141e 100644 --- a/src/odbc/ejabberd_odbc.erl +++ b/src/odbc/ejabberd_odbc.erl @@ -31,13 +31,14 @@ %%% API %%%---------------------------------------------------------------------- start() -> - gen_server:start({local, ejabberd_odbc}, ejabberd_odbc, [], []). + gen_server:start(ejabberd_odbc, [], []). start_link() -> - gen_server:start_link({local, ejabberd_odbc}, ejabberd_odbc, [], []). + gen_server:start_link(ejabberd_odbc, [], []). sql_query(Query) -> - gen_server:call(ejabberd_odbc, {sql_query, Query}, 60000). + gen_server:call(ejabberd_odbc_sup:get_random_pid(), + {sql_query, Query}, 60000). escape(S) -> [case C of diff --git a/src/odbc/ejabberd_odbc_sup.erl b/src/odbc/ejabberd_odbc_sup.erl new file mode 100644 index 000000000..4ca7ff303 --- /dev/null +++ b/src/odbc/ejabberd_odbc_sup.erl @@ -0,0 +1,46 @@ +%%%---------------------------------------------------------------------- +%%% File : ejabberd_odbc_sup.erl +%%% Author : Alexey Shchepin <alexey@sevcom.net> +%%% Purpose : ODBC connections supervisor +%%% Created : 22 Dec 2004 by Alexey Shchepin <alexey@sevcom.net> +%%% Id : $Id$ +%%%---------------------------------------------------------------------- + +-module(ejabberd_odbc_sup). +-author('alexey@sevcom.net'). +-vsn('$Revision$ '). + +-export([start_link/0, + init/1, + get_pids/0, + get_random_pid/0 + ]). + +-include("ejabberd.hrl"). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init(_) -> + % TODO + N = 10, + {ok, {{one_for_one, 10, 1}, + lists:map( + fun(I) -> + {I, + {ejabberd_odbc, start_link, []}, + transient, + brutal_kill, + worker, + [?MODULE]} + end, lists:seq(1, N))}}. + +get_pids() -> + [Child || + {_Id, Child, _Type, _Modules} <- supervisor:which_children(?MODULE), + Child /= undefined]. + +get_random_pid() -> + Pids = get_pids(), + lists:nth(erlang:phash(now(), length(Pids)), Pids). + |