[experimental-ims] 64e06ad Move vep from worker to busyobj
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:52:43 CET 2012
commit 64e06add5bacfb6b4a9ba855617f704e0691fdf6
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Nov 29 17:44:41 2011 +0000
Move vep from worker to busyobj
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 21382d7..634d9aa 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -348,7 +348,6 @@ struct worker {
struct stream_ctx *sctx;
/* ESI stuff */
- struct vep_state *vep;
int gzip_resp;
ssize_t l_crc;
uint32_t crc;
@@ -503,6 +502,7 @@ struct busyobj {
unsigned is_gunzip;
struct vfp *vfp;
+ struct vep_state *vep;
};
/* Object structure --------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_esi.h b/bin/varnishd/cache/cache_esi.h
index ff84d41..4867614 100644
--- a/bin/varnishd/cache/cache_esi.h
+++ b/bin/varnishd/cache/cache_esi.h
@@ -43,6 +43,6 @@ typedef ssize_t vep_callback_t(struct worker *w, ssize_t l, enum vgz_flag flg);
void VEP_Init(struct worker *w, vep_callback_t *cb);
void VEP_Parse(const struct worker *w, const char *p, size_t l);
-struct vsb *VEP_Finish(struct worker *w);
+struct vsb *VEP_Finish(const struct worker *w);
diff --git a/bin/varnishd/cache/cache_esi_fetch.c b/bin/varnishd/cache/cache_esi_fetch.c
index 35166e7..f5748a3 100644
--- a/bin/varnishd/cache/cache_esi_fetch.c
+++ b/bin/varnishd/cache/cache_esi_fetch.c
@@ -325,7 +325,7 @@ vfp_esi_begin(struct worker *w, size_t estimate)
}
(void)estimate;
- AN(w->vep);
+ AN(w->busyobj->vep);
}
static int __match_proto__()
@@ -335,7 +335,7 @@ vfp_esi_bytes(struct worker *w, struct http_conn *htc, ssize_t bytes)
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
AZ(w->fetch_failed);
- AN(w->vep);
+ AN(w->busyobj->vep);
assert(w->htc == htc);
if (w->busyobj->is_gzip && w->do_gunzip)
i = vfp_esi_bytes_gu(w, htc, bytes);
@@ -345,7 +345,7 @@ vfp_esi_bytes(struct worker *w, struct http_conn *htc, ssize_t bytes)
i = vfp_esi_bytes_gg(w, htc, bytes);
else
i = vfp_esi_bytes_uu(w, htc, bytes);
- AN(w->vep);
+ AN(w->busyobj->vep);
return (i);
}
@@ -358,7 +358,7 @@ vfp_esi_end(struct worker *w)
int retval;
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
- AN(w->vep);
+ AN(w->busyobj->vep);
retval = w->fetch_failed;
diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c
index 9e2b4f6..71ec16d 100644
--- a/bin/varnishd/cache/cache_esi_parse.c
+++ b/bin/varnishd/cache/cache_esi_parse.c
@@ -556,7 +556,8 @@ VEP_Parse(const struct worker *w, const char *p, size_t l)
int i;
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
- vep = w->vep;
+ CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+ vep = w->busyobj->vep;
CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
assert(l > 0);
@@ -981,12 +982,15 @@ VEP_Parse(const struct worker *w, const char *p, size_t l)
static ssize_t __match_proto__()
vep_default_cb(struct worker *w, ssize_t l, enum vgz_flag flg)
{
+ struct vep_state *vep;
+ CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
+ CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+ vep = w->busyobj->vep;
+ CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
(void)flg;
- AN(w->vep);
- w->vep->cb_x += l;
-Debug("CB(%jd,%d) = %jd\n", (intmax_t)l, flg, (intmax_t)w->vep->cb_x);
- return (w->vep->cb_x);
+ vep->cb_x += l;
+ return (vep->cb_x);
}
/*---------------------------------------------------------------------
@@ -998,16 +1002,17 @@ VEP_Init(struct worker *w, vep_callback_t *cb)
struct vep_state *vep;
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
- AZ(w->vep);
- w->vep = (void*)WS_Alloc(w->ws, sizeof *vep);
- AN(w->vep);
+ CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+ AZ(w->busyobj->vep);
+ vep = (void*)WS_Alloc(w->ws, sizeof *vep);
+ AN(vep);
- vep = w->vep;
memset(vep, 0, sizeof *vep);
vep->magic = VEP_MAGIC;
vep->wrk = w;
vep->vsb = VSB_new_auto();
AN(vep->vsb);
+ w->busyobj->vep = vep;
if (cb != NULL) {
vep->dogzip = 1;
@@ -1038,13 +1043,14 @@ VEP_Init(struct worker *w, vep_callback_t *cb)
*/
struct vsb *
-VEP_Finish(struct worker *w)
+VEP_Finish(const struct worker *w)
{
struct vep_state *vep;
ssize_t l, lcb;
CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
- vep = w->vep;
+ CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+ vep = w->busyobj->vep;
CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
if (vep->o_pending)
@@ -1055,7 +1061,7 @@ VEP_Finish(struct worker *w)
}
(void)vep->cb(vep->wrk, 0, VGZ_FINISH);
- w->vep = NULL;
+ w->busyobj->vep = NULL;
AZ(VSB_finish(vep->vsb));
l = VSB_len(vep->vsb);
More information about the varnish-commit
mailing list