[master] c4102bc Add two new VCL events, WARM and COLD. Regularize the names in the generated code. Pass VCL events to backends.

Poul-Henning Kamp phk at FreeBSD.org
Sat Mar 7 14:32:39 CET 2015


commit c4102bcfd459165a8658d091408055327d2cb24f
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Sat Mar 7 10:04:35 2015 +0000

    Add two new VCL events, WARM and COLD.
    Regularize the names in the generated code.
    Pass VCL events to backends.

diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index 91a8939..0785792 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -319,7 +319,8 @@ VRT_init_vbe(VRT_CTX, struct director **dp, const struct vrt_backend *vrt)
 }
 
 void
-VRT_use_vbe(VRT_CTX, const struct director *d, const struct vrt_backend *vrt)
+VRT_event_vbe(VRT_CTX, enum vcl_event_e ev, const struct director *d,
+    const struct vrt_backend *vrt)
 {
 	struct backend *be;
 
@@ -334,7 +335,8 @@ VRT_use_vbe(VRT_CTX, const struct director *d, const struct vrt_backend *vrt)
 	if (vrt->probe == NULL)
 		return;
 
-	VBP_Use(be, vrt->probe);
+	if (ev == VCL_EVENT_USE)
+		VBP_Use(be, vrt->probe);
 }
 
 void
diff --git a/include/vrt.h b/include/vrt.h
index d5a579c..60a0f14 100644
--- a/include/vrt.h
+++ b/include/vrt.h
@@ -233,7 +233,10 @@ void VRT_synth_page(VRT_CTX, const char *, ...);
 
 /* Backend related */
 void VRT_init_vbe(VRT_CTX, struct director **, const struct vrt_backend *);
-void VRT_use_vbe(VRT_CTX, const struct director *, const struct vrt_backend *);
+#ifdef VCL_RET_MAX
+void VRT_event_vbe(VRT_CTX, enum vcl_event_e, const struct director *,
+    const struct vrt_backend *);
+#endif
 void VRT_fini_vbe(VRT_CTX, struct director **, const struct vrt_backend *);
 
 /* Suckaddr related */
diff --git a/lib/libvcc/generate.py b/lib/libvcc/generate.py
index c3b9a13..448cec8 100755
--- a/lib/libvcc/generate.py
+++ b/lib/libvcc/generate.py
@@ -947,7 +947,9 @@ struct worker;
 
 enum vcl_event_e {
 	VCL_EVENT_LOAD,
+	VCL_EVENT_WARM,
 	VCL_EVENT_USE,
+	VCL_EVENT_COLD,
 	VCL_EVENT_DISCARD,
 };
 
diff --git a/lib/libvcc/vcc_backend.c b/lib/libvcc/vcc_backend.c
index 6402994..29444a6 100644
--- a/lib/libvcc/vcc_backend.c
+++ b/lib/libvcc/vcc_backend.c
@@ -434,8 +434,7 @@ vcc_ParseHostDef(struct vcc *tl, const struct token *t_be)
 	    "\tVRT_fini_vbe(ctx, &VGCDIR(%s), &vgc_dir_priv_%s);",
 	    vgcname, vgcname);
 	VSB_printf(ifp->event,
-	    "\tif (ev == VCL_EVENT_USE)\n"
-	    "\t\tVRT_use_vbe(ctx, VGCDIR(%s), &vgc_dir_priv_%s);",
+	    "\tVRT_event_vbe(ctx, ev, VGCDIR(%s), &vgc_dir_priv_%s);",
 	    vgcname, vgcname);
 	tl->ndirector++;
 }
diff --git a/lib/libvcc/vcc_compile.c b/lib/libvcc/vcc_compile.c
index 40c3772..f651ed7 100644
--- a/lib/libvcc/vcc_compile.c
+++ b/lib/libvcc/vcc_compile.c
@@ -312,7 +312,7 @@ EmitInitFini(const struct vcc *tl)
 	/*
 	 * INIT
 	 */
-	Fc(tl, 0, "\nstatic int\nVGC_Init(VRT_CTX)\n{\n\n");
+	Fc(tl, 0, "\nstatic int\nVGC_Load(VRT_CTX)\n{\n\n");
 	VTAILQ_FOREACH(p, &tl->inifin, list) {
 		AZ(VSB_finish(p->ini));
 		if (VSB_len(p->ini))
@@ -326,7 +326,7 @@ EmitInitFini(const struct vcc *tl)
 	/*
 	 * FINI
 	 */
-	Fc(tl, 0, "\nstatic int\nVGC_Fini(VRT_CTX)\n{\n\n");
+	Fc(tl, 0, "\nstatic int\nVGC_Discard(VRT_CTX)\n{\n\n");
 
 	VTAILQ_FOREACH_REVERSE(p, &tl->inifin, inifinhead, list) {
 		AZ(VSB_finish(p->fin));
@@ -345,9 +345,9 @@ EmitInitFini(const struct vcc *tl)
 	Fc(tl, 0, "VGC_Event(VRT_CTX, enum vcl_event_e ev)\n");
 	Fc(tl, 0, "{\n");
 	Fc(tl, 0, "\tif (ev == VCL_EVENT_LOAD)\n");
-	Fc(tl, 0, "\t\treturn(VGC_Init(ctx));\n");
+	Fc(tl, 0, "\t\treturn(VGC_Load(ctx));\n");
 	Fc(tl, 0, "\tif (ev == VCL_EVENT_DISCARD)\n");
-	Fc(tl, 0, "\t\treturn(VGC_Fini(ctx));\n");
+	Fc(tl, 0, "\t\treturn(VGC_Discard(ctx));\n");
 	Fc(tl, 0, "\t\n");
 	VTAILQ_FOREACH(p, &tl->inifin, list) {
 		AZ(VSB_finish(p->event));



More information about the varnish-commit mailing list