Netty

Fonctionnement de Netty

Fonctionnement

Un channel représente une connexion à un socket ou un fichier.

Event-Loop

Une event-loop a la responsabilité de traités les informations d'entrées et de sorties d'un channel. Il s'agit d'un sélecteur : chaque event-loop correspond à un thread et peux gérer plusieurs channels.

Lors de la création d'un channel, celui-ci est enregistré auprès d'une event-loop. Il n'y a que cette event-loop qui peux effectuer des opérations sur le channel, ce qui évite de nombreux problèmes de concurrences.

Channel-Pipeline et handlers

Chaque nouveau channel obtient son propre channel-pipeline, c'est-à-dire une liste de handlers.

Netty utilise des handlers sous forme de classes pour découper la logique du serveur. Il en existe deux types: ceux d’entrées qui vont lire et traiter les données et ceux de sorties pour écrire. Ils sont disposés dans un ordre bien précis sur le pipeline et créés ainsi une chaîne de traitement : chaque handler récupère le message, le traite et l’envoie au suivant. Le premier et le dernier handler vont respectivement lire et écrire sur le channel.

channelpipeline
Schema 4.1 - Le channel-pipeline