You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-dev@httpd.apache.org by Joe Schaefer <jo...@sunstarsys.com> on 2003/05/08 19:44:21 UTC
[apreq-2] introduction: apreq_value_t & derived structures
Here's what apreq_value_t looks like:
typedef struct apreq_value_t {
const char *name;
apr_status_t status;
apr_size_t size;
char data[1];
} apreq_value_t;
These things are really just C-strings with lots of metacrap
in front of them. When "values" are constructed, the value's name,
status, & size are filled in, and the actual data (string) is
copied to data[] (the resulting data array is always nul-terminated:
v->data[v->size] == 0).
Cookies & params add even more metacrap by putting an apreq_value_t
(NOT A POINTER!) at the bottom of their definitions:
typedef struct apreq_cookie_t {
apreq_cookie_version_t version;
char *path;
char *domain;
char *port;
unsigned secure;
char *comment;
char *commentURL;
union {
apr_int64_t max_age;
const char *expires;
} time;
apreq_value_t v;
} apreq_cookie_t;
typedef struct apreq_param_t {
enum { ASCII, UTF_8, UTF_16, ISO_LATIN_1 } charset;
char *language;
apreq_table_t *info;
apr_bucket_brigade *bb;
apreq_value_t v;
} apreq_param_t;
The cookie struct is fairly straightforward; for params, the
charset/language attributes are currently unused and may go away.
The "info" attribute is where the mfd parser puts the per-part
header info. For file uploads, the mfd parser copies the incoming
buckets into "bb". If an upload hook were added to the mfd parser,
the parser would run the incoming buckets through the hook (which is
really acting as a filter) before adding them to "bb".
Any comments/questions so far?
--
Joe Schaefer