Page principale | Hiérarchie des classes | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

Serveur.cpp

Aller à la documentation de ce fichier.
00001 /*! \file Serveur.cpp
00002     \brief Serveur GestionAsso.
00003 
00004     Serveur pour le systéme GestionAsso.
00005 
00006     \author     aerith (contact@aerith.biz - www.aerith.biz)
00007     \version    1.0
00008     \date       04/12/2005
00009 */
00010 
00011 #include    "Serveur.h"
00012 
00013 
00014 MUTEX       MutexEcran;
00015 NetServer   Server;
00016 
00017 int     ThreadGestionClient(NetConnect *pConnect);          /*!< Thread de gestion des clients. */
00018 
00019 int     main(int argc, char **argv)
00020 {
00021     Langage LangFile("Serveur.conf");
00022     Ini     Fichier("Serveur.conf");
00023     char    Key;
00024     BEGIN
00025     LOC("main")
00026     LOG("serveur.log")
00027     LANG(Fichier.GetSection("langage")->GetItem("error")->GetData())
00028 
00029     MutexInit(&MutexEcran);
00030 
00031     TRY CERROR = Server.Start(
00032         AtoD(Fichier.GetSection("serveur")->GetItem("port")->GetData()),
00033         AtoD(Fichier.GetSection("serveur")->GetItem("limit")->GetData()),
00034         Fichier.GetSection("serveur")->GetItem("pass")->GetData(),
00035         (ROUTINE)ThreadGestionClient
00036     );
00037 
00038     TRY do
00039     {
00040         MutexLock(&MutexEcran);
00041         ConsoleClear();
00042         printf("%s : %i/%i\n\n", L_MENU_G1, Server.GetNbClient(), Server.GetLimit());
00043         printf("--- %s ---\n", L_MENU_G2);
00044         printf("\tl : %s\n", L_MENU_G3);
00045         printf("\ta : %s\n", L_MENU_G4);
00046         printf("\to : %s\n", L_MENU_G7);
00047         printf("\tq : %s\n\n", L_MENU_G5);
00048         printf("  %s : ", L_MENU_G6);
00049         MutexUnLock(&MutexEcran);
00050 
00051         Key = KeyGet();
00052 
00053         switch(Key)
00054         {
00055             case    'l' :
00056                 MutexLock(&MutexEcran);
00057                 ConsoleClear();
00058                 printf("%s : %i\n\n", L_MENU_L1, Server.Connect->Port);
00059                 printf("%s : %i\n\n", L_MENU_L2, Server.GetNbClient());
00060                 for(int i = 0; i < Server.GetNbClient(); i++)
00061                     printf("ID : %s\tIP : %i\n", Server.GetClientNo(i)->GetId(), Server.GetClientNo(i)->Ip);
00062 
00063                 MutexUnLock(&MutexEcran);
00064                 break;
00065             case    'a' :
00066                 MutexLock(&MutexEcran);
00067                 ConsoleClear();
00068                 printf("\t------ %s GestionAsso V%s ------\n\n", L_MENU_A1, VERSION);
00069                 printf("\t %s %s\n\n\n", L_MENU_A2, AUTHOR);
00070                 MutexUnLock(&MutexEcran);
00071                 break;
00072             case    'o' :
00073                 MutexLock(&MutexEcran);
00074                 ConsoleClear();
00075 
00076                 MutexUnLock(&MutexEcran);
00077                 break;
00078         }
00079 
00080         if(Key != 'q')
00081         {
00082             MutexLock(&MutexEcran);
00083             printf("\n%s\n", L_ENTER);
00084             MutexUnLock(&MutexEcran);
00085 
00086             Key = KeyGet();
00087         }
00088     }
00089     while((Key != 'q') && !CERROR);
00090     
00091     Server.Stop();
00092 
00093     MutexStop(&MutexEcran);
00094 
00095     PERROR
00096 
00097     ENDBEGIN
00098 }
00099 
00100 int     ThreadGestionClient(NetConnect *pConnect)
00101 {
00102     NetParser   Parser(pConnect);
00103     BEGIN
00104     LOC("ThreadGestionClient")
00105 
00106     TRY Parser.AddRequest(NET_IDENT, 0, (ROUTINE)RequestIdent, SYNTAX_IDENT);
00107     TRY Parser.AddRequest(NET_SAVE, 0, (ROUTINE)RequestSave, SYNTAX_SAVE);
00108     TRY Parser.AddRequest(NET_RESET, 0, (ROUTINE)RequestReset, SYNTAX_RESET);
00109     TRY Parser.AddRequest(NET_END, 0, (ROUTINE)RequestEnd, SYNTAX_END);
00110     TRY Parser.AddRequest(NET_NBDATA, 0, (ROUTINE)RequestNb, SYNTAX_NB);
00111     TRY Parser.AddRequest(NET_ADDDATA, 0, (ROUTINE)RequestAdd, SYNTAX_ADD);
00112     TRY Parser.AddRequest(NET_DELDATA, 0, (ROUTINE)RequestDel, SYNTAX_DEL);
00113     TRY Parser.AddRequest(NET_GETDATA, 0, (ROUTINE)RequestGet, SYNTAX_GET);
00114 
00115     do
00116     {
00117         TRY CERROR = pConnect->Receive();
00118 
00119         TRY CERROR = Parser.Parse(pConnect->GetBuffer());
00120     }
00121     while(!CERROR && pConnect->Sock);
00122 
00123     Server.KillClient(pConnect->GetId());
00124 
00125     PERROR
00126 
00127     ThreadExit(CERROR);
00128 }
00129 

Généré le Thu Oct 12 01:00:43 2006 pour GestionAsso par  doxygen 1.3.9.1