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

Vineet Naik <>
Fri Nov 30 09:25:38 CET 2012


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



More information about the erlang-questions mailing list