#include <NetParser.h>
Fonctions membres publiques | |
| NetParser (NetConnect *pConnect) | |
| ~NetParser () | |
| int | AddRequest (char *pName, int iPos, ROUTINE pFunction, char *pMask, int iComplet=0, char *pToks=" \n\r\t") |
| Ajoute une requette. | |
| int | DelRequest (int iPos) |
| Supprime une requette. | |
| int | DelRequest (char *pName) |
| Supprime une requette. | |
| char * | GetName (int iPos) |
| Retourne le nom de la requette. | |
| char * | GetMask (int iPos) |
| Retourne la syntax de la requette. | |
| char * | GetMask (char *pName) |
| Retourne la syntax de la requette. | |
| int | GetNbRequest () |
| Retourne le nombre de requettes. | |
| int | ParseLine (char *pBuffer) |
| Parse un buffer. | |
| int | Parse (char *pBuffer) |
| Parse un buffer. | |
| NetParser (NetConnect *pConnect) | |
| ~NetParser () | |
| int | AddRequest (ROUTINE pFunction, char *pMask) |
| Ajoute une requette. | |
| int | DelRequest (int iPos) |
| Supprime une requette. | |
| char * | GetMask (int iPos) |
| Retourne la syntax de la requette. | |
| int | GetNbRequest () |
| Retourne le nombre de requettes. | |
| int | ParseLine (char *pBuffer) |
| Parse un buffer. | |
| int | Parse (char *pBuffer) |
| Parse un buffer. | |
Définition à la ligne 26 du fichier last/NetParser.h.
|
|
Initialise avec des paramétres par defaut.
Définition à la ligne 13 du fichier last/NetParser.cpp. 00014 {
00015 NbRequest = 0;
00016 Connect = pConnect;
00017 }
|
|
|
Libère la mémoire proprement Définition à la ligne 19 du fichier last/NetParser.cpp. Références DelRequest(). 00020 {
00021 while(NbRequest)
00022 DelRequest(NbRequest - 1);
00023 Requests.clear();
00024 }
|
|
|
Initialise avec des paramétres par defaut.
|
|
|
Libère la mémoire proprement |
|
||||||||||||
|
Ajoute une requette avec un raw et une fonction lier.
Définition à la ligne 26 du fichier NetParser.cpp. 00027 {
00028 Requests.push_back(new NetRequest);
00029
00030 if(!Requests[NbRequest])
00031 return ERROR_C_MEMORY;
00032 else
00033 {
00034 Requests[NbRequest]->Function = pFunction;
00035 Requests[NbRequest]->Mask = new char[strlen(pMask) + 1];
00036 strcpy(Requests[NbRequest]->Mask, pMask);
00037 }
00038 NbRequest++;
00039
00040 return ERROR_C_NOERROR;
00041 }
|
|
||||||||||||||||||||||||||||
|
Ajoute une requette avec un raw et une fonction lier.
Définition à la ligne 26 du fichier last/NetParser.cpp. 00027 {
00028 Requests.push_back(new NetRequest);
00029
00030 if(!Requests[NbRequest])
00031 return ERROR_C_MEMORY;
00032 else
00033 {
00034 Requests[NbRequest]->Name = new char[strlen(pName) + 1];
00035 strcpy(Requests[NbRequest]->Name, pName);
00036 Requests[NbRequest]->Pos = iPos;
00037 Requests[NbRequest]->Function = pFunction;
00038 Requests[NbRequest]->Mask = new char[strlen(pMask) + 1];
00039 strcpy(Requests[NbRequest]->Mask, pMask);
00040 Requests[NbRequest]->Complet = iComplet;
00041 Requests[NbRequest]->Toks = new char[strlen(pToks) + 1];
00042 strcpy(Requests[NbRequest]->Toks, pToks);
00043 }
00044 NbRequest++;
00045
00046 return ERROR_C_NOERROR;
00047 }
|
|
|
Supprime la requette à la position iPos.
|
|
|
Supprime la requette ayant le raw iRaw.
Définition à la ligne 67 du fichier last/NetParser.h. 00068 {
00069 int i;
00070
00071 for(i = 0; i < NbRequest; i++)
00072 if(!strcmp(Requests[i]->Name, pName))
00073 return DelRequest(i);
00074 };
|
|
|
Supprime la requette à la position iPos.
Définition à la ligne 49 du fichier last/NetParser.cpp. Référencé par ~NetParser(). 00050 {
00051
00052 if(iPos < NbRequest)
00053 {
00054 delete [] Requests[iPos]->Name;
00055 delete [] Requests[iPos]->Mask;
00056 delete [] Requests[iPos]->Toks;
00057 delete Requests[iPos];
00058 Requests.erase(Requests.begin() + iPos);
00059
00060 NbRequest--;
00061 }
00062
00063 return ERROR_C_NOERROR;
00064 }
|
|
|
Retourne la syntax (Mask) de la requette iPos.
Définition à la ligne 64 du fichier NetParser.h. 00065 {
00066 if(iPos < NbRequest)
00067 return Requests[iPos]->Mask;
00068
00069 return NULL;
00070 };
|
|
|
Retourne la syntax (Mask) de la requette de nom pName.
Définition à la ligne 110 du fichier last/NetParser.h. 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 };
|
|
|
Retourne la syntax (Mask) de la requette iPos.
Définition à la ligne 96 du fichier last/NetParser.h. 00097 {
00098 if(iPos < NbRequest)
00099 return Requests[iPos]->Mask;
00100
00101 return NULL;
00102 };
|
|
|
Retourne le nom de la requette iPos.
Définition à la ligne 82 du fichier last/NetParser.h. 00083 {
00084 if(iPos < NbRequest)
00085 return Requests[iPos]->Name;
00086
00087 return NULL;
00088 };
|
|
|
Retourne le nombre de requette du parser.
Définition à la ligne 77 du fichier NetParser.h. 00078 {
00079 return NbRequest;
00080 };
|
|
|
Retourne le nombre de requette du parser.
Définition à la ligne 124 du fichier last/NetParser.h. 00125 {
00126 return NbRequest;
00127 };
|
|
|
Parse le buffer en un seul block, recherche et éxécute une requette.
|
|
|
Parse le buffer en un seul block, recherche et éxécute une requette.
Définition à la ligne 103 du fichier last/NetParser.cpp. Références NetRequestParameter::Add(), BEGIN, CERROR, ENDBEGIN, gettok(), IsAlphaNumCar(), NET_BUFFER, NetRequestParameter::SetName(), et TRY. Référencé par ParseLine(). 00104 {
00105 int i;
00106 char *pMask;
00107 char Tok;
00108 char Buffer[NET_BUFFER];
00109 char Temp[NET_BUFFER];
00110 char Label[NET_NAME];
00111 char *pCur;
00112 char *pTemp;
00113 char *pLabel;
00114 BEGIN
00115
00116 for(i = 0; (i < NbRequest) && !CERROR; i++)
00117 {
00118 if(!strcmp(Requests[i]->Name, gettok(pBuffer, Requests[i]->Pos, Requests[i]->Toks)))
00119 {
00120 TRY if(i < NbRequest)
00121 {
00122 NetRequestParameter Parameter(Connect);
00123 Parameter.SetName(Requests[i]->Name, Requests[i]->Pos);
00124 strncpy(Buffer, pBuffer, NET_BUFFER);
00125 pCur = Buffer;
00126 pMask = Requests[i]->Mask;
00127
00128 do
00129 {
00130 TRY {
00131 if(*pMask == '%')
00132 {
00133 pMask++;
00134 pLabel = Label;
00135 pTemp = Temp;
00136
00137 while(IsAlphaNumCar(*pMask))
00138 *pLabel++ = *pMask++;
00139
00140 Tok = *pMask;
00141
00142 while(*pCur)
00143 {
00144 if(*pCur == Tok)
00145 {
00146 *pCur++;
00147 break;
00148 }
00149 *pTemp++ = *pCur++;
00150 }
00151
00152 *pTemp = '\0';
00153 *pLabel = '\0';
00154
00155 Parameter.Add(Label, Temp);
00156 }
00157 else
00158 {
00159 if(*pMask == *pCur)
00160 pCur++;
00161 }
00162 }
00163
00164 if(*pMask)
00165 pMask++;
00166 }
00167 while(*pCur && *pMask && !CERROR);
00168
00169 TRY if((Requests[i]->Complet && !*pMask) || (!Requests[i]->Complet))
00170 {
00171 CERROR = (int)Requests[i]->Function((PARAMETRE)&Parameter);
00172 }
00173 }
00174 }
00175 }
00176
00177 ENDBEGIN
00178 }
|
|
|
Parse un buffer ligne à ligne, recherche et éxécute les requettes.
|
|
|
Parse un buffer ligne à ligne, recherche et éxécute les requettes.
Définition à la ligne 66 du fichier last/NetParser.cpp. Références BEGIN, CERROR, ENDBEGIN, et Parse(). 00067 {
00068 char *Buffer, *Out;
00069 char *pBuf, *pOut;
00070 int Size;
00071 BEGIN
00072
00073 Size = strlen(pBuffer);
00074 Buffer = (char *)malloc(sizeof(char) * (Size + 1));
00075 Out = (char *)malloc(sizeof(char) * (Size + 1));
00076 strncpy(Buffer, pBuffer, Size);
00077 pBuf = Buffer;
00078 pOut = Out;
00079
00080 while(*pBuf && !CERROR)
00081 {
00082 if((*pBuf != '\n') && (*pBuf != '\r'))
00083 {
00084 *pOut = *pBuf;
00085 pOut++;
00086 }
00087 else if(pOut != Out)
00088 {
00089 *pOut = '\0';
00090 CERROR = Parse(Out);
00091 pOut = Out;
00092 }
00093
00094 pBuf++;
00095 }
00096
00097 free(Buffer);
00098 free(Out);
00099
00100 ENDBEGIN
00101 }
|
1.3.9.1