In gen_event, what functional diff does it makes for gen_event:notify & gen_event:call

Ulf Wiger <>
Thu Feb 20 12:12:42 CET 2003


On Thu, 20 Feb 2003, Suresh S wrote:

>Hi,
>
>I have few doubts in gen_event, like
>
>What is the need for gen_event:call when we have
>gen_event:notify ?

gen_event:call() can be used pretty much like a
gen_server:call, when e.g. the owner of an event handler
wants to query or configure the handler. The call is
addressed to a specific handler in a specific gen_event
process. The other handlers are unaffected.

>what for gen_event:call when purpose is solved with
>gen_event:notify ?

Notify is different. It sends a message to the gen_event
process, and all installed handlers are called in order to
get a chance to handle it.

>how do we relate handlers and events ? i mean when a
>request is made or an event is notified how does the
>handler knows to handle particular event or call, both in
>case of gen_even:notify and gen_event:call.

See above for the difference between event and call.
If a handler is only interested in one or a few specific
events, it uses pattern matching:

handle_event({my_important_event, Event}, S) ->
   ...
   {ok, S'};
handle_event(_, S) ->
   {ok, S}.

The catch-all clause is important. Each handler must be
prepared for any message coming in to handle_event/2. This
is similar to handle_info/2 in a gen_server callback. It is
perfectly OK to ignore unknown messages.

/Uffe

-- 
Ulf Wiger, Senior Specialist,
   / / /   Architecture & Design of Carrier-Class Software
  / / /    Strategic Product & System Management
 / / /     Ericsson AB, Connectivity and Control Nodes




More information about the erlang-questions mailing list