コード例 #1
0
void AssignerTable(FileAttente & laFile)
{
	AfficherEntete(" Assignation d'une table ");
   if (laFile.EstVide())
      throw exception("\n La file est vide \n");

   int nbrePersonne, section;
   Section sectiontable;
   do
   {
      cout << "Combien de personnes peuvent s'asseoir a cette table ? ";
      cin >> nbrePersonne;
   } while (nbrePersonne < 1);
   do
   {
      cout << " Dans quelle section se trouve la table ? (TF 1, TNF 2, SAM 3) ";
      cin >> section;
   } while (section < 1 || section > 3);

   switch (section)
   {
   case 1: sectiontable = Section::TerrasseFumeur; break;
   case 2: sectiontable = Section::TerrasseNonFumeur; break;
   case 3: sectiontable = Section::SalleManger; break;
   }

   laFile.Retirer(nbrePersonne, sectiontable);
   Attendre();
}
コード例 #2
0
void AffichageFinale(FileAttente & laFile)
{
	AfficherLigneSeparation(); // affiche les info finales en utilisant les fonctions de la file
	cout << "Nombre de groupes servis : " << laFile.ObtenirNbGroupesTotal() << endl;
	cout << "Nombre de personnes placees a table : " << laFile.ObtenirNbPersonnesTotal() << endl;
	cout << "Nombre de groupes en file : " << laFile.ObtenirNbGroupes() << endl;
	AfficherLigneSeparation();
	Attendre();
}
コード例 #3
0
ファイル: Serveur.c プロジェクト: RaphaelJ/Cours-2e-annee
int main(int argc, char* argv[])
{
	struct Physique conn;
	// Descripteur physique associé à la connexion
	int connDescPhys;
	
	struct gEvenement even;
	
	// Ignore la fin des processus fils.
	// Evite les appels bloquants à wait().
	signal(SIGCHLD, SIG_IGN);
	
	FILE* f = OuvrirFichier(FICHIER_INFOS);
	CreerFichier(f); // Crée le fichier si non valide
	
	if ((connDescPhys = ConnecterServeur(argc, argv, &conn)) == -1) {
		printf("Impossible de démarrer une connexion serveur\n");
		exit(1);
	}
	
	if (CreerEvenement(connDescPhys, &even, 300) == -1) {
		printf("Impossible d'armer l'evenement\n");
		exit(1);
	}
	
	system("clear");
	printf("Serveur prêt\n");
	ListerFichier(f);
	
	for (;;) {
		char Buffer[100];
		int desc;
		
		switch (Attendre(&even, &desc)) {
		case 1:
			if (desc == 0) {
				fgets(Buffer, sizeof Buffer, stdin);
				system("clear");
				printf("Interruption clavier\n", Buffer);
				ListerFichierAsync(FICHIER_INFOS);
			} else
				GererClient(f, &conn);
			break;
		case 0: // Timeout
			break;
		case -1:
			printf("Erreur lors de l'attente de l'evenement\n");
			exit(1);
			break;
			
		};
	}
	
	fclose(f);
}
コード例 #4
0
void AfficherLaFileEnEntier(ostream & out, FileAttente & laFile)
{
	AfficherEntete(" Affichage de la file d'attente ");

   if (laFile.EstVide())
      throw exception("La file est vide \n");

   laFile.Afficher(cout);

   AfficherLigneSeparation();
   out << " Il y a " << laFile.ObtenirNbGroupes() << " groupes dans la liste" << endl
      << " Il y a " << laFile.ObtenirNbPersonnes() << " personnes en file " << endl;
   AfficherLigneSeparation();
   Attendre();
}
コード例 #5
0
void RetraitClient(FileAttente & laFile)
{
	AfficherEntete(" Retrait d'un client qui quitte ");
   if (laFile.EstVide())
      throw exception("\n La file est vide \n");

   string nom;
   int nbre;

	if (!DemanderQuiEstClient(nom, nbre, laFile)) // maintenant qu'on a trouver les bonnes données
	{
		laFile.Retirer(nom, nbre); //on le retire avec la fonction retirer
		cout << " Aurevoir " << nom << endl;
	}
   Attendre();
}
コード例 #6
0
void DemanderInfoClient(string& nom, int& nbre, int& sections)
{
   cout << " Bienvenue ! Veuillez entrer les informations suivantes " << endl;
   cout << " Le nom de la réservation : "; // Demander le nom de la reservation a l'utilisateur
   cin >> nom;
   do
   {  // demander le nombre de personne a l'utilisateur 
      cout << " Combien de personne à table : ";
      cin >> nbre;

      if (nbre < 1)
         cout << " Nombre invalide, recommencez " << endl;
   } while (nbre < 1);  // tant qu'il rentre un nombre invalide

   cout << " Est-ce que vous aimeriez manger dans les sections suivantes (o/n) " << endl;
   sections = DeterminerSection(); // demander les sections a l'utilisateur

   Attendre();
}
コード例 #7
0
void AfficherUnClient(FileAttente & laFile, ostream & out)
{
	AfficherEntete(" Affichage d'un client en attente ");

	int rang;
	bool estLa; 

   if (laFile.EstVide()) // si la file est vide on peut pas afficher de client 
      throw exception("\n La file est vide \n");

	estLa = DemanderRang(laFile, rang);
	AfficherEntete(" Affichage d'un client en attente ");
	if (estLa)  // demande qui est client 
		cout << laFile.GetClient(rang);   // affiche le client
	else
		cout << " Il n'y a personne a ce rang ou le rang donné est invalide " << endl;

	AfficherLigneSeparation();
   Attendre();
}