summaryrefslogtreecommitdiff
path: root/src/jd2ejd.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-02-05 20:28:49 +0000
committerAlexey Shchepin <alexey@process-one.net>2003-02-05 20:28:49 +0000
commit7f0e4e195ef9d5ce6340f7cc66108263d77b0f63 (patch)
treed6b4b7eef30b948caaf1c8b02a697b4c39403a09 /src/jd2ejd.erl
parent*** empty log message *** (diff)
*** empty log message ***
SVN Revision: 59
Diffstat (limited to 'src/jd2ejd.erl')
-rw-r--r--src/jd2ejd.erl22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/jd2ejd.erl b/src/jd2ejd.erl
index 1ec7ce5a..92175e60 100644
--- a/src/jd2ejd.erl
+++ b/src/jd2ejd.erl
@@ -13,8 +13,8 @@
-behaviour(gen_fsm).
%% External exports
--export([start/1,
- start/2,
+-export([start_link/1,
+ start_link/2,
import_file/1,
import_dir/1]).
@@ -31,7 +31,7 @@
-include("ejabberd.hrl").
-include("namespaces.hrl").
--record(state, {socket,
+-record(state, {socket, pid,
user = "", server = ?MYNAME, resource = ""
}).
@@ -47,12 +47,12 @@
%%%----------------------------------------------------------------------
%%% 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
@@ -65,11 +65,11 @@ start(File, User) ->
%% 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
@@ -191,6 +191,7 @@ handle_info(_, StateName, StateData) ->
%% Returns: any
%%----------------------------------------------------------------------
terminate(Reason, StateName, StateData) ->
+ StateData#state.pid ! {jd2ejd, exited},
ok.
%%%----------------------------------------------------------------------
@@ -216,7 +217,8 @@ process_offline(To, {xmlelement, _, _, Els}) ->
import_file(File) ->
- start(File).
+ start_link(File),
+ receive M -> M end.
import_dir(Dir) ->
{ok, Files} = file:list_dir(Dir),