[erlang-questions] Is using gen_server behaviour appropriate for his usecase?

Roman Gafiyatullin r.gafiyatullin@REDACTED
Fri Nov 30 09:36:35 CET 2012


In most of the cases one shall not use "simple loop functions": raw process cannot participate properly in the supervision tree.

If you need some new tricky specific model of behaving - better implement it over gen_server. 
For instance supervisor is a gen_server :)

If you need something more low level - use 'gen' module (see how gen_fsm is implemented). 

RG ( +375 33 602 5080, UTC+3 )

On Friday, November 30, 2012 at 11:25 am, Vineet Naik wrote:

> Hello,
> I am an Erlang newbie and trying to write a simple chat bot as an
> XMPP external component. I am using exmpp library and following
> along these tutorials[1]
> So far I have one module `bot_server` that uses the gen_server
> interface. Inside it's `handle_info` callback, incoming messages
> from various client will be received. To handle and reply to the
> these messages, I am thinking of spawning a "bot" process per
> client. It will stay alive as long as the client is available
> ie. when the client sends "unavailable" presence, it will die. I
> also need to keep a list of all the alive bot processes in the
> bot_server's state.
> My question is, would it be appropriate to implement the bot as a
> gen_server too considering that it needs to handle two calls, one
> for handling incoming message (asynchronous) and second for
> killing itself (synchronous)?
> In general, when should one use gen_server and when should
> one write a simple loop function?
> [1] exmpp tutorials:
> http://blog.process-one.net/scalable_xmpp_bots_with_erlang_and_exmpp_part_i/
> Thanks,
> Vineet
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED (mailto:erlang-questions@REDACTED)
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121130/16d88df3/attachment.htm>

More information about the erlang-questions mailing list