/**
 * @file Systeme.cpp
 * TD n°6 :  sem06-td-Cpp2
 * @author l'équipe pédagogique 
 * @version 1 23/01/11
 * @brief Corps du système
 * Structures de données et algorithmes - DUT1 Paris 5
 */

#include <iostream>
using namespace std;

#include "Systeme.h"
#include "Processus.h"
/**
 * @brief Initialiser le système
 * @param[out] s : le système
 * @param[in] c : capacité de la file
 * @param[in] q : quantum d'exécution
 */
void initialiser(Systeme& s, unsigned int c, unsigned int q) {
	initialiser(s.fProc, c);
	s.quantum = q;
}

/**
 * @brief Désallouer le système
 * @param[in,out] s : le système
 */
void detruire(Systeme& s) {
	detruire(s.fProc);
}

/**
 * @brief Lancer un processus dans le systeme
 * @param[in,out] s : le système
 * @param[in] p : le système
 */
void lancerProcessus(Systeme& s, const Processus& p) {
	entrer(s.fProc, p);
	cout << "Entrée dans la file : "; afficher(p); cout << endl;
}

/**
 * @brief Gérer les proccessus concurrents
 * @param[in,out] s : le système
 */
void gererProcessus(Systeme& s) {
	while (!estVide(s.fProc)) {
		Processus p=tete(s.fProc);
		sortir(s.fProc);
		cout << "Sortie de la file : "; afficher(p); cout << endl;
		executerProcessus(p, s.quantum);
		if (p.tpsExRestant != 0) {
			lancerProcessus(s, p);
		}
	}
}

