#include <Socket.h>
#include <iostream.h>
#include <string.h>

int main() 
{         
  Socket barriere("172.20.3.73", 5588);
  bool enHaut, enBas, enEntree, enSortie;

  // descendre la barrière au départ si elle n'est pas en bas
  barriere.envoyer("Barriere:isInFDCL");
  enBas = strcmp(barriere.recevoir(), "bas") == 0;
  if (!enBas) {
    barriere.envoyer("Barriere:setCommandeSensDescente");
    barriere.recevoir();
  }  
  
  while (true) 
  {
    // contrôler la présence d'un véhicule en sortie
    do {
      barriere.envoyer("Barriere:isBoucleAval");
      enSortie = strcmp(barriere.recevoir(), "sortie") == 0; 
    }
    while (!enSortie);
    
    // lever la barrière pour permettre la sortie du véhicule
    barriere.envoyer("Barriere:setCommandeSensMontee");
    barriere.recevoir();
    
    // attendre que le véhicule sorte 
    do {
      barriere.envoyer("Barriere:isBoucleAval");
      enSortie = strcmp(barriere.recevoir(), "sortie") == 0;      
      barriere.envoyer("Barriere:isBoucleAmont");
      enEntree = strcmp(barriere.recevoir(), "entree") == 0; 
    }
    while (!(enSortie && enEntree)); 
    do {     
      barriere.envoyer("Barriere:isBoucleAmont");
      enEntree = strcmp(barriere.recevoir(), "entree") == 0; 
    }
    while (enEntree);
    
    // descendre la barrière une fois que le véhicule est bien sortie
    barriere.envoyer("Barriere:setCommandeSensDescente");
    barriere.recevoir();    
  }
 
  return 0;
}