Commit 64e06add authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Move vep from worker to busyobj

parent eb6fa2f1
......@@ -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 --------------------------------------------------*/
......
......@@ -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);
......@@ -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;
......
......@@ -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);
......
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