Skip to content

Commit

Permalink
cache_vrt_var: Reduce duplication between obj and obj_stale
Browse files Browse the repository at this point in the history
  • Loading branch information
walid-git committed Oct 16, 2023
1 parent f8b5ab0 commit 5722162
Showing 1 changed file with 67 additions and 139 deletions.
206 changes: 67 additions & 139 deletions bin/varnishd/cache/cache_vrt_var.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,77 +145,43 @@ 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));
}

/*--------------------------------------------------------------------
* stale_oc fields
*/

VCL_INT
VRT_r_obj_stale_status(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);

return HTTP_GetStatusPack(ctx->bo->wrk ,ctx->bo->stale_oc);
}

VCL_STRING
VRT_r_obj_stale_proto(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);

return (HTTP_GetHdrPack(ctx->bo->wrk, ctx->bo->stale_oc,
H__Proto));
#define VRT_OC_SPR_R(which, obj, field) \
VCL_INT \
VRT_r_##which##_status(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
AN(ctx->obj); \
AN(ctx->obj->field); \
\
return (HTTP_GetStatusPack(ctx->obj->wrk, \
ctx->obj->field)); \
} \
\
VCL_STRING \
VRT_r_##which##_proto(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
AN(ctx->obj); \
AN(ctx->obj->field); \
\
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); \
AN(ctx->obj); \
AN(ctx->obj->field); \
\
return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \
H__Reason)); \
}

VCL_STRING
VRT_r_obj_stale_reason(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);

return (HTTP_GetHdrPack(ctx->bo->wrk, ctx->bo->stale_oc,
H__Reason));
}
VRT_OC_SPR_R(obj, req, objcore);
VRT_OC_SPR_R(obj_stale, bo, stale_oc);

/*--------------------------------------------------------------------
* beresp bool-fields
Expand Down Expand Up @@ -551,57 +517,41 @@ 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);
}

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

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));
}

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

VCL_STEVEDORE
VRT_r_obj_stale_storage(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);
AN(ctx->bo->stale_oc->stobj);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc->stobj->stevedore,
STEVEDORE_MAGIC);

return (ctx->bo->stale_oc->stobj->stevedore);
}

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

VCL_BOOL
VRT_r_obj_stale_can_esi(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);

return (ObjHasAttr(ctx->bo->wrk, ctx->bo->stale_oc, OA_ESIDATA));
#define VRT_OC_SCU_R(which, obj, field) \
VCL_STEVEDORE \
VRT_r_##which##_storage(VRT_CTX) \
{ \
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \
AN(ctx->obj); \
AN(ctx->obj->field); \
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); \
AN(ctx->obj); \
AN(ctx->obj->field); \
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); \
AN(ctx->obj); \
AN(ctx->obj->field); \
\
return (ctx->obj->field->flags & OC_F_HFM ? 1 : 0); \
}

/*--------------------------------------------------------------------*/
VRT_OC_SCU_R(obj, req, objcore);
VRT_OC_SCU_R(obj_stale, bo, stale_oc);

#define REQ_VAR_L(nm, elem, type, extra) \
\
Expand Down Expand Up @@ -1043,18 +993,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_INT
VRT_r_obj_stale_hits(VRT_CTX)
{
Expand All @@ -1065,16 +1003,6 @@ VRT_r_obj_stale_hits(VRT_CTX)
return (ctx->bo->stale_oc->hits);
}

VCL_BOOL
VRT_r_obj_stale_uncacheable(VRT_CTX)
{
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC);

return (ctx->bo->stale_oc->flags & OC_F_HFM ? 1 : 0);
}

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

VCL_BOOL
Expand Down

0 comments on commit 5722162

Please sign in to comment.