BdD Class Reference

La classe BdD permet de gérer les utilisateurs et leurs scores
(Design Pattern Singleton) par héritage de la classe Singleton
Usage:
BdD *b=BdDGetInstance();
Usage de b->
BdD::KillInstance();
. More...

#include <BdD.h>

Inheritance diagram for BdD:

Inheritance graph
[legend]
Collaboration diagram for BdD:

Collaboration graph
[legend]
List of all members.

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< UserInfomBdD
 Tableau stockant les informations sur les parties.
Mutex mVerrou
 Mutex pour gérer les zones critiques.

Friends

class Singleton< BdD >

Detailed Description

La classe BdD permet de gérer les utilisateurs et leurs scores
(Design Pattern Singleton) par héritage de la classe Singleton
Usage:
BdD *b=BdDGetInstance();
Usage de b->
BdD::KillInstance();
.

Definition at line 54 of file BdD.h.


Constructor & Destructor Documentation

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).

Returns:
-

Definition at line 23 of file BdD.cpp.

References Charger(), Mutex::Lock(), mVerrou, and Mutex::Unlock().

00023         {
00024         mVerrou.Lock();
00025         Charger();
00026         mVerrou.Unlock();
00027 }

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.

Returns:

Definition at line 29 of file BdD.cpp.

References Sauvegarder().

00029          {
00030         Sauvegarder();
00031 }

Here is the call graph for this function:


Member Function Documentation

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.

Parameters:
login Le login de l'utilisateur
Returns:
Sa position ou -1 si absent

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).

Parameters:
login Le login de l'utilisateur
mdp Son mot de passe
Returns:
1 s'il n'y a pas eu d'erreur -1 sinon

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).

Parameters:
login Le login de l'utilisateur
Returns:
1 s'il n'y a pas eu d'erreur -1 sinon

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).

Parameters:
login Le login de l'utilisateur
mdp Son mot de passe
Returns:
true ssi l'utilisateur est présent

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.

Parameters:
login Login de l'utilisateur
Returns:
Son score si login existe, -1 sinon

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.

Parameters:
login Login de l'utilisateur
score Le nouveau score
Returns:
1 si l'utilisateur existe, -1 sinon

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)

Returns:
Liste des scores sous forme de string

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:


Friends And Related Function Documentation

friend class Singleton< BdD > [friend]

Definition at line 55 of file BdD.h.


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Wed Jan 2 14:01:58 2008 for Pacman by  doxygen 1.5.1