#include <TraitementComServeurJeu.h>
Inheritance diagram for TraitementComServeurJeu:
Public Member Functions | |
TraitementComServeurJeu (unsigned int port) | |
Constructeur. | |
~TraitementComServeurJeu () | |
void * | Traitement () |
On attend que le serveur de jeu initialise le protocole (on peut ensuite lui envoyer des messages en UDP) Il nous indique ensuite quand il est pret à recevoir les clients (le thread de type TraitementClient lui donne alors le port TCP ou joindre le serveur de jeu) Il nous indique ensuite qu'il attend les joueurs en nous signale chaque connexion (on met à jour le singleton gérant les parties) Il nous donne son status toutes les secondes une fois que la partie est démarrée (on met à jour le singleton gérant les parties) Il nous indique enfin que la partie est terminée. | |
bool | EstPret () |
Private Member Functions | |
void | TraiterHello (string cmd) |
void | TraiterServeurJeuPret (string cmd) |
void | TraiterAttenteJoueur (string cmd) |
void | TraiterConnexionJoueur (string cmd) |
void | TraiterReceptionStatus (string cmd) |
void | TraiterFinPartie (string cmd) |
Private Attributes | |
Socket * | mSocket |
Pointeur sur la socket. | |
bool | mSJReady |
Booléen indiquant que le serveur de jeu est prêt. | |
unsigned int | mPort |
Port d'écoute UDP. | |
Partie * | mPartie |
Pointeur sur le singleton gérant les parties en cours. | |
BdD * | mBdD |
Pointeur sur le singleton gérant les utilisateurs. |
Definition at line 41 of file TraitementComServeurJeu.h.
TraitementComServeurJeu::TraitementComServeurJeu | ( | unsigned int | port | ) |
Constructeur.
port | Port UDP sur lequel on écoute le serveur de jeu. |
Definition at line 23 of file TraitementComServeurJeu.cpp.
References SocketException::Afficher(), Singleton< T >::GetInstance(), mBdD, mPartie, mPort, mSJReady, and mSocket.
00023 { 00024 mPort=port; 00025 mPartie=Partie::GetInstance(); 00026 mBdD=BdD::GetInstance(); 00027 mSJReady=false; 00028 cout<<endl<<" SP TraitementComServeurJeu::Création d'un thread pour la communication avec un serveur de jeu sur le port "<<port<<endl; 00029 try{ 00030 mSocket=new SocketUDP((unsigned int)port); 00031 } catch(SocketException s){ s.Afficher(); } 00032 }
Here is the call graph for this function:
TraitementComServeurJeu::~TraitementComServeurJeu | ( | ) |
void * TraitementComServeurJeu::Traitement | ( | ) | [virtual] |
On attend que le serveur de jeu initialise le protocole (on peut ensuite lui envoyer des messages en UDP)
Il nous indique ensuite quand il est pret à recevoir les clients (le thread de type TraitementClient lui donne alors le port TCP ou joindre le serveur de jeu)
Il nous indique ensuite qu'il attend les joueurs en nous signale chaque connexion (on met à jour le singleton gérant les parties)
Il nous donne son status toutes les secondes une fois que la partie est démarrée (on met à jour le singleton gérant les parties)
Il nous indique enfin que la partie est terminée.
. (on met à jour le singleton gérant la base de donnée pour les scores)
Implements Thread.
Definition at line 38 of file TraitementComServeurJeu.cpp.
References Socket::Ecouter(), Socket::Envoyer(), mSocket, TraiterAttenteJoueur(), TraiterConnexionJoueur(), TraiterFinPartie(), TraiterHello(), TraiterReceptionStatus(), and TraiterServeurJeuPret().
00038 { 00039 while(1){ 00040 string cmd=mSocket->Ecouter(); 00041 //On passe la chaine à toutes les méthodes en vue d'un éventuel traitement 00042 TraiterHello(cmd); 00043 TraiterAttenteJoueur(cmd); 00044 TraiterConnexionJoueur(cmd); 00045 TraiterServeurJeuPret(cmd); 00046 TraiterReceptionStatus(cmd); 00047 TraiterFinPartie(cmd); 00048 //Si aucune commande appropriée a été reçue on la renvoie 00049 mSocket->Envoyer(cmd); 00050 } 00051 return NULL; 00052 }
Here is the call graph for this function:
bool TraitementComServeurJeu::EstPret | ( | ) | [inline] |
Definition at line 60 of file TraitementComServeurJeu.h.
References mSJReady.
Referenced by TraitementClient::CreerOuRejoindrePartie().
00060 { return mSJReady; }
void TraitementComServeurJeu::TraiterHello | ( | string | cmd | ) | [private] |
Definition at line 54 of file TraitementComServeurJeu.cpp.
References Partie::AjouterPartie(), Socket::Envoyer(), mPartie, mPort, mSJReady, and mSocket.
Referenced by Traitement().
00054 { 00055 if(cmd=="HELLO"){ 00056 cout<<" SP TraitementComServeurJeu::Le serveur de jeu a initialisé le protocole de communication UDP"<<endl; 00057 mSocket->Envoyer(cmd); 00058 //On ajoute la partie 00059 mPartie->AjouterPartie(mPort); 00060 mSJReady=true; 00061 } 00062 }
Here is the call graph for this function:
void TraitementComServeurJeu::TraiterServeurJeuPret | ( | string | cmd | ) | [private] |
Definition at line 64 of file TraitementComServeurJeu.cpp.
References Socket::Envoyer(), and mSocket.
Referenced by Traitement().
00064 { 00065 if(cmd=="READY"){ 00066 cout<<" SP TraitementComServeurJeu::Le serveur de jeu nous indique que la partie commence"<<endl; 00067 mSocket->Envoyer(cmd); 00068 } 00069 }
Here is the call graph for this function:
void TraitementComServeurJeu::TraiterAttenteJoueur | ( | string | cmd | ) | [private] |
Definition at line 71 of file TraitementComServeurJeu.cpp.
References Socket::Envoyer(), mPartie, mPort, mSocket, and Partie::SetNbFantomeAuto().
Referenced by Traitement().
00071 { 00072 istringstream iss(cmd); 00073 string arg1, arg2; 00074 getline(iss,arg1,' '); 00075 if(arg1=="WAITING"){ 00076 getline(iss,arg2,' '); 00077 cout<<" SP TraitementComServeurJeu::Le serveur de jeu attend la connexion de tous les joueurs ("<<arg2<<" fantomes automatiques)"<<endl; 00078 istringstream iss(arg2); 00079 unsigned int nbFantome; 00080 iss>>nbFantome; 00081 mPartie->SetNbFantomeAuto(mPort,nbFantome); 00082 mSocket->Envoyer(cmd); 00083 } 00084 }
Here is the call graph for this function:
void TraitementComServeurJeu::TraiterConnexionJoueur | ( | string | cmd | ) | [private] |
Definition at line 86 of file TraitementComServeurJeu.cpp.
References mPartie, mPort, Partie::SetLoginF(), Partie::SetLoginPacman(), Partie::SetScoreF(), and Partie::SetScorePacman().
Referenced by Traitement().
00086 { 00087 istringstream iss(cmd); 00088 string arg1, arg2, arg3, arg4; 00089 getline(iss,arg1,' '); 00090 if(arg1=="SET"){ 00091 getline(iss,arg2,' '); 00092 if(arg2=="PACMAN"){ 00093 getline(iss,arg3,' '); 00094 cout<<" SP TraitementComServeurJeu::Le serveur de jeu nous indique que pacman ("<<arg3<<") vient de se connecter"<<endl; 00095 mPartie->SetLoginPacman(mPort,arg3); 00096 mPartie->SetScorePacman(mPort,0); 00097 } 00098 if(arg2=="F"){ 00099 getline(iss,arg3,' '); 00100 getline(iss,arg4,' '); 00101 cout<<" SP TraitementComServeurJeu::Le serveur de jeu nous indique qu'un fantome ("<<arg3<<") vient de se connecter"<<endl; 00102 istringstream iss(arg4); 00103 unsigned int noFantome; 00104 iss>>noFantome; 00105 mPartie->SetLoginF(mPort,noFantome,arg3); 00106 mPartie->SetScoreF(mPort,noFantome,0); 00107 } 00108 } 00109 }
Here is the call graph for this function:
void TraitementComServeurJeu::TraiterReceptionStatus | ( | string | cmd | ) | [private] |
Definition at line 111 of file TraitementComServeurJeu.cpp.
References Socket::Envoyer(), mPartie, mPort, mSocket, Partie::SetScoreF(), and Partie::SetScorePacman().
Referenced by Traitement().
00111 { 00112 istringstream iss(cmd); 00113 string arg1; 00114 getline(iss,arg1,' '); 00115 if(arg1=="STATUS"){ 00116 string loginP, scoreP, loginF1, scoreF1, loginF2, scoreF2, loginF3, scoreF3, nbPomme, status; 00117 getline(iss,loginP,' '); getline(iss,scoreP,' '); getline(iss,loginF1,' '); getline(iss,scoreF1,' '); 00118 getline(iss,loginF2,' '); getline(iss,scoreF2,' '); getline(iss,loginF3,' '); getline(iss,scoreF3,' '); 00119 getline(iss,nbPomme,' '); getline(iss,status,' '); 00120 unsigned int sP, sF1, sF2, sF3; 00121 istringstream iss1(scoreP), iss2(scoreF1), iss3(scoreF2), iss4(scoreF3); 00122 iss1>>sP; iss2>>sF1; iss3>>sF2; iss4>>sF3; 00123 if(loginP!="hotplug") mPartie->SetScorePacman(mPort,sP); 00124 if(loginF1!="hotplug") mPartie->SetScoreF(mPort,0,sF1); 00125 if(loginF2!="hotplug")mPartie->SetScoreF(mPort,1,sF2); 00126 if(loginF3!="hotplug") mPartie->SetScoreF(mPort,2,sF3); 00127 mSocket->Envoyer(cmd); 00128 } 00129 }
Here is the call graph for this function:
void TraitementComServeurJeu::TraiterFinPartie | ( | string | cmd | ) | [private] |
Definition at line 131 of file TraitementComServeurJeu.cpp.
References Partie::GetLoginF(), Partie::GetLoginPacman(), BdD::GetScore(), Partie::GetScoreF(), Partie::GetScorePacman(), mBdD, mPartie, mPort, BdD::Sauvegarder(), BdD::SetScore(), and Partie::SupprimerPartie().
Referenced by Traitement().
00131 { 00132 if(cmd=="GAME OVER"){ 00133 cout<<" SP TraitementComServeurJeu::Le serveur de jeu nous indique que la partie est terminée"<<endl; 00134 //On met a jour les scores 00135 string loginP=mPartie->GetLoginPacman(mPort); 00136 if(loginP!="hotplug"){ 00137 unsigned int scoreP=mBdD->GetScore(loginP); 00138 scoreP+=mPartie->GetScorePacman(mPort); 00139 mBdD->SetScore(loginP,scoreP); 00140 } 00141 string loginF1=mPartie->GetLoginF(mPort,0); 00142 if((loginF1!="auto")&&(loginF1!="hotplug")){ 00143 unsigned int scoreF1=mBdD->GetScore(loginF1); 00144 scoreF1+=mPartie->GetScoreF(mPort,0); 00145 mBdD->SetScore(loginF1,scoreF1); 00146 } 00147 string loginF2=mPartie->GetLoginF(mPort,1); 00148 if((loginF2!="auto")&&(loginF2!="hotplug")){ 00149 unsigned int scoreF2=mBdD->GetScore(loginF2); 00150 scoreF2+=mPartie->GetScoreF(mPort,1); 00151 mBdD->SetScore(loginF2,scoreF2); 00152 } 00153 string loginF3=mPartie->GetLoginF(mPort,2); 00154 if((loginF3!="auto")&&(loginF3!="hotplug")){ 00155 unsigned int scoreF3=mBdD->GetScore(loginF3); 00156 scoreF3+=mPartie->GetScoreF(mPort,2); 00157 mBdD->SetScore(loginF3,scoreF3); 00158 } 00159 //On sauvegarde 00160 mBdD->Sauvegarder(); 00161 //On supprime la partie 00162 mPartie->SupprimerPartie(mPort); 00163 } 00164 }
Here is the call graph for this function:
Socket* TraitementComServeurJeu::mSocket [private] |
Pointeur sur la socket.
Definition at line 72 of file TraitementComServeurJeu.h.
Referenced by Traitement(), TraitementComServeurJeu(), TraiterAttenteJoueur(), TraiterHello(), TraiterReceptionStatus(), TraiterServeurJeuPret(), and ~TraitementComServeurJeu().
bool TraitementComServeurJeu::mSJReady [private] |
Booléen indiquant que le serveur de jeu est prêt.
Definition at line 77 of file TraitementComServeurJeu.h.
Referenced by EstPret(), TraitementComServeurJeu(), and TraiterHello().
unsigned int TraitementComServeurJeu::mPort [private] |
Port d'écoute UDP.
Definition at line 82 of file TraitementComServeurJeu.h.
Referenced by TraitementComServeurJeu(), TraiterAttenteJoueur(), TraiterConnexionJoueur(), TraiterFinPartie(), TraiterHello(), and TraiterReceptionStatus().
Partie* TraitementComServeurJeu::mPartie [private] |
Pointeur sur le singleton gérant les parties en cours.
Definition at line 87 of file TraitementComServeurJeu.h.
Referenced by TraitementComServeurJeu(), TraiterAttenteJoueur(), TraiterConnexionJoueur(), TraiterFinPartie(), TraiterHello(), and TraiterReceptionStatus().
BdD* TraitementComServeurJeu::mBdD [private] |
Pointeur sur le singleton gérant les utilisateurs.
Definition at line 92 of file TraitementComServeurJeu.h.
Referenced by TraitementComServeurJeu(), and TraiterFinPartie().