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

NetParser.h

00001 /*! \file NetParser.h
00002     \brief Parser de protocol.
00003 
00004     Parser de protocol programmable.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       01/11/2007
00009 */
00010 
00011 #ifndef INCLUDE_RSRC_NET_PARSER
00012 #define INCLUDE_RSRC_NET_PARSER
00013 
00014 #include    "../Surcouche/SurcoucheModule.h"
00015 #include    "../Tools/Tools.h"
00016 #include    "../Error/Error.h"
00017 #include    "NetRequest.h"
00018 #include    <stdio.h>
00019 #include    <string.h>
00020 #include    <stdlib.h>
00021 #include    <vector>
00022 
00023 //! Parser de protocol.
00024 /*! Parser de protocol programmable.
00025 */
00026 class NetParser
00027 {
00028 private :
00029     int                         NbRequest;      /*!< Nombre de requette.                                    */
00030     std::vector<NetRequest *>   Requests;       /*!< Chaque lignes est une requette.                        */
00031     NetConnect                  *Connect;       /*!< Class d'info sur la connection utilisant le parser.    */
00032 
00033 public  :
00034     /*! Initialise avec des paramétres par defaut.
00035         \param pConnect class de la connection reseau
00036     */
00037     NetParser(NetConnect *pConnect);
00038 
00039     /*! Libère la mémoire proprement
00040     */
00041     ~NetParser();
00042 
00043     //! Ajoute une requette.
00044     /*! Ajoute une requette avec un raw et une fonction lier.
00045         \param pName nom de la requette.
00046         \param iPos position de \a pName dans la requette lors du pré-parse.
00047         \param pFunction fonction a lier.
00048         \param pMask syntax de la requette.
00049         \param iComplet si à 1, éxige que \a Mask soit completement parser
00050         \param pToks tokens utiliser pour rechercher le nom de la requette lors du pré-parse.
00051         \sa DelRequest() et GetNbRequest().
00052     */
00053     int     AddRequest(char *pName, int iPos, ROUTINE pFunction, char *pMask, int iComplet = 0, char *pToks = " \n\r\t");
00054 
00055     //! Supprime une requette.
00056     /*! Supprime la requette à la position \a iPos.
00057         \param iPos position de la requette.
00058         \sa AddRequest(), GetRaw() et GetNbRequest().
00059     */
00060     int     DelRequest(int iPos);
00061 
00062     //! Supprime une requette.
00063     /*! Supprime la requette ayant le raw \a iRaw.
00064         \param pName nom de la requette.
00065         \sa AddRequest(), GetRaw() et GetNbRequest().
00066     */
00067     inline int      DelRequest(char *pName)
00068     {
00069         int     i;
00070 
00071         for(i = 0; i < NbRequest; i++)
00072             if(!strcmp(Requests[i]->Name, pName))
00073                 return DelRequest(i);
00074     };
00075 
00076     //! Retourne le nom de la requette.
00077     /*! Retourne le nom de la requette \a iPos.
00078         \param iPos Position de la requette.
00079         \return pointeur sur le nom de la requette \a Name.
00080         \sa AddRequest(), DelRequest() et GetNbRequest().
00081     */
00082     inline char     *GetName(int iPos)
00083     {
00084         if(iPos < NbRequest)
00085             return Requests[iPos]->Name;
00086 
00087         return NULL;
00088     };
00089 
00090     //! Retourne la syntax de la requette.
00091     /*! Retourne la syntax (Mask) de la requette \a iPos.
00092         \param iPos Position de la requette.
00093         \return pointeur sur la syntax de la requette \a Mask.
00094         \sa AddRequest(), DelRequest() et GetNbRequest().
00095     */
00096     inline char     *GetMask(int iPos)
00097     {
00098         if(iPos < NbRequest)
00099             return Requests[iPos]->Mask;
00100 
00101         return NULL;
00102     };
00103 
00104     //! Retourne la syntax de la requette.
00105     /*! Retourne la syntax (Mask) de la requette de nom \a pName.
00106         \param pName nom de la requette.
00107         \return pointeur sur la syntax de la requette \a Mask.
00108         \sa AddRequest(), DelRequest() et GetNbRequest().
00109     */
00110     inline char     *GetMask(char *pName)
00111     {
00112         for(int i = 0; i < NbRequest; i++)
00113             if(!strcmp(Requests[i]->Name, pName))
00114                 return Requests[i]->Mask;
00115 
00116         return NULL;
00117     };
00118 
00119     //! Retourne le nombre de requettes.
00120     /*! Retourne le nombre de requette du parser.
00121         \return nombre de requette du parser.
00122         \sa AddRequest(), DelRequest() et GetRequest().
00123     */
00124     inline int      GetNbRequest()
00125     {
00126         return NbRequest;
00127     };
00128 
00129     //! Parse un buffer.
00130     /*! Parse un buffer ligne à ligne, recherche et éxécute les requettes.\n
00131         \param pBuffer buffer à parser.
00132         \return code d'erreur de la fonction retournant l'erreur.
00133     */
00134     int     ParseLine(char *pBuffer);
00135 
00136     //! Parse un buffer.
00137     /*! Parse le buffer en un seul block, recherche et éxécute une requette.\n
00138         \param pBuffer buffer à parser.
00139         \return code d'erreur de la fonction.
00140     */
00141     int     Parse(char *pBuffer);
00142 };
00143 
00144 
00145 #endif

Généré le Thu Jan 24 12:36:03 2008 pour A.I.F. par  doxygen 1.3.9.1