r550 - in trunk/varnish-cache: bin/varnishd include lib/libvcl

phk at projects.linpro.no phk at projects.linpro.no
Fri Jul 21 23:13:44 CEST 2006


Author: phk
Date: 2006-07-21 23:13:43 +0200 (Fri, 21 Jul 2006)
New Revision: 550

Modified:
   trunk/varnish-cache/bin/varnishd/cache_vrt.c
   trunk/varnish-cache/include/vrt_obj.h
   trunk/varnish-cache/lib/libvcl/vcc_gen_obj.tcl
   trunk/varnish-cache/lib/libvcl/vcc_obj.c
Log:
More VRT work.

Use macros for trivial objects which are just a field in a struct.



Modified: trunk/varnish-cache/bin/varnishd/cache_vrt.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt.c	2006-07-21 21:01:45 UTC (rev 549)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt.c	2006-07-21 21:13:43 UTC (rev 550)
@@ -54,18 +54,6 @@
 
 /*--------------------------------------------------------------------*/
 
-char *
-VRT_GetReq(struct sess *sp)
-{
-
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	assert(sp != NULL);
-	assert(sp->http != NULL);
-	return (sp->http->hd[HTTP_HDR_REQ].b);
-}
-
-/*--------------------------------------------------------------------*/
-
 void
 VRT_handling(struct sess *sp, unsigned hand)
 {
@@ -78,34 +66,6 @@
 /*--------------------------------------------------------------------*/
 
 void
-VRT_l_backend_host(struct backend *be, const char *h)
-{
-	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
-	be->hostname = h;
-}
-
-const char *
-VRT_r_backend_host(struct backend *be)
-{
-	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
-	return (be->hostname);
-}
-
-void
-VRT_l_backend_port(struct backend *be, const char *p)
-{
-	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
-	be->portname = p;
-}
-
-const char *
-VRT_r_backend_port(struct backend *be)
-{
-	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
-	return (be->portname);
-}
-
-void
 VRT_set_backend_name(struct backend *be, const char *p)
 {
 	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
@@ -128,6 +88,26 @@
 
 /*--------------------------------------------------------------------*/
 
+#define VBACKEND(type,onm,field)			\
+void							\
+VRT_l_backend_##onm(struct backend *be, type a)		\
+{							\
+	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);		\
+	be->field = a;					\
+}							\
+							\
+type							\
+VRT_r_backend_##onm(struct backend *be)			\
+{							\
+	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);		\
+	return (be->field);				\
+}
+
+VBACKEND(const char *,	host,	hostname)
+VBACKEND(const char *,	port,	portname)
+
+/*--------------------------------------------------------------------*/
+
 void
 VRT_l_obj_ttl(struct sess *sp, double a)
 {
@@ -144,40 +124,39 @@
 	return (sp->obj->ttl - sp->t_req);
 }
 
+/*--------------------------------------------------------------------*/
 
-double
-VRT_r_obj_valid(struct sess *sp)
-{
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);	/* XXX */
-	return (sp->obj->valid);
+#define VOBJ(type,onm,field)						\
+void									\
+VRT_l_obj_##onm(struct sess *sp, type a)				\
+{									\
+	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);				\
+	CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);	/* XXX */	\
+	sp->obj->field = a;						\
+}									\
+									\
+type									\
+VRT_r_obj_##onm(struct sess *sp)					\
+{									\
+	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);				\
+	CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);	/* XXX */	\
+	return (sp->obj->field);					\
 }
 
+VOBJ(double, valid, valid)
+VOBJ(double, cacheable, cacheable)
 
-double
-VRT_r_obj_cacheable(struct sess *sp)
-{
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);	/* XXX */
-	return (sp->obj->cacheable);
-}
-
 /*--------------------------------------------------------------------*/
 
-const char *
-VRT_r_req_request(struct sess *sp)
-{
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	CHECK_OBJ_NOTNULL(sp->http, HTTP_MAGIC);
-	return (sp->http->hd[HTTP_HDR_REQ].b);
+#define  VREQ(n1, n2)					\
+const char *						\
+VRT_r_req_##n1(struct sess *sp)				\
+{							\
+	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);		\
+	CHECK_OBJ_NOTNULL(sp->http, HTTP_MAGIC);	\
+	return (sp->http->hd[n2].b);			\
 }
 
-
-const char *
-VRT_r_req_url(struct sess *sp)
-{
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	CHECK_OBJ_NOTNULL(sp->http, HTTP_MAGIC);
-	return (sp->http->hd[HTTP_HDR_URL].b);
-}
-
+VREQ(request, HTTP_HDR_REQ)
+VREQ(url, HTTP_HDR_URL)
+VREQ(proto, HTTP_HDR_PROTO)

Modified: trunk/varnish-cache/include/vrt_obj.h
===================================================================
--- trunk/varnish-cache/include/vrt_obj.h	2006-07-21 21:01:45 UTC (rev 549)
+++ trunk/varnish-cache/include/vrt_obj.h	2006-07-21 21:13:43 UTC (rev 550)
@@ -1,5 +1,5 @@
 /*
- * $Id: vcc_gen_obj.tcl 545 2006-07-21 20:43:56Z phk $
+ * $Id: vcc_gen_obj.tcl 548 2006-07-21 20:51:24Z phk $
  *
  * NB:  This file is machine generated, DO NOT EDIT!
  *
@@ -14,6 +14,8 @@
 void VRT_l_req_request(struct sess *, const char *);
 const char * VRT_r_req_url(struct sess *);
 void VRT_l_req_url(struct sess *, const char *);
+const char * VRT_r_req_proto(struct sess *);
+void VRT_l_req_proto(struct sess *, const char *);
 double VRT_r_obj_valid(struct sess *);
 void VRT_l_obj_valid(struct sess *, double);
 double VRT_r_obj_cacheable(struct sess *);

Modified: trunk/varnish-cache/lib/libvcl/vcc_gen_obj.tcl
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_gen_obj.tcl	2006-07-21 21:01:45 UTC (rev 549)
+++ trunk/varnish-cache/lib/libvcl/vcc_gen_obj.tcl	2006-07-21 21:13:43 UTC (rev 550)
@@ -14,6 +14,7 @@
 set spobj {
 	{ req.request	STRING }
         { req.url	STRING }
+        { req.proto	STRING }
         { obj.valid	BOOL }
         { obj.cacheable	BOOL }
         { obj.backend	BACKEND }

Modified: trunk/varnish-cache/lib/libvcl/vcc_obj.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_obj.c	2006-07-21 21:01:45 UTC (rev 549)
+++ trunk/varnish-cache/lib/libvcl/vcc_obj.c	2006-07-21 21:13:43 UTC (rev 550)
@@ -30,6 +30,10 @@
 	    "VRT_r_req_url(sp)",
 	    "VRT_l_req_url(sp, ",
 	},
+	{ "req.proto", STRING, 9,
+	    "VRT_r_req_proto(sp)",
+	    "VRT_l_req_proto(sp, ",
+	},
 	{ "obj.valid", BOOL, 9,
 	    "VRT_r_obj_valid(sp)",
 	    "VRT_l_obj_valid(sp, ",
@@ -70,6 +74,8 @@
 	"void VRT_l_req_request(struct sess *, const char *);\n"
 	"const char * VRT_r_req_url(struct sess *);\n"
 	"void VRT_l_req_url(struct sess *, const char *);\n"
+	"const char * VRT_r_req_proto(struct sess *);\n"
+	"void VRT_l_req_proto(struct sess *, const char *);\n"
 	"double VRT_r_obj_valid(struct sess *);\n"
 	"void VRT_l_obj_valid(struct sess *, double);\n"
 	"double VRT_r_obj_cacheable(struct sess *);\n"




More information about the varnish-commit mailing list