diff options
author | Alexey Shchepin <alexey@process-one.net> | 2006-04-13 06:08:24 +0400 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2006-04-13 06:08:24 +0400 |
commit | 15a714ae68cdb9ccbe3e5798c604a54d0e4bc2f8 (patch) | |
tree | 0925f2c87ccd5d81d3f1824f0050df52c3e67fd3 /src/ejabberd_service.erl | |
parent | aa8e532cbdbe5f939dd3c54e90ec5edf2999b394 (diff) |
* src/xml_stream.erl: Cleanup
* src/ejabberd_service.erl: Updated to use ejabberd_receiver
SVN Revision: 532
Diffstat (limited to 'src/ejabberd_service.erl')
-rw-r--r-- | src/ejabberd_service.erl | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl index 0d3b02176..551ff436e 100644 --- a/src/ejabberd_service.erl +++ b/src/ejabberd_service.erl @@ -15,7 +15,6 @@ %% External exports -export([start/2, start_link/2, - receiver/3, send_text/2, send_element/2, become_controller/1]). @@ -80,8 +79,8 @@ start(SockData, Opts) -> start_link(SockData, Opts) -> gen_fsm:start_link(ejabberd_service, [SockData, Opts], ?FSMOPTS). -become_controller(_Pid) -> - ok. +become_controller(Pid) -> + gen_fsm:send_all_state_event(Pid, become_controller). %%%---------------------------------------------------------------------- %%% Callback functions from gen_fsm @@ -124,7 +123,7 @@ init([{SockMod, Socket}, Opts]) -> false end end, - ReceiverPid = spawn(?MODULE, receiver, [Socket, SockMod, self()]), + ReceiverPid = ejabberd_receiver:start(Socket, SockMod, none), {ok, wait_for_stream, #state{socket = Socket, receiver = ReceiverPid, streamid = new_id(), @@ -260,6 +259,12 @@ stream_established(closed, StateData) -> %% {next_state, NextStateName, NextStateData, Timeout} | %% {stop, Reason, NewStateData} %%---------------------------------------------------------------------- +handle_event(become_controller, StateName, StateData) -> + ok = (StateData#state.sockmod):controlling_process( + StateData#state.socket, + StateData#state.receiver), + ejabberd_receiver:become_controller(StateData#state.receiver), + {next_state, StateName, StateData}; handle_event(_Event, StateName, StateData) -> {next_state, StateName, StateData}. @@ -323,28 +328,13 @@ terminate(Reason, StateName, StateData) -> _ -> ok end, - (StateData#state.sockmod):close(StateData#state.socket), + ejabberd_receiver:close(StateData#state.receiver), ok. %%%---------------------------------------------------------------------- %%% Internal functions %%%---------------------------------------------------------------------- -receiver(Socket, SockMod, C2SPid) -> - XMLStreamPid = xml_stream:start(C2SPid), - receiver(Socket, SockMod, C2SPid, XMLStreamPid). - -receiver(Socket, SockMod, C2SPid, XMLStreamPid) -> - case SockMod:recv(Socket, 0) of - {ok, Text} -> - xml_stream:send_text(XMLStreamPid, Text), - receiver(Socket, SockMod, C2SPid, XMLStreamPid); - {error, _Reason} -> - exit(XMLStreamPid, closed), - gen_fsm:send_event(C2SPid, closed), - ok - end. - send_text(StateData, Text) -> (StateData#state.sockmod):send(StateData#state.socket,Text). |