Next: Buckety
Up: Implementace
Previous: Hašovací funkce
K manipulaci se záznamem slouží struktura sg_entry_t
-
- #define SG_URLBUFINITSIZE 4096
typedef struct {
request_cl *req; // just for back reference
char *url;
int urllength;
int urlbufsize;
method_t url_method;
sg_header_t *header;
MD5_CTX *md5context;
md5_t md5;
md5string_t md5s;
char *fname;
int efd;
int status;
bool nocache;
} sg_entry_t;
Význam jejich jednotlivých položek je následující:
- req
- - ukazatel na strukturu request_cl, která nese veškeré informace o požadavku
klienta
- url
- - řetězec nesoucí URL daného záznamu
- urllength,urlbufsize
- - jelikož může dojít v průběhu zpracování požadavku k
modifikaci url záznamu, tyto dvě položky nesou po řadě informaci o aktuální
``platné'' délce řetězce v položce url a celkové délce bufferu, která byla
alokována
- url_method
- - označuje metodu z požadavku klienta, nabývá jedné z následujících
hodnot:
-
- enum {
METHOD_NONE, /* 000 */
METHOD_GET, /* 001 */
METHOD_POST, /* 010 */
METHOD_PUT, /* 011 */
METHOD_HEAD, /* 100 */
METHOD_CONNECT, /* 101 */
METHOD_TRACE, /* 110 */
METHOD_PURGE /* 111 */
};
- header
- - ukazatel na strukturu nesoucí informace o HTTP hlavičce daného záznamu
- md5context
- - ukazatel na strukturu sloužící k vytvoření md5 digestu
- md5,md5s
- - bytová (resp. retězcová) hodnota md5digestu pro daný záznam
- fname
- - název souboru přiřazeného danému záznamu
- efd
- - file descriptor souboru se záznamem
- status
- - do této položky moduly ukládají výsledek zpracování daného záznamu,
který hraje rozhodující roli při dalším zpracování. Nabývá jedné z následujících
hodnot:
-
- enum {
SG_NO_CACHE,
SG_HIT_DISK,
SG_HIT_DISK_EXPIRED,
SG_HIT_ICP,
SG_HIT_DIGEST,
SG_MISS
};
- nocache
- - pokud je tato položka TRUE, záznam nebude uložen, v opačném případě
bude dále zpracován
Následující struktura sg_header_t obsahuje informace o hlavičce odpovědi:
-
- typedef struct {
char *headerbody;
int headersize;
int rcode;
ht_t *htbl;
} sg_header_t;
- headerbody
- - řetězec délky headersize, který obsahuje celou hlavičku
- rcode
- - stavový kód odpovědi
- htbl
- - ukazatel na hašovací tabulku, do které jsou při načítání vloženy všechny
položky hlavičky a jejich hodnoty, klíčem je název položky
Struktura sg_field_t obsahuje informaci o jedné položce a její hodnotě z hlavičky
požadavku nebo odpovědi
-
- typedef struct {
char *field;
int flen;
char *value;
int vlen;
} sg_field_t;
- flen,vlen
- - délka řetězce položky resp. její hodnoty
Struktura sg_bucketinfo_t nese informaci o jednom bucketu (viz kapitola Buckety),
její deklarace je následovná:
-
- typedef struct {
int maxsize;
long long size;
int sizefactor;
int ecount;
char *name;
} sg_bucketinfo_t;
- maxsize
- - maximální velikost bucketu v megabajtech
- size
- - aktuální velikost bucketu v bytech
- sizefactor
- - určuje poměr velikosti daného bucketu (viz níže)
- ecount
- - počet záznamů v daném bucketu
- name
- - cesta k adresáři dedikovanému pro daný bucket
Next: Buckety
Up: Implementace
Previous: Hašovací funkce
Stanislav Pavlicek
2000-06-12