//Creer une connexion au besoin et ajoute la ligne dans la file de la connexion private void processLigne(string ligne) { ConnexionTransport currentConn; Random rnd = new Random(); string[] ligneSepare = ligne.Split(':'); //Recherche d'une connexion existante venant de cette application byte processId = Convert.ToByte(ligneSepare[0]); //Connecte if (tableControleTransport.ContainsKey(processId)) { //deja connecte currentConn = tableControleTransport[processId]; //Ajout de la task dans la file du processus currentConn.addCommand(ligneSepare[1]); Console.WriteLine("Lecture de S_lec: " + ligne); } //Non connecte else if (ligneSepare[1] == "DebutDesDonnees") { int dest = 0, src = 0; //Dest et Src doivent etre diffrent.. while (dest == src) { dest = rnd.Next(1, 255); src = rnd.Next(1, 255); } //Nouvelle connexion currentConn = new ConnexionTransport(Convert.ToByte(src), Convert.ToByte(dest), processId); tableControleTransport.Add(processId, currentConn); //Ajout de la task dans la file du processus currentConn.addCommand(ligneSepare[1]); Console.WriteLine("Lecture de S_lec: " + ligne); } //Commandes non conforme (envoie de donnees sans demande de connexion) else { Console.WriteLine("\'" + ligneSepare[1] + "\' Non Conforme! Demande du processus #" + ligneSepare[0] + " Ignorée."); } }
public EntiteeReseau(ConnexionTransport connexionTransport) { this.connexionTransport = connexionTransport; L_lec_sem = new Semaphore(1, 1); L_ecr_sem = new Semaphore(1, 1); }