Add a zipflow top data structure

parent 91b28e41
......@@ -60,6 +60,7 @@ assert_zlib(void)
static char default_level = Z_DEFAULT_COMPRESSION;
static const void *zipflow_request_priv = &zipflow_request_priv;
static const void *zipflow_top_priv = &zipflow_top_priv;
struct zipflow_top;
struct zipflow_request {
......@@ -71,10 +72,10 @@ struct zipflow_request {
unsigned mode;
uint32_t atime, mtime;
ZIP *zip;
VSLIST_ENTRY(zipflow_request) list;
VSTAILQ_ENTRY(zipflow_request) list;
};
VSLIST_HEAD(zipflow_head, zipflow_request);
VSTAILQ_HEAD(zipflow_head, zipflow_request);
struct zipflow_top {
unsigned magic;
......@@ -82,6 +83,31 @@ struct zipflow_top {
struct zipflow_head head;
};
static struct zipflow_top *
get_zipflow_top(VRT_CTX)
{
struct vmod_priv *task_priv;
struct zipflow_top *zft;
task_priv = VRT_priv_task(ctx, zipflow_top_priv);
if (task_priv == NULL) {
VRT_fail(ctx, "Can not get PRIV_TASK");
return (NULL);
}
if (task_priv->priv != NULL) {
CAST_OBJ_NOTNULL(zft, task_priv->priv, ZIPFLOW_TOP_MAGIC);
return (zft);
}
WS_TASK_ALLOC_OBJ(ctx, zft, ZIPFLOW_TOP_MAGIC);
if (zft == NULL)
return (NULL);
VSTAILQ_INIT(&zft->head);
return (zft);
}
static struct vdp vdp_zipflow;
static struct zipflow_request *
......@@ -89,6 +115,7 @@ get_zipflow_request(VRT_CTX)
{
struct vmod_priv *task_priv;
struct zipflow_request *zfr;
struct zipflow_top *zft;
task_priv = VRT_priv_task(ctx, zipflow_request_priv);
if (task_priv == NULL) {
......@@ -101,10 +128,16 @@ get_zipflow_request(VRT_CTX)
return (zfr);
}
zft = get_zipflow_top(ctx);
if (zft == NULL)
return (NULL);
WS_TASK_ALLOC_OBJ(ctx, zfr, ZIPFLOW_REQUEST_MAGIC);
if (zfr == NULL)
return (NULL);
VSTAILQ_INSERT_TAIL(&zft->head, zfr, list);
zfr->bundle = 1;
zfr->level = default_level;
zfr->name = "unnamed_file";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment