Skip to content
gdamjan edited this page Jun 27, 2011 · 6 revisions

AsciiGram of the Architecture

.
                                          .-------------.
                                        ... plugins     |
                            .---------. | `-------------'
               start_link   |         | | .-------------.
             +------=>------+ plugin  | +-+ plugins     |
             |    & notify  | manager ``| `-------------'
             |              |         | |     ······
        .----+-----.        `---------' | .-------------.
control | gen_fsm  |                    ..| plugins     |
------->| per irc  |                      `-------------'
        |connection|
        `----+-----'
             |             .----------.
             |             |          |    tcp/ip
             |             |connection| send & receive
             +-<=---=>-----+ process  +------<=>--
              (re)start    |          |  die on error
              & monitor    `----------'
.

A deliberate design choice of this ircbot is that I don’t register any processes in the global process namespace. Everything is caried along, from function to function, as state. That makes it webscale :)

The FSM has 4 states: standby, connecting, registering and ready.

ps.
also checkout the documentation about Plugins.

Clone this wiki locally