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