Commit 8907c7d8 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Make the internal states of the backend-fetch code private matter.

parent 098722dc
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#include "vdef.h" #include "vdef.h"
#include "vrt.h" #include "vrt.h"
#define CACHE_H_INCLUDED #define CACHE_H_INCLUDED // After vrt.h include.
#include "miniobj.h" #include "miniobj.h"
#include "vas.h" #include "vas.h"
...@@ -121,12 +121,6 @@ enum req_step { ...@@ -121,12 +121,6 @@ enum req_step {
#include "tbl/steps.h" #include "tbl/steps.h"
}; };
enum fetch_step {
F_STP_NONE = 0,
#define FETCH_STEP(l, U, arg) F_STP_##U,
#include "tbl/steps.h"
};
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
struct lock { void *priv; }; // Opaque struct lock { void *priv; }; // Opaque
......
...@@ -39,6 +39,31 @@ ...@@ -39,6 +39,31 @@
#include "vcl.h" #include "vcl.h"
#include "vtim.h" #include "vtim.h"
#define FETCH_STEPS \
FETCH_STEP(mkbereq, MKBEREQ) \
FETCH_STEP(retry, RETRY) \
FETCH_STEP(startfetch, STARTFETCH) \
FETCH_STEP(condfetch, CONDFETCH) \
FETCH_STEP(fetch, FETCH) \
FETCH_STEP(fetchbody, FETCHBODY) \
FETCH_STEP(fetchend, FETCHEND) \
FETCH_STEP(error, ERROR) \
FETCH_STEP(fail, FAIL) \
FETCH_STEP(done, DONE)
typedef const struct fetch_step *vbf_state_f(struct worker *, struct busyobj *);
struct fetch_step {
const char *name;
vbf_state_f *func;
};
#define FETCH_STEP(l, U) \
static vbf_state_f vbf_stp_##l; \
static const struct fetch_step F_STP_##U[1] = {{ .name = "Fetch Step" #l, .func = vbf_stp_##l, }};
FETCH_STEPS
#undef FETCH_STEP
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
* Allocate an object, with fall-back to Transient. * Allocate an object, with fall-back to Transient.
* XXX: This somewhat overlaps the stuff in stevedore.c * XXX: This somewhat overlaps the stuff in stevedore.c
...@@ -213,7 +238,7 @@ vbf_beresp2obj(struct busyobj *bo) ...@@ -213,7 +238,7 @@ vbf_beresp2obj(struct busyobj *bo)
* Copy req->bereq and release req if no body * Copy req->bereq and release req if no body
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_mkbereq(struct worker *wrk, struct busyobj *bo) vbf_stp_mkbereq(struct worker *wrk, struct busyobj *bo)
{ {
const char *q; const char *q;
...@@ -278,7 +303,7 @@ vbf_stp_mkbereq(struct worker *wrk, struct busyobj *bo) ...@@ -278,7 +303,7 @@ vbf_stp_mkbereq(struct worker *wrk, struct busyobj *bo)
* Prepare the busyobj and fetch processors * Prepare the busyobj and fetch processors
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_retry(struct worker *wrk, struct busyobj *bo) vbf_stp_retry(struct worker *wrk, struct busyobj *bo)
{ {
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
...@@ -352,7 +377,7 @@ vbf_304_logic(struct busyobj *bo) ...@@ -352,7 +377,7 @@ vbf_304_logic(struct busyobj *bo)
* Setup bereq from bereq0, run vcl_backend_fetch * Setup bereq from bereq0, run vcl_backend_fetch
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo) vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
{ {
int i; int i;
...@@ -516,8 +541,8 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo) ...@@ -516,8 +541,8 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_fetchbody(const struct worker *wrk, struct busyobj *bo) vbf_stp_fetchbody(struct worker *wrk, struct busyobj *bo)
{ {
ssize_t l; ssize_t l;
uint8_t *ptr; uint8_t *ptr;
...@@ -587,7 +612,7 @@ vbf_stp_fetchbody(const struct worker *wrk, struct busyobj *bo) ...@@ -587,7 +612,7 @@ vbf_stp_fetchbody(const struct worker *wrk, struct busyobj *bo)
return (F_STP_FETCHEND); return (F_STP_FETCHEND);
} }
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_fetch(struct worker *wrk, struct busyobj *bo) vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
{ {
struct objcore *oc; struct objcore *oc;
...@@ -673,7 +698,7 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo) ...@@ -673,7 +698,7 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
return (F_STP_FETCHEND); return (F_STP_FETCHEND);
} }
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_fetchend(struct worker *wrk, struct busyobj *bo) vbf_stp_fetchend(struct worker *wrk, struct busyobj *bo)
{ {
...@@ -735,7 +760,7 @@ vbf_objiterator(void *priv, unsigned flush, const void *ptr, ssize_t len) ...@@ -735,7 +760,7 @@ vbf_objiterator(void *priv, unsigned flush, const void *ptr, ssize_t len)
return (0); return (0);
} }
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo) vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
{ {
struct boc *stale_boc; struct boc *stale_boc;
...@@ -824,7 +849,7 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo) ...@@ -824,7 +849,7 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
* default true) * default true)
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_error(struct worker *wrk, struct busyobj *bo) vbf_stp_error(struct worker *wrk, struct busyobj *bo)
{ {
ssize_t l, ll, o; ssize_t l, ll, o;
...@@ -945,8 +970,8 @@ vbf_stp_error(struct worker *wrk, struct busyobj *bo) ...@@ -945,8 +970,8 @@ vbf_stp_error(struct worker *wrk, struct busyobj *bo)
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_fail(struct worker *wrk, const struct busyobj *bo) vbf_stp_fail(struct worker *wrk, struct busyobj *bo)
{ {
struct objcore *oc; struct objcore *oc;
...@@ -966,9 +991,12 @@ vbf_stp_fail(struct worker *wrk, const struct busyobj *bo) ...@@ -966,9 +991,12 @@ vbf_stp_fail(struct worker *wrk, const struct busyobj *bo)
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
*/ */
static enum fetch_step static const struct fetch_step * v_matchproto_(vbf_state_f)
vbf_stp_done(void) vbf_stp_done(struct worker *wrk, struct busyobj *bo)
{ {
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
WRONG("Just plain wrong"); WRONG("Just plain wrong");
NEEDLESS(return (F_STP_DONE)); NEEDLESS(return (F_STP_DONE));
} }
...@@ -978,7 +1006,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv) ...@@ -978,7 +1006,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
{ {
struct busyobj *bo; struct busyobj *bo;
struct objcore *oc; struct objcore *oc;
enum fetch_step stp; const struct fetch_step *stp;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CAST_OBJ_NOTNULL(bo, priv, BUSYOBJ_MAGIC); CAST_OBJ_NOTNULL(bo, priv, BUSYOBJ_MAGIC);
...@@ -1012,15 +1040,10 @@ vbf_fetch_thread(struct worker *wrk, void *priv) ...@@ -1012,15 +1040,10 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
AN(bo->req); AN(bo->req);
else else
AZ(bo->req); AZ(bo->req);
switch (stp) { AN(stp);
#define FETCH_STEP(l, U, arg) \ AN(stp->name);
case F_STP_##U: \ AN(stp->func);
stp = vbf_stp_##l arg; \ stp = stp->func(wrk, bo);
break;
#include "tbl/steps.h"
default:
WRONG("Illegal fetch_step");
}
} }
assert(bo->director_state == DIR_S_NULL); assert(bo->director_state == DIR_S_NULL);
......
...@@ -49,18 +49,4 @@ ...@@ -49,18 +49,4 @@
#undef REQ_STEP #undef REQ_STEP
#endif #endif
#ifdef FETCH_STEP
FETCH_STEP(mkbereq, MKBEREQ, (wrk, bo))
FETCH_STEP(retry, RETRY, (wrk, bo))
FETCH_STEP(startfetch, STARTFETCH, (wrk, bo))
FETCH_STEP(condfetch, CONDFETCH, (wrk, bo))
FETCH_STEP(fetch, FETCH, (wrk, bo))
FETCH_STEP(fetchbody, FETCHBODY, (wrk, bo))
FETCH_STEP(fetchend, FETCHEND, (wrk, bo))
FETCH_STEP(error, ERROR, (wrk, bo))
FETCH_STEP(fail, FAIL, (wrk, bo))
FETCH_STEP(done, DONE, ())
#undef FETCH_STEP
#endif
/*lint -restore */ /*lint -restore */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment