Class WebFifo

java.lang.Object
  |
  +--LockedFifo
        |
        +--WebFifo

public class WebFifo
extends LockedFifo

Classe (particulière à l'application du crawler) implémentant une pile FIFO spécialisée dans la manipulation d'objet de type PageWeb.

Un seul objet de ce type est partagé entre tous les processus de navigation (NavThread). Il est donc important que ceux-ci puissent accéder à la pile de façon concurente. De plus losrque la pile est vide, les processus demandant une nouvelle page web sont mis en attente.

Remarque: Dans cette page on appelle 'page web' un ensemble constitué par l'url d'une page html et sa profondeur par rapport à une page de démarrage du crawler. Concrètement ces informations sont contenues dans des objets de type PageWeb.

See Also:
PageWeb

Field Summary
protected  int depth_max
          Stocke la profondeur maximale de recherche autorisée.
 
Fields inherited from class LockedFifo
DEF_TAILLE, liste, sem, taille, taille_max
 
Constructor Summary
WebFifo()
          Construit un nouvel objet WebFifo ayant la taille par défaut.
WebFifo(int depth_max)
          Construit un nouvel objet WebFifo ayant la taille par défaut.
WebFifo(int depth_max, int taille_max)
          Construit un nouvel objet WebFifo ayant la taille spécifiée en argument.
 
Method Summary
 PageWeb getPage(java.lang.String nom_proc)
          Retourne la page web en bas de la pile et la supprime de la pile.
 int put(PageWeb pw)
          Insére une page web en haut de la pile.
 
Methods inherited from class LockedFifo
get, get, put
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

depth_max

protected int depth_max
Stocke la profondeur maximale de recherche autorisée.
Si cette profondeur est de 0, alors la profondeur maximale est illimitée.

Constructor Detail

WebFifo

public WebFifo()
Construit un nouvel objet WebFifo ayant la taille par défaut.

Ce constructeur se contente de faire appel au constructeur sans paramètre de la classe mère et ne pose aucune limite de profondeur d'exploration.


WebFifo

public WebFifo(int depth_max)
        throws java.lang.IllegalArgumentException
Construit un nouvel objet WebFifo ayant la taille par défaut.

Parameters:
depth_max - profondeur maximale d'exploration à partir d'une des pages de démarrage du crawler.
Throws:
java.lang.IllegalArgumentException - Si jamais la valeur passée en argument est < 0.
See Also:
depth_max

WebFifo

public WebFifo(int depth_max,
               int taille_max)
        throws java.lang.IllegalArgumentException
Construit un nouvel objet WebFifo ayant la taille spécifiée en argument.

Parameters:
depth_max - profondeur maximale d'exploration à partir d'une des pages de démarrage du crawler.
taille_max - la capacité maximale de la pile FIFO
Throws:
java.lang.IllegalArgumentException - Si:
See Also:
depth_max
Method Detail

getPage

public PageWeb getPage(java.lang.String nom_proc)
Retourne la page web en bas de la pile et la supprime de la pile.

Remarque: cette méthode se contente de caster le résultat de la méthode Object get() de la classe mère.

Parameters:
nom_proc - Le nom du processus voulant accéder à la pile (util pour connaître l'état de celui-ci).
Si le paramètre vaut null aucun message n'est affiché.
Returns:
La page web en bas de la pile.
See Also:
LockedFifo.get(String)

put

public int put(PageWeb pw)
Insére une page web en haut de la pile.

Avant d'insérer réellement la page dans la pile (ie de faire appel à la méthode put(Object) de la classe mère), cette méthode fait deux vérifications:

Excepté pour ces vérifications, cette méthode est identique à la méthode correspondante dans la classe mère.

Parameters:
pw - la nouvelle page web à insérer
Returns:
  • 0 si l'objet a été insérée correctement
  • 1 si la profondeur de la page insérée est trop grande
  • 2 si la pile contient déjà la page à insérer
  • -1 si la pile est pleine (la page web est ignorée)