<H3>2.4 Starting</H3><!--SEC END -->
-<A NAME="sec:starting"></A><PRE>
+<A NAME="sec:starting"></A>... To use more then 1024 connections, you need to set environment
+variable <TT>ERL_MAX_PORTS</TT>:
+<PRE>
+export ERL_MAX_PORTS=32000
+</PRE>Note that with this value <TT>ejabberd</TT> will use more memory (approximately 6MB
+more)...<BR>
+<BR>
+<PRE>
erl -name ejabberd -s ejabberd
</PRE>TBD<BR>
<BR>
-behaviour(gen_fsm).
%% External exports
--export([start/1,
- start/2,
+-export([start_link/1,
+ start_link/2,
import_file/1,
import_dir/1]).
-include("ejabberd.hrl").
-include("namespaces.hrl").
--record(state, {socket,
+-record(state, {socket, pid,
user = "", server = ?MYNAME, resource = ""
}).
%%%----------------------------------------------------------------------
%%% API
%%%----------------------------------------------------------------------
-start(File) ->
+start_link(File) ->
User = filename:rootname(filename:basename(File)),
- start(File, User).
+ start_link(File, User).
-start(File, User) ->
- gen_fsm:start(?MODULE, [File, User], ?FSMOPTS).
+start_link(File, User) ->
+ gen_fsm:start_link(?MODULE, [File, User, self()], ?FSMOPTS).
%%%----------------------------------------------------------------------
%%% Callback functions from gen_fsm
%% ignore |
%% {stop, StopReason}
%%----------------------------------------------------------------------
-init([File, User]) ->
+init([File, User, Pid]) ->
XMLStreamPid = xml_stream:start(self()),
{ok, Text} = file:read_file(File),
xml_stream:send_text(XMLStreamPid, Text),
- {ok, wait_for_xdb, #state{user = User}}.
+ {ok, wait_for_xdb, #state{user = User, pid = Pid}}.
%%----------------------------------------------------------------------
%% Func: StateName/2
%% Returns: any
%%----------------------------------------------------------------------
terminate(Reason, StateName, StateData) ->
+ StateData#state.pid ! {jd2ejd, exited},
ok.
%%%----------------------------------------------------------------------
import_file(File) ->
- start(File).
+ start_link(File),
+ receive M -> M end.
import_dir(Dir) ->
{ok, Files} = file:list_dir(Dir),