Skip to content

Commit

Permalink
vrt_var: Generalize obj.* variables bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
walid-git committed Oct 16, 2023
1 parent e6ca62b commit 50107d7
Showing 1 changed file with 65 additions and 66 deletions.
131 changes: 65 additions & 66 deletions bin/varnishd/cache/cache_vrt_var.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,42 +145,6 @@ VRT_HDR_LR(beresp, reason, HTTP_HDR_REASON)
VRT_STATUS_L(beresp)
VRT_STATUS_R(beresp)

/*--------------------------------------------------------------------
* Pulling things out of the packed object->http
*/

VCL_INT
VRT_r_obj_status(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);

return (HTTP_GetStatusPack(ctx->req->wrk, ctx->req->objcore));
}

VCL_STRING
VRT_r_obj_proto(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);

return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore,
H__Proto));
}

VCL_STRING
VRT_r_obj_reason(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);

return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore,
H__Reason));
}

/*--------------------------------------------------------------------
* beresp bool-fields
*/
Expand Down Expand Up @@ -515,28 +479,73 @@ VRT_l_beresp_storage_hint(VRT_CTX, const char *str, VCL_STRANDS s)

/*--------------------------------------------------------------------*/

VCL_STEVEDORE
VRT_r_obj_storage(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);
AN(ctx->req->objcore->stobj);
CHECK_OBJ_NOTNULL(ctx->req->objcore->stobj->stevedore,
STEVEDORE_MAGIC);
return (ctx->req->objcore->stobj->stevedore);
#define VRT_OC_VAR_R(which, obj, obj_magic, field) \
VCL_STEVEDORE \
VRT_r_##which##_storage(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
AN(ctx->obj->field->stobj); \
CHECK_OBJ_NOTNULL(ctx->obj->field->stobj->stevedore, \
STEVEDORE_MAGIC); \
return (ctx->obj->field->stobj->stevedore); \
} \
\
VCL_BOOL \
VRT_r_##which##_can_esi(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
return (ObjHasAttr(ctx->obj->wrk, ctx->obj->field, \
OA_ESIDATA)); \
} \
\
VCL_BOOL \
VRT_r_##which##_uncacheable(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
\
return (ctx->obj->field->flags & OC_F_HFM ? 1 : 0); \
} \
\
VCL_INT \
VRT_r_##which##_status(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
\
return (HTTP_GetStatusPack(ctx->obj->wrk, \
ctx->obj->field)); \
} \
\
VCL_STRING \
VRT_r_##which##_proto(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
\
return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \
H__Proto)); \
} \
\
VCL_STRING \
VRT_r_##which##_reason(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \
CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \
\
return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \
H__Reason)); \
}

/*--------------------------------------------------------------------*/

VCL_BOOL
VRT_r_obj_can_esi(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);
return (ObjHasAttr(ctx->req->wrk, ctx->req->objcore, OA_ESIDATA));
}
VRT_OC_VAR_R(obj, req, REQ_MAGIC, objcore);

/*--------------------------------------------------------------------*/

Expand Down Expand Up @@ -974,16 +983,6 @@ VRT_r_obj_hits(VRT_CTX)
return (ctx->req->is_hit ? ctx->req->objcore->hits : 0);
}

VCL_BOOL
VRT_r_obj_uncacheable(VRT_CTX)
{

CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC);
return (ctx->req->objcore->flags & OC_F_HFM ? 1 : 0);
}

/*--------------------------------------------------------------------*/

VCL_BOOL
Expand Down

0 comments on commit 50107d7

Please sign in to comment.