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       23/01/2008
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     ROUTINE Function;           /*!< Nom de la fonction à éxécuté.              */
00026     char    *Mask;              /*!< Syntax de la requette.\n                   */
00027 } NetRequest;
00028 
00029 //! Data des paramétres.
00030 /*! Data des paramétres passé à la fonction d'une requette du protocol reseau.
00031 */
00032 typedef struct _NetRequestData
00033 {
00034     char    *Label;             /*!< Label du paramtre.                         */
00035     char    *Data;              /*!< Data.                                      */
00036     int     Size;               /*!< Taille de la data.                         */
00037 } NetRequestData;
00038 
00039 //! Parametre pour une requette.
00040 /*! Parametre passé à la fonction d'une requette du protocol reseau.
00041 */
00042 class NetRequestParameter
00043 {
00044 private :
00045     int                             NbParameter;    /*!< Nombre de paramétre.                       */
00046     std::vector<NetRequestData *>   Parameters;     /*!< Chaque ligne est un paramétre.             */
00047     NetConnect                      *Connect;       /*!< Classe d'info sur la connection.           */
00048 
00049 public  :
00050     /*! Initialise avec des paramétres par defaut.
00051     */
00052     NetRequestParameter(NetConnect *pConnect);
00053 
00054     /*! Libère la mémoire proprement
00055     */
00056     ~NetRequestParameter();
00057 
00058     //! Ajoute un parametre.
00059     /*! Ajoute un parametre de la requette.
00060         \param pLabel pointeur sur le label.
00061         \param pData pointeur sur la data.
00062         \return Code d'erreur.
00063         \sa Get(), GetAsInt(), GetAsFloat() et GetAsChar().
00064     */
00065     int     Add(char *pLabel, char *pData);
00066 
00067     //! Retourne un parametre.
00068     /*! Retourne un parametre de la requette.
00069         \param pLabel nom du parametre.
00070         \return un pointeur sur le parametre.
00071         \sa GetAsInt(), GetAsFloat() et GetChar().
00072     */
00073     inline char     *Get(char *pLabel)
00074     {
00075         for(int i = 0; i < NbParameter; i++)
00076             if(!strcmp(Parameters[i]->Label, pLabel))
00077                 return Parameters[i]->Data;
00078 
00079         return NULL;
00080     };
00081 
00082     //! Retourne la taille d'un parametre.
00083     /*! Retourne la taille d'un parametre de la requette.
00084         \param pLabel nom du parametre.
00085         \return la taille du parametre.
00086         \sa Get().
00087     */
00088     inline int      GetSize(char *pLabel)
00089     {
00090         for(int i = 0; i < NbParameter; i++)
00091             if(!strcmp(Parameters[i]->Label, pLabel))
00092                 return Parameters[i]->Size;
00093 
00094         return 0;
00095     };
00096 
00097     //! Retourne une data \a int.
00098     /*! Retourne une data de type \a int.
00099         \param pLabel nom du parametre.
00100         \return le parametre sous forme d'entier.
00101         \sa Get(), GetAsFloat() et GetAsChar().
00102     */
00103     inline int      GetAsInt(char *pLabel)
00104     {
00105         return AtoI(Get(pLabel));
00106     };
00107 
00108     //! Retourne une data \a float.
00109     /*! Retourne une data de type \a float.
00110         \param pLabel nom du parametre.
00111         \return le parametre sous forme de réel.
00112         \sa Get(), GetAsInt() et GetAsChar().
00113     */
00114     inline float    GetAsFloat(char *pLabel)
00115     {
00116         return AtoF(Get(pLabel));
00117     };
00118 
00119     //! Retourne une data \a char.
00120     /*! Retourne une data de type \a char.
00121         \param pLabel nom du parametre.
00122         \return le parametre sous forme de carractère.
00123         \sa Get(), GetAsInt() et GetAsFloat().
00124     */
00125     inline char     GetAsChar(char *pLabel)
00126     {
00127         return *Get(pLabel);
00128     };
00129 
00130     //! Retourne le nombre de datas.
00131     /*! Retourne le nombre de datas du paramétre.
00132         \return nombre de requette du parser.
00133     */
00134     inline int      GetNbParameter()
00135     {
00136         return NbParameter;
00137     };
00138 
00139     //! Retourne un pointeur sur les infos de la connection.
00140     /*! Retourne ub pointeur sur les info de la connection \a Connect .
00141         \return Pointeur sur \a Connect .
00142     */
00143     inline NetConnect   *GetConnect()
00144     {
00145         return Connect;
00146     };
00147 
00148     //! Retourne l'ip.
00149     /*! Retourne l'ip de la connection.
00150         \return Pointeur sur l'ip.
00151     */
00152     inline char     *GetIp()
00153     {
00154         return Connect->Ip;
00155     };
00156 
00157     //! Retourne le port.
00158     /*! Retourne le port de la connection.
00159         \return port de la connection.
00160     */
00161     inline int      GetPort()
00162     {
00163         return Connect->Port;
00164     };
00165 
00166     //! Envoie les données.
00167     /*! Envoie les données \a Buffer à \a Ip.
00168         \param pBuffer chaine construite comme pour printf.
00169         \param ... argument pour construire la chaine
00170         \return Code d'erreur.
00171     */
00172     int     Send(char *pBuffer, ...);
00173 };
00174 
00175 
00176 #endif
00177 

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