diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2010-10-04 06:04:19 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2010-10-04 06:04:19 +0200 |
commit | cabc0995c0e0964ecbef18470c6a483022879071 (patch) | |
tree | ea78fc03c11302f847b429fe417cdde412923613 /src/core/ephraim_roster_handler.erl | |
parent | 2b99ed6fd9cf84c405f426ea0914b233b1f40ef1 (diff) | |
download | ephraim-cabc0995c0e0964ecbef18470c6a483022879071.tar ephraim-cabc0995c0e0964ecbef18470c6a483022879071.zip |
Major reorganisation of the core, still unfinished...
Diffstat (limited to 'src/core/ephraim_roster_handler.erl')
-rw-r--r-- | src/core/ephraim_roster_handler.erl | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/core/ephraim_roster_handler.erl b/src/core/ephraim_roster_handler.erl new file mode 100644 index 0000000..fa7c1c7 --- /dev/null +++ b/src/core/ephraim_roster_handler.erl @@ -0,0 +1,45 @@ +-module(ephraim_roster_handler). +-include_lib("exmpp/include/exmpp_client.hrl"). +-behaviour(gen_event). + +-export([start/2, stop/1]). +-export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, code_change/3]). + +start(EventManager, Roster) -> + gen_event:add_handler(EventManager, ?MODULE, Roster). +stop(EventManager) -> + gen_event:delete_handler(EventManager, ?MODULE, []). + +init(Roster) -> + {ok, Roster}. + +handle_event({received_packet, #received_packet{packet_type=presence, raw_packet=Packet}}, Roster) -> + %io:format("Received packet ~p~n", [Packet]), + ephraim_roster:presence(Roster, Packet), + {ok, Roster}; + +handle_event({received_packet, #received_packet{packet_type=iq, raw_packet=Packet}}, Roster) -> + %io:format("Received packet ~p~n", [Packet]), + From = exmpp_stanza:get_sender(Packet), + IQ = exmpp_iq:xmlel_to_iq(Packet), + case IQ of + {iq, response, result, _, 'jabber:iq:roster', Payload, _, _, 'jabber:client'} -> + ephraim_roster:roster_iq(Roster, Payload); + {iq, response, result, _, 'vcard-temp', Payload, _, _, 'jabber:client'} -> + ephraim_roster:vcard_iq(Roster, From, Payload); + _ -> + ok %io:format("ephraim: IQ from ~p: ~p~n", [From, IQ]) + end, + {ok, Roster}; + +handle_event(_Event, Roster) -> + {ok, Roster}. + +handle_call(_Msg, Roster) -> + {noreply, Roster}. +handle_info(_Msg, Roster) -> + {ok, Roster}. +terminate(_Reason, _Roster) -> + ok. +code_change(_OldVersion, Roster, _Extra) -> + {ok, Roster}. |