#include <TraitementComServeurPrincipal.h>
Inheritance diagram for TraitementComServeurPrincipal:
Public Member Functions | |
TraitementComServeurPrincipal (unsigned int port) | |
~TraitementComServeurPrincipal () | |
void * | Traitement () |
On initialise le protocole avec le serveur principal On indique ensuite qu'on est pret à recevoir des clients On indique ensuite qu'on attend les joueurs en on signale chaque connexion On donne le status toutes les secondes une fois que la partie est démarrée On indique enfin que la partie est terminée. | |
Private Member Functions | |
void | HandShake () |
void | IndiquerAttenteJoueurs () |
void | IndiquerConnexions () |
void | IndiquerDebutPartie () |
void | IndiquerStatusPartie () |
void | IndiquerFinPartie () |
Private Attributes | |
Socket * | mSocket |
Pointeur sur la socket. | |
Jeu * | mJeu |
Pointeur sur le singleton gérant la partie. |
Definition at line 40 of file TraitementComServeurPrincipal.h.
TraitementComServeurPrincipal::TraitementComServeurPrincipal | ( | unsigned int | port | ) |
Definition at line 24 of file TraitementComServeurPrincipal.cpp.
References SocketException::Afficher(), Singleton< T >::GetInstance(), mJeu, and mSocket.
00024 { 00025 mJeu=Jeu::GetInstance(); 00026 //On établit une connexion vers le serveur principal 00027 cout<<endl<<" SJ TraitementComServeurPrincipal::Création d'un thread de communication UDP avec le serveur principal sur le port "<<port<<endl; 00028 //On établit une connexion avec le serveur principal 00029 try{ 00030 mSocket=new SocketUDP("localhost",(unsigned int)port); 00031 } catch(SocketException s){ s.Afficher(); } 00032 }
Here is the call graph for this function:
TraitementComServeurPrincipal::~TraitementComServeurPrincipal | ( | ) |
Definition at line 34 of file TraitementComServeurPrincipal.cpp.
References mSocket.
00034 { 00035 cout<<" SJ TraitementComServeurPrincipal::Destruction du thread de communication avec le serveur principal"<<endl; 00036 if(mSocket!=NULL) delete mSocket; 00037 }
void * TraitementComServeurPrincipal::Traitement | ( | ) | [virtual] |
On initialise le protocole avec le serveur principal
On indique ensuite qu'on est pret à recevoir des clients
On indique ensuite qu'on attend les joueurs en on signale chaque connexion On donne le status toutes les secondes une fois que la partie est démarrée
On indique enfin que la partie est terminée.
..
Implements Thread.
Definition at line 39 of file TraitementComServeurPrincipal.cpp.
References HandShake(), IndiquerAttenteJoueurs(), IndiquerConnexions(), IndiquerDebutPartie(), IndiquerFinPartie(), and IndiquerStatusPartie().
00039 { 00040 HandShake(); 00041 IndiquerAttenteJoueurs(); 00042 IndiquerConnexions(); 00043 IndiquerDebutPartie(); 00044 IndiquerStatusPartie(); 00045 IndiquerFinPartie(); 00046 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::HandShake | ( | ) | [private] |
Definition at line 48 of file TraitementComServeurPrincipal.cpp.
References Socket::Ecouter(), Socket::Envoyer(), and mSocket.
Referenced by Traitement().
00048 { 00049 mSocket->Envoyer("HELLO"); 00050 if(mSocket->Ecouter()=="HELLO"){ 00051 cout<<" SJ TraitementComServeurPrincipal::Le serveur principal a répondu à la poignée de main UDP"<<endl; 00052 } 00053 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::IndiquerAttenteJoueurs | ( | ) | [private] |
Definition at line 55 of file TraitementComServeurPrincipal.cpp.
References Socket::Ecouter(), Socket::Envoyer(), Jeu::GetNbFantomeAuto(), mJeu, and mSocket.
Referenced by Traitement().
00055 { 00056 //On indique au serveur principal que l'on est en attente des joueurs 00057 string cmd; 00058 cmd="WAITING "; 00059 ostringstream oss; 00060 oss<<mJeu->GetNbFantomeAuto(); 00061 cmd+=oss.str(); 00062 cout<<" SJ TraitementComServeurPrincipal::On indique au serveur de jeu que le jeu n'est pas pret "<<endl; 00063 mSocket->Envoyer(cmd); 00064 mSocket->Ecouter(); 00065 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::IndiquerConnexions | ( | ) | [private] |
Definition at line 67 of file TraitementComServeurPrincipal.cpp.
References Socket::Envoyer(), Jeu::GetFConnecte(), Jeu::GetLoginF(), Jeu::GetLoginPacman(), Jeu::GetPacmanConnecte(), mJeu, and mSocket.
Referenced by Traitement().
00067 { 00068 //On attend que tout les joueurs soient prets 00069 string cmd; 00070 bool pacman=false, f[3]; 00071 for(unsigned int i=0; i<3; i++) f[i]=false; 00072 while(1){ 00073 //On cherche si des nouvelles places ont été choisies et on l'en informe le serveur de jeu 00074 if(!pacman) if(mJeu->GetPacmanConnecte()){ 00075 cout<<" SJ TraitementComServeurPrincipal::On indique au serveur de jeu que pacman vient de se connecter"<<endl; 00076 cmd="SET PACMAN "; cmd+=mJeu->GetLoginPacman(); 00077 mSocket->Envoyer(cmd); 00078 pacman=true; 00079 } 00080 for(unsigned int i=0; i<3; i++){ 00081 if(!f[i]) if(mJeu->GetFConnecte(i)){ 00082 cout<<" SJ TraitementComServeurPrincipal::On indique au serveur de jeu que le fantome "<<i<<" vient de se connecter"<<endl; 00083 ostringstream oss; 00084 oss<<i; 00085 string no=oss.str(); 00086 cmd="SET F "; cmd+=mJeu->GetLoginF(i); cmd+=" "; cmd+=no; 00087 mSocket->Envoyer(cmd); 00088 f[i]=true; 00089 } 00090 } 00091 if(pacman){ 00092 bool tousConnecte=true; 00093 for(unsigned int i=0; i<3; i++){ 00094 if(!f[i]) tousConnecte=false; 00095 } 00096 if(tousConnecte){ 00097 //Tous les joueurs sont connectés ET on l'a bien annoncé au serveur principal 00098 break; 00099 } 00100 } 00101 sleep(1); 00102 } 00103 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::IndiquerDebutPartie | ( | ) | [private] |
Definition at line 105 of file TraitementComServeurPrincipal.cpp.
References Socket::Ecouter(), Socket::Envoyer(), and mSocket.
Referenced by Traitement().
00105 { 00106 cout<<" SJ TraitementComServeurPrincipal::On indique au serveur de jeu que tous les joueurs sont connectés"<<endl; 00107 mSocket->Envoyer("READY"); 00108 mSocket->Ecouter(); 00109 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::IndiquerStatusPartie | ( | ) | [private] |
Definition at line 111 of file TraitementComServeurPrincipal.cpp.
References Socket::Envoyer(), Jeu::EtatPartie(), Jeu::GameOver(), mJeu, and mSocket.
Referenced by Traitement().
00111 { 00112 while(!mJeu->GameOver()){ 00113 string envoi="STATUS "; envoi+=mJeu->EtatPartie(); 00114 mSocket->Envoyer(envoi); 00115 sleep(1); 00116 } 00117 }
Here is the call graph for this function:
void TraitementComServeurPrincipal::IndiquerFinPartie | ( | ) | [private] |
Definition at line 119 of file TraitementComServeurPrincipal.cpp.
References Socket::Envoyer(), Jeu::EtatPartie(), mJeu, and mSocket.
Referenced by Traitement().
00119 { 00120 //La partie est terminée, on le signifie au serveur principal 00121 //On envoi le status du jeu final 00122 string envoi="STATUS "; envoi+=mJeu->EtatPartie(); 00123 mSocket->Envoyer(envoi); 00124 cout<<" SJ TraitementComServeurPrincipal::On indique au serveur principal que la partie est terminée"<<endl; 00125 mSocket->Envoyer("GAME OVER"); 00126 }
Here is the call graph for this function:
Socket* TraitementComServeurPrincipal::mSocket [private] |
Pointeur sur la socket.
Definition at line 65 of file TraitementComServeurPrincipal.h.
Referenced by HandShake(), IndiquerAttenteJoueurs(), IndiquerConnexions(), IndiquerDebutPartie(), IndiquerFinPartie(), IndiquerStatusPartie(), TraitementComServeurPrincipal(), and ~TraitementComServeurPrincipal().
Jeu* TraitementComServeurPrincipal::mJeu [private] |
Pointeur sur le singleton gérant la partie.
Definition at line 70 of file TraitementComServeurPrincipal.h.
Referenced by IndiquerAttenteJoueurs(), IndiquerConnexions(), IndiquerFinPartie(), IndiquerStatusPartie(), and TraitementComServeurPrincipal().