X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fdocs%2Fdesign.txt;fp=apps%2Firssi%2Fdocs%2Fdesign.txt;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=5c8ddcf1166420a083da87badf5fa9a78c6b69ff;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/irssi/docs/design.txt b/apps/irssi/docs/design.txt deleted file mode 100644 index 5c8ddcf1..00000000 --- a/apps/irssi/docs/design.txt +++ /dev/null @@ -1,156 +0,0 @@ - - Irssi's hierarchy is something like this: - - - sub1 sub2 - \ / - xxx IRC COMMON ICQ yyy - |____|___________|____|____| - | - GUI (gtk/gnome, qt/kde, text, none) - | - sub1 sub2 | - \ / | - xxx IRC | COMMON ICQ yyy - |____|_____|_____|____|____| - | - COMMON UI - | - sub1 sub2 | - \ / | - xxx IRC | ICQ yyy - |____|_____|_____|____| - | - CORE - / \ - lib-config lib-popt - - - (IRC, ICQ, xxx and yyy are chat protocols ..) - (sub1 and sub2 are submodules of IRC module, like DCC and flood protect) - - - Chat protocols and frontends are kept in separate modules. Common UI - and GUI modules also have the common parts which don't know anything - about the chat protocols. This should allow implementing modules to - whatever chat protocols and with whatever frontends easily. - - ** Signals - - Communication between different modules are done with "signals". They are - not related to UNIX signals in any way, you could more like think of them - as "events" - which might be a better name for them, but I don't really - want to change it anymore :) - - So, you send signal with signal_emit() and it's sent to all modules that - have grabbed it by calling signal_add() in their init function. For - example: - - signal_emit("mysignal", 1, "hello"); - - Sends a "mysignal" function with one argument "hello" - before that, you - should have grabbed the signal somewhere else with: - - static void sig_mysignal(const char *arg1) - { - /* arg1 contains "hello" */ - } - - signal_add("mysignal", (SIGNAL_FUNC) sig_mysignal); - - There are three different signal_add() functions which you can use to - specify if you want to grab the signal first, "normally" or last. You can - also stop the signal from going any further. - - Emitting signal with it's name creates a small overhead since it has to - look up the signal's numeric ID first, after which it looks up the signal - structure. This is done because if you call a signal _really_ often, - it's faster to find it with it's numeric ID instead of the string. You - can use signal_get_uniq_id() macro to convert the signal name into ID - - you'll have to do this only once! - and use signal_emit_id() to emit the - signal. Don't bother to do this unless your signal is sent (or could be - sent) several times in a second. - - See src/core/signals.h for defination of the signal function, and - signals.txt for a list of signals. - - - ** lib-popt - - CORE depends on this for command line parameter handling. - (distributed with irssi) - - - ** lib-config - - Irssi depends on this for reading and saving configuration. - (created by me for irssi) - - - ** CORE module - - Provides some functionality that all other modules can use: - - signal handling - - keeping list of settings - - keeping list of /commands - - keeping track of loaded modules - - networking functions (with nonblocking connects, IPv6 support) - - handles connecting to servers - - raw logging of server's input/output data - - /EVAL support - - fgets() like function line_split() without any maximum line limits - - command line parameter handling - - miscellaneous useful little functions - - handles logging - - - ** COMMON UI module - - - knows basics about windows and window items (=channels, queries, ..) - - printtext() - parsing texts and feeding it for GUI to print. - - themes - - translation tables - - text hilighting - - command history - - user interface (/commands) for CORE's functionality - - - ** GUI modules - - - all the rest of the functionality needed for a working client. - - - ** IRC module - - * CORE - - - IRC specific /commands - - flood protecting commands sent to server - - creating IRC masks based on nick/address for bans, ignores, etc. - - keeps list of channels, nicks, channel modes, bans, etc. - - keeps list of servers, server settings, irc networks, - server reconnections and irc network splits - - redirection of commands' replies - - lag detection - - ctcp support and flood protection - - Handles ignoring people - - * DCC - - - DCC chat, send and get - - * FLOOD - - - detects private or channel flooding and sends "flood" signal - - automatic ignoring when flooding - - * NOTIFYLIST - - - handles notifylist - - - ** IRC UI module - - - placing channels and queries in windows - - nick completion - - printing infomation of some events