import java.util.*;
import java.io.*;
import java.util.StringTokenizer;

/**Permet de créer une liaison HDLC. Une laison comporte deux extrémités, un ensemble de VL, deux vecteurs de paquets à distribuer aux extrémités. La liason comporte 4 VL.
 *@author Julien VAN DEN BOSSCHE / Benoît MOULIN   cmoi__at__julienvdb__dot__com / bmoulin@etu.info.unicaen.fr
 *@param extremite1 l'extrémité 1 de la liaison
 *@param extremite2 l'extrémité 2 de la liaison
 *@param vl le vecteur contenant les VL
 *@param pourExtremite1 un vecteur contenant les paquetsX25 à traiter par l'extrémité 1
 *@param pourExtremite2 un vecteur contenant les paquetsX25 à traiter par l'extrémité 2
 */

public class Liaison{
    Extremite extremite1;
    Extremite extremite2;
    Vector  vl = new Vector(); //les voies logiques
    Vector pourExtremite1 = new Vector();
    Vector pourExtremite2 = new Vector();
   
    /**permet de créer une liaison : initialisation des VL, création des extrémités. Initialisation des adresses des arrivants sur chaque liaison
     */
    public Liaison(){
	//initialisation des voies logiques
	vl.addElement(new Voie("#A"));
	vl.addElement(new Voie("#B"));
	vl.addElement(new Voie("#C"));
	vl.addElement(new Voie("#D"));
	//initialisation des extrémités de la liaison
	AdresseX25[] arrivantsX25_1 = new AdresseX25[5];
	AdresseX25[] arrivantsX25_2 = new AdresseX25[5];
	for(int i=0; i<5; i++){
	    arrivantsX25_1[i] = new AdresseX25("@"+i); 
	}
	for(int j=5; j<10; j++){
	    arrivantsX25_2[j-5] = new AdresseX25("@"+j); 
	}
	//création des extrémités
	extremite1 = new Extremite(1,arrivantsX25_1);
	extremite2 = new Extremite(2,arrivantsX25_2);
    }

    /**permet de renvoyer une extrémité selon son numéro
     *@param witch le numéro de l'extrémité
    */
    public Extremite getExtremite (int witch){
	if(witch == 1){
	    return extremite1;
	}
	else{
	    return extremite2;
	}
    }

    /**renvoi le vecteur de paquetX25 à traiter pour une extrémité donnée
     *@param n le numéro de l'extrémité
    */  
    public Vector getPourExtremite(int n){
	if(n == 1){
	    return pourExtremite1;
	}
	else{
	    return pourExtremite2;
	}
    }

    /**ajoute un paquetX25 au vecteur de paquets à traiter d'une extrémité 
     *@param n le numéro de l'extrémité
     *@param p le paquet à rajouter
    */
    public void addPourExtremite(int n, PaquetX25 p){
	if(n == 1){
	    pourExtremite1.add(pourExtremite1.size(), p);
	}
	else{
	    pourExtremite2.add(pourExtremite2.size(), p);
	}
    }

    /**renvoi le vecteur contenant les VL de la laison
     */
    public Vector getVectorVL(){
	return vl;
    }
}

