3. Décodage du bloc d'en-têtes (Header Block Decoding)
3.1. Traitement du bloc d'en-têtes (Header Block Processing)
Un décodeur traite un bloc d'en-têtes de manière séquentielle pour reconstruire la liste d'en-têtes d'origine.
Un bloc d'en-têtes est la concaténation de représentations de champs d'en-tête. Les différentes représentations possibles de champs d'en-tête sont décrites dans la section 6.
Une fois qu'un champ d'en-tête est décodé et ajouté à la liste d'en-têtes reconstruite, le champ d'en-tête ne peut pas être supprimé. Un champ d'en-tête ajouté à la liste d'en-têtes peut être transmis en toute sécurité à l'application.
En transmettant les champs d'en-tête résultants à l'application, un décodeur peut être implémenté avec un engagement de mémoire transitoire minimal en plus de la mémoire requise pour la table dynamique.
3.2. Traitement de la représentation de champ d'en-tête (Header Field Representation Processing)
Le traitement d'un bloc d'en-têtes pour obtenir une liste d'en-têtes est défini dans cette section. Pour garantir que le décodage produira avec succès une liste d'en-têtes, un décodeur DOIT (MUST) respecter les règles suivantes.
Toutes les représentations de champs d'en-tête contenues dans un bloc d'en-têtes sont traitées dans l'ordre dans lequel elles apparaissent, comme spécifié ci-dessous. Les détails sur le formatage des différentes représentations de champs d'en-tête et certaines instructions de traitement supplémentaires se trouvent dans la section 6.
Une représentation indexée entraîne les actions suivantes :
- Le champ d'en-tête correspondant à l'entrée référencée dans la table statique ou la table dynamique est ajouté à la liste d'en-têtes décodée.
Une représentation littérale qui n'est pas ajoutée à la table dynamique entraîne l'action suivante :
- Le champ d'en-tête est ajouté à la liste d'en-têtes décodée.
Une représentation littérale qui est ajoutée à la table dynamique entraîne les actions suivantes :
-
Le champ d'en-tête est ajouté à la liste d'en-têtes décodée.
-
Le champ d'en-tête est inséré au début de la table dynamique. Cette insertion pourrait entraîner l'éviction d'entrées précédentes dans la table dynamique (voir section 4.4).