#include <BdD.h>
Inheritance diagram for BdD:
Public Member Functions | |
int | AjouterUtilisateur (string login, string mdp) |
Ajoute un utilisateur (son score à zéro) à mBdD (retourne alors 1) sauf s'il existe déja (retourne -1). | |
int | SupprimerUtilisateur (string login) |
Supprime l'utilisateur login de mBdD (retourne alors 1) sauf s'il n'existe pas (retourne -1). | |
bool | EstUtilisateur (string login, string mdp) |
Vérifie que login est bien un utilisateur (vérifie la cohérence du mot de passe également). | |
int | GetScore (string login) |
Consulter le score d'un utilisateur. | |
int | SetScore (string login, unsigned int score) |
Mise a jour d'un score. | |
string | ListeScore () |
Méthode permettant de lister les scores. | |
void | Afficher () |
Affichage de la base de donnée. | |
void | Sauvegarder () |
Sauvegarde de la base de donnée du cache dans le fichier users.bdd. | |
Private Member Functions | |
BdD () | |
A la construction, le tableau d'information sur les utilisateurs se charge d'après users.bdd Toute modification n'affectera le fichier qu'à la desctruction de la classe (stratégie paresseuse) ( Sauf si la méthode Sauvegarde est appellée). | |
~BdD () | |
C'est au niveau de la destruction que la structure de données est sauvegardée dans users.bdd. | |
int | Rechercher (string login) |
Recherche login dans mBdD, pas de Mutex, n'est appelée que par des fonctions protégées car private. | |
void | Charger () |
Construction de mBdD depuis le fichier users.bdd pas de Mutex, n'est appelée que par des fonctions protégées car private. | |
Private Attributes | |
TableauDyn< UserInfo > | mBdD |
Tableau stockant les informations sur les parties. | |
Mutex | mVerrou |
Mutex pour gérer les zones critiques. | |
Friends | |
class | Singleton< BdD > |
Definition at line 54 of file BdD.h.
BdD::BdD | ( | ) | [private] |
A la construction, le tableau d'information sur les utilisateurs se charge d'après users.bdd
Toute modification n'affectera le fichier qu'à la desctruction de la classe (stratégie paresseuse)
( Sauf si la méthode Sauvegarde est appellée).
Definition at line 23 of file BdD.cpp.
References Charger(), Mutex::Lock(), mVerrou, and Mutex::Unlock().
Here is the call graph for this function:
BdD::~BdD | ( | ) | [private] |
C'est au niveau de la destruction que la structure de données est sauvegardée dans users.bdd.
Definition at line 29 of file BdD.cpp.
References Sauvegarder().
00029 { 00030 Sauvegarder(); 00031 }
Here is the call graph for this function:
int BdD::Rechercher | ( | string | login | ) | [private] |
Recherche login dans mBdD, pas de Mutex, n'est appelée que par des fonctions protégées car private.
login | Le login de l'utilisateur |
Definition at line 132 of file BdD.cpp.
References TableauDyn< T >::Card(), and mBdD.
Referenced by AjouterUtilisateur(), EstUtilisateur(), GetScore(), SetScore(), and SupprimerUtilisateur().
00132 { 00133 for(unsigned int i=0; i<mBdD.Card(); i++){ 00134 if(mBdD[i].login==login) { 00135 return i; 00136 } 00137 } 00138 return -1; 00139 }
Here is the call graph for this function:
void BdD::Charger | ( | ) | [private] |
Construction de mBdD depuis le fichier users.bdd pas de Mutex, n'est appelée que par des fonctions protégées car private.
Definition at line 96 of file BdD.cpp.
References TableauDyn< T >::ConsQueue(), UserInfo::login, mBdD, UserInfo::mdp, and UserInfo::score.
Referenced by BdD().
00096 { 00097 //On ouvre users.bdd pour charger la structure de donnée 00098 ifstream f("users.bdd"); 00099 string line; 00100 if(f.is_open()){ 00101 while(getline(f,line)){ 00102 string login,mdp, score; 00103 istringstream iss(line); 00104 getline(iss,login,' '); getline(iss,mdp,' '); getline(iss,score,' '); //<=> Tokens sur ' ' 00105 istringstream conv(score); 00106 UserInfo u; 00107 u.login=login; u.mdp=mdp; conv>>u.score; 00108 mBdD.ConsQueue(u); 00109 00110 } 00111 } else { 00112 //Le fichier n'existe pas, donc on le créé 00113 ofstream fCreationBdD("users.bdd"); 00114 fCreationBdD.close(); 00115 } 00116 f.close(); 00117 }
Here is the call graph for this function:
int BdD::AjouterUtilisateur | ( | string | login, | |
string | mdp | |||
) |
Ajoute un utilisateur (son score à zéro) à mBdD (retourne alors 1) sauf s'il existe déja (retourne -1).
login | Le login de l'utilisateur | |
mdp | Son mot de passe |
Definition at line 33 of file BdD.cpp.
References TableauDyn< T >::ConsQueue(), Mutex::Lock(), UserInfo::login, mBdD, UserInfo::mdp, mVerrou, Rechercher(), UserInfo::score, and Mutex::Unlock().
Referenced by TraitementClient::Authentification().
00033 { 00034 mVerrou.Lock(); 00035 if(Rechercher(login)==-1){ 00036 UserInfo u; 00037 u.login=login; 00038 u.mdp=mdp; 00039 u.score=0; 00040 mBdD.ConsQueue(u); 00041 mVerrou.Unlock(); 00042 return 1; 00043 } 00044 mVerrou.Unlock(); 00045 return -1; 00046 }
Here is the call graph for this function:
int BdD::SupprimerUtilisateur | ( | string | login | ) |
Supprime l'utilisateur login de mBdD (retourne alors 1) sauf s'il n'existe pas (retourne -1).
login | Le login de l'utilisateur |
Definition at line 48 of file BdD.cpp.
References TableauDyn< T >::Detruit(), Mutex::Lock(), mBdD, mVerrou, Rechercher(), and Mutex::Unlock().
00048 { 00049 mVerrou.Lock(); 00050 int pos=Rechercher(login); 00051 if(pos!=-1) { 00052 mBdD.Detruit(pos); 00053 mVerrou.Unlock(); 00054 return 1; 00055 } 00056 mVerrou.Unlock(); 00057 return -1; 00058 }
Here is the call graph for this function:
bool BdD::EstUtilisateur | ( | string | login, | |
string | mdp | |||
) |
Vérifie que login est bien un utilisateur (vérifie la cohérence du mot de passe également).
login | Le login de l'utilisateur | |
mdp | Son mot de passe |
Definition at line 60 of file BdD.cpp.
References Mutex::Lock(), mBdD, mVerrou, Rechercher(), and Mutex::Unlock().
Referenced by TraitementClient::Authentification().
00060 { 00061 mVerrou.Lock(); 00062 int pos=Rechercher(login); 00063 if(pos!=-1) if(mBdD[pos].mdp==mdp){ 00064 mVerrou.Unlock(); 00065 return true; 00066 } 00067 mVerrou.Unlock(); 00068 return false; 00069 }
Here is the call graph for this function:
int BdD::GetScore | ( | string | login | ) |
Consulter le score d'un utilisateur.
login | Login de l'utilisateur |
Definition at line 71 of file BdD.cpp.
References Mutex::Lock(), mBdD, mVerrou, Rechercher(), and Mutex::Unlock().
Referenced by TraitementComServeurJeu::TraiterFinPartie().
00071 { 00072 mVerrou.Lock(); 00073 int pos=Rechercher(login); 00074 if(pos!=-1) { 00075 mVerrou.Unlock(); 00076 return mBdD[pos].score; 00077 } 00078 mVerrou.Unlock(); 00079 return -1; 00080 }
Here is the call graph for this function:
int BdD::SetScore | ( | string | login, | |
unsigned int | score | |||
) |
Mise a jour d'un score.
login | Login de l'utilisateur | |
score | Le nouveau score |
Definition at line 82 of file BdD.cpp.
References Mutex::Lock(), mBdD, TableauDyn< T >::Modifier(), mVerrou, Rechercher(), UserInfo::score, and Mutex::Unlock().
Referenced by TraitementComServeurJeu::TraiterFinPartie().
00082 { 00083 mVerrou.Lock(); 00084 int pos=Rechercher(login); 00085 if(pos!=-1) { 00086 UserInfo u=mBdD[pos]; 00087 u.score=score; 00088 mBdD.Modifier(pos,u); 00089 mVerrou.Unlock(); 00090 return 1; 00091 } 00092 mVerrou.Unlock(); 00093 return -1; 00094 }
Here is the call graph for this function:
string BdD::ListeScore | ( | ) |
Méthode permettant de lister les scores.
(destinée à l'envoi sur le réseau)
Definition at line 149 of file BdD.cpp.
References TableauDyn< T >::Card(), and mBdD.
Referenced by TraitementClient::EnvoyerListeScore().
00149 { 00150 string res=""; 00151 for(unsigned int i=0; i<mBdD.Card(); i++){ 00152 res+=mBdD[i].login; res+=" "; 00153 ostringstream oss; 00154 oss<<mBdD[i].score; 00155 res+=oss.str(); res+=" "; 00156 if(i<mBdD.Card()-1) res+=": "; 00157 } 00158 return res; 00159 }
Here is the call graph for this function:
void BdD::Afficher | ( | ) |
Affichage de la base de donnée.
Definition at line 141 of file BdD.cpp.
References TableauDyn< T >::Card(), Mutex::Lock(), mBdD, mVerrou, and Mutex::Unlock().
00141 { 00142 mVerrou.Lock(); 00143 for(unsigned int i=0; i<mBdD.Card(); i++){ 00144 cout<<mBdD[i].login<<" "<<mBdD[i].mdp<<" "<<mBdD[i].score<<endl; 00145 } 00146 mVerrou.Unlock(); 00147 }
Here is the call graph for this function:
void BdD::Sauvegarder | ( | ) |
Sauvegarde de la base de donnée du cache dans le fichier users.bdd.
Definition at line 119 of file BdD.cpp.
References TableauDyn< T >::Card(), Mutex::Lock(), mBdD, mVerrou, and Mutex::Unlock().
Referenced by TraitementClient::Authentification(), TraitementComServeurJeu::TraiterFinPartie(), and ~BdD().
00119 { 00120 mVerrou.Lock(); 00121 ofstream f("users.bdd"); 00122 if(f.is_open()){ 00123 for(unsigned int i=0; i<mBdD.Card(); i++){ 00124 f<<mBdD[i].login<<" "<<mBdD[i].mdp<<" "<<mBdD[i].score<<endl; 00125 } 00126 } else cerr<<"Impossible d'ouvrir le fichier en écriture !"<<endl; 00127 f.close(); 00128 mVerrou.Unlock(); 00129 }
Here is the call graph for this function:
TableauDyn<UserInfo> BdD::mBdD [private] |
Tableau stockant les informations sur les parties.
Definition at line 141 of file BdD.h.
Referenced by Afficher(), AjouterUtilisateur(), Charger(), EstUtilisateur(), GetScore(), ListeScore(), Rechercher(), Sauvegarder(), SetScore(), and SupprimerUtilisateur().
Mutex BdD::mVerrou [private] |
Mutex pour gérer les zones critiques.
Definition at line 146 of file BdD.h.
Referenced by Afficher(), AjouterUtilisateur(), BdD(), EstUtilisateur(), GetScore(), Sauvegarder(), SetScore(), and SupprimerUtilisateur().