#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 }
|