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

NetRequest.h

00001 /*! \file NetRequest.h
00002     \brief Structures pour parser.
00003 
00004     Structures utilisé par les parser de protocol programmable.
00005 
00006     \author     aerith (www.aerith.fr)
00007     \version    1.0
00008     \date       26/07/2007
00009 */
00010 
00011 #ifndef INCLUDE_RSRC_NET_REQUEST
00012 #define INCLUDE_RSRC_NET_REQUEST
00013 
00014 
00015 #include    "../Tools/Tools.h"
00016 #include    "NetConnect.h"
00017 #include    <vector>
00018 
00019 //! Information sur une requette.
00020 /*! Information sur une requette du protocol reseau.
00021 */
00022 typedef struct _NetRequest
00023 {
00024 public  :
00025     char    *Name;              /*!< Nom de la requette.                        */
00026     int     Pos;                /*!< Position du nom \a Name dans la requette.  */
00027     ROUTINE Function;           /*!< Nom de la fonction à éxécuté.              */
00028     char    *Mask;              /*!< Syntax de la requette.\n                   */
00029     int     Complet;            /*!< Exige que \a Mask soit complement parser   */
00030     char    *Toks;              /*!< Tokens utiliser pour rechercher \a Name.   */
00031 } NetRequest;
00032 
00033 //! Data des paramétres.
00034 /*! Data des paramétres passé à la fonction d'une requette du protocol reseau.
00035 */
00036 typedef struct _NetRequestData
00037 {
00038     char    *Label;             /*!< Label du paramtre.                         */
00039     char    *Data;              /*!< Data.                                      */
00040     int     Size;               /*!< Taille de la data.                         */
00041 } NetRequestData;
00042 
00043 //! Parametre pour une requette.
00044 /*! Parametre passé à la fonction d'une requette du protocol reseau.
00045 */
00046 class NetRequestParameter
00047 {
00048 private :
00049     char                            Name[NET_NAME]; /*!< Nom de la requette.                        */
00050     int                             Pos;            /*!< Position de \a Name dans la requette.      */
00051     int                             NbParameter;    /*!< Nombre de paramétre.                       */
00052     std::vector<NetRequestData *>   Parameters;     /*!< Chaque ligne est un paramétre.             */
00053     NetConnect                      *Connect;       /*!< Classe d'info sur la connection.           */
00054 
00055 public  :
00056     /*! Initialise avec des paramétres par defaut.
00057     */
00058     NetRequestParameter(NetConnect *pConnect);
00059 
00060     /*! Libère la mémoire proprement
00061     */
00062     ~NetRequestParameter();
00063 
00064     //! Définit le nom de la requette.
00065     /*! Définit le nom \a Name et la position \a Pos de la requette.
00066         \param pName nom de la requette.
00067         \param iPos position du nom
00068     */
00069     void    SetName(char *pName, int iPos);
00070 
00071     //! Retourne le nom de la requette.
00072     /*! Retourne le nom \a Name de la requette.
00073         \return pointeur sur le nom
00074     */
00075     char    *GetName()
00076     {
00077         return Name;
00078     };
00079 
00080     //! Retourne la position du nom de la requette.
00081     /*! Retourne la position \a Pos du nom de la requette.
00082         \return positin du nom
00083     */
00084     int     GetPos()
00085     {
00086         return Pos;
00087     };
00088 
00089     //! Ajoute un parametre.
00090     /*! Ajoute un parametre de la requette.
00091         \param pLabel pointeur sur le label.
00092         \param pData pointeur sur la data.
00093         \return Code d'erreur.
00094         \sa Get(), GetAsInt(), GetAsFloat() et GetAsChar().
00095     */
00096     int     Add(char *pLabel, char *pData);
00097 
00098     //! Retourne un parametre.
00099     /*! Retourne un parametre de la requette.
00100         \param pLabel nom du parametre.
00101         \return un pointeur sur le parametre.
00102         \sa GetAsInt(), GetAsFloat() et GetChar().
00103     */
00104     inline char     *Get(char *pLabel)
00105     {
00106         for(int i = 0; i < NbParameter; i++)
00107             if(!strcmp(Parameters[i]->Label, pLabel))
00108                 return Parameters[i]->Data;
00109 
00110         return NULL;
00111     };
00112 
00113     //! Retourne la taille d'un parametre.
00114     /*! Retourne la taille d'un parametre de la requette.
00115         \param pLabel nom du parametre.
00116         \return la taille du parametre.
00117         \sa Get().
00118     */
00119     inline int      GetSize(char *pLabel)
00120     {
00121         for(int i = 0; i < NbParameter; i++)
00122             if(!strcmp(Parameters[i]->Label, pLabel))
00123                 return Parameters[i]->Size;
00124 
00125         return 0;
00126     };
00127 
00128     //! Retourne une data \a int.
00129     /*! Retourne une data de type \a int.
00130         \param pLabel nom du parametre.
00131         \return le parametre sous forme d'entier.
00132         \sa Get(), GetAsFloat() et GetAsChar().
00133     */
00134     inline int      GetAsInt(char *pLabel)
00135     {
00136         return AtoI(Get(pLabel));
00137     };
00138 
00139     //! Retourne une data \a float.
00140     /*! Retourne une data de type \a float.
00141         \param pLabel nom du parametre.
00142         \return le parametre sous forme de réel.
00143         \sa Get(), GetAsInt() et GetAsChar().
00144     */
00145     inline float    GetAsFloat(char *pLabel)
00146     {
00147         return AtoF(Get(pLabel));
00148     };
00149 
00150     //! Retourne une data \a char.
00151     /*! Retourne une data de type \a char.
00152         \param pLabel nom du parametre.
00153         \return le parametre sous forme de carractère.
00154         \sa Get(), GetAsInt() et GetAsFloat().
00155     */
00156     inline char     GetAsChar(char *pLabel)
00157     {
00158         return *Get(pLabel);
00159     };
00160 
00161     //! Retourne le nombre de datas.
00162     /*! Retourne le nombre de datas du paramétre.
00163         \return nombre de requette du parser.
00164     */
00165     inline int      GetNbParameter()
00166     {
00167         return NbParameter;
00168     };
00169 
00170     //! Retourne un pointeur sur les infos de la connection.
00171     /*! Retourne ub pointeur sur les info de la connection \a Connect .
00172         \return Pointeur sur \a Connect .
00173     */
00174     inline NetConnect   *GetConnect()
00175     {
00176         return Connect;
00177     };
00178 
00179     //! Retourne l'ip.
00180     /*! Retourne l'ip de la connection.
00181         \return Pointeur sur l'ip.
00182     */
00183     inline char     *GetIp()
00184     {
00185         return Connect->Ip;
00186     };
00187 
00188     //! Retourne le port.
00189     /*! Retourne le port de la connection.
00190         \return port de la connection.
00191     */
00192     inline int      GetPort()
00193     {
00194         return Connect->Port;
00195     };
00196 
00197     //! Envoie les données.
00198     /*! Envoie les données \a Buffer à \a Ip.
00199         \param pBuffer chaine construite comme pour printf.
00200         \param ... argument pour construire la chaine
00201         \return Code d'erreur.
00202     */
00203     int     Send(char *pBuffer, ...);
00204 };
00205 
00206 
00207 #endif
00208 

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