let me know the concept of gen_event behaviour
Wiger Ulf
ulf.wiger@REDACTED
Mon Feb 10 21:07:13 CET 2003
Perhaps an example can illustrate gen_event. The behaviour basically works like this:
-module(simple_gen_event).
start_link(Name) ->
spawn_link(fun() ->
register(Name, self()),
event_loop([])
end).
add_handler(Name, Module, State) ->
Name ! {add_handler, self(), Module, State},
receive
ok -> ok;
end.
notify(Name, Event) ->
Name ! {event, Event}.
event_loop(Modules) ->
receive
{add_handler, From, M, S} ->
From ! ok,
event_loop([{M,S}|Modules]);
{event, E} ->
Modules1 = call_modules(Modules, E),
event_loop(Modules1)
end.
call_modules([{M,S}|Modules], E) ->
case catch M:handle_event(E, S) of
{'EXIT', _} ->
%% remove handler
call_modules(Modules, E);
{ok, NewS} ->
[{M,NewS}|call_modules(Modules, E)]
end;
call_modules([], _) ->
[].
That is, you define a callback module if you want to handle events that are generated. Each event is just a message. Normally, you callback module would have a handle_event(Event, State) function that matches on a few events and simply ignores the rest.
As event handlers are called sequentially, they should do as little as possible in the handle_event/2 function. Sending a message to some server or state machine that then does the real work is probably a good idea.
/Uffe
----- Original Message -----
From: Suresh S
To: erlang-questions@REDACTED
Sent: den 10 februari 2003 17:43
Subject: let me know the concept of gen_event behaviour
Hi,
There is an Event manager can add Event handlers, This event handlers will handle particular event,
Is every Event is a Call back module ? if so suppose there are 1000 calls processing in the applicaiton at once, then 1000 call events are generated, then if we use gen_event behaviour there will be 1000 call back modules active( generated )
Please clarify this, let me know the concept of gen_event behaviours
Thanking u in advance.
regards
Suresh S
Catch all the cricket action. Download Yahoo! Score tracker
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20030210/aec9ca83/attachment.htm>
More information about the erlang-questions
mailing list