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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }