Serveur IRC

Transcription

Serveur IRC
Serveur IRC

Objectifs :

Utilisisation d'ERLANG

serveur IRC basique :

Discutions

Channels
Serveur IRC

Architectures des modules :
server
irc
Irc_user
channel
Serveur IRC

Architectures des modules :
server
un gen_server qui connait
tous les utilisateurs et tous
les channels.
-record(state, {users, channels}).
users = liste de {Pid, Nick}
Channels = liste de {Pid, Channel}
Serveur IRC

Architectures des modules :
irc_user
un gen_server qui controle le
socket, il y en a un par
utilisateur.
C'est ce processus qui reçoit les messages et les interprète,
il sert aussi à envoyer les messages.
Serveur IRC

Architectures des modules :
channel
un gen_server qui gère un
channel. Il connnait la liste
des utilisateurs connectés
-record(state, {c_name, topic, users}).
Serveur IRC

Lancement du serveur :
server:start_link().
server
SPAWN
server:accept_connection/1
Ce processus accepte les
connections et lance un
proccesus irc_user
Serveur IRC

Connections :
Socket
server:accept_connection/1
start_link()
irc_user
cast & call
server
Serveur IRC

Gestion des channels :
Socket
channel
irc_user
JOIN Channel
OUI
Le channel
existe-t-il ?
server
modifiele State du
process existant
NON
channel:start_link()
channel
Serveur IRC

Conclusions :
- Erlang : c'est top !
- IRC : rfc 2812 pas forcément facile à respecter.
- client testé :
- Xchat: aucun bug détecté
- Gaim : personnes présentes sur le chan avant
l'entrée ne sont pas affichées
- mIRC : aucun bug détecté

Documents pareils