[master] d771942 Hide backends and directors implementation details

Federico Schwindt fgsch at lodoss.net
Mon Aug 24 11:37:36 CEST 2015


As I mentioned to Dridi I'm not too thrilled about this.

This pollutes cache.h and causes artificial breakages. I'd prefer, if we
really want to do this, to take the _int.h approach.

I also had a chat with Martin not so long ago and one of the things that
came in that discussion is the possibility of installing all the includes.
This is a step backwards from that.


On Sun, Aug 23, 2015 at 11:35 AM, Dridi Boukelmoune <
dridi.boukelmoune at gmail.com> wrote:

>
> commit d771942c0c6f151e267b63bbc548a4d4371b25be
> Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
> Date:   Sun Aug 23 12:29:29 2015 +0200
>
>     Hide backends and directors implementation details
>
>     Don't install cache_backend.h and cache_director.h, they expose more
>     than what a VMOD needs to see.
>
>     The VRT API jumps directly from struct vrt_backend to struct director,
>     which makes struct backend more than simply opaque, it is completely
>     invisible. However struct director needs to be visible and has been
>     moved to cache.h along with its functions definitions.
>
> diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
> index dd2bae2..eb01348 100644
> --- a/bin/varnishd/Makefile.am
> +++ b/bin/varnishd/Makefile.am
> @@ -99,6 +99,8 @@ varnishd_SOURCES = \
>
>  noinst_HEADERS = \
>         builtin_vcl.h \
> +       cache/cache_backend.h \
> +       cache/cache_director.h \
>         cache/cache_esi.h \
>         cache/cache_pool.h \
>         common/heritage.h \
> @@ -116,8 +118,6 @@ noinst_HEADERS = \
>  nobase_pkginclude_HEADERS = \
>         cache/cache.h \
>         cache/cache_filter.h \
> -       cache/cache_backend.h \
> -       cache/cache_director.h \
>         common/common.h \
>         common/params.h \
>         waiter/waiter.h
> diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
> index 648dad4..ed72296 100644
> --- a/bin/varnishd/cache/cache.h
> +++ b/bin/varnishd/cache/cache.h
> @@ -190,6 +190,47 @@ struct http {
>  };
>
>  /*--------------------------------------------------------------------
> + * Director public APIs
> + */
> +
> +typedef unsigned vdi_healthy_f(const struct director *, const struct
> busyobj *,
> +    double *changed);
> +
> +typedef const struct director *vdi_resolve_f(const struct director *,
> +    struct worker *, struct busyobj *);
> +
> +typedef int vdi_gethdrs_f(const struct director *, struct worker *,
> +    struct busyobj *);
> +typedef int vdi_getbody_f(const struct director *, struct worker *,
> +    struct busyobj *);
> +typedef const struct suckaddr *vdi_getip_f(const struct director *,
> +    struct worker *, struct busyobj *);
> +typedef void vdi_finish_f(const struct director *, struct worker *,
> +    struct busyobj *);
> +
> +typedef void vdi_http1pipe_f(const struct director *, struct req *,
> +    struct busyobj *);
> +
> +typedef void vdi_panic_f(const struct director *, struct vsb *);
> +
> +struct director {
> +       unsigned                magic;
> +#define DIRECTOR_MAGIC         0x3336351d
> +       const char              *name;
> +       char                    *vcl_name;
> +       vdi_http1pipe_f         *http1pipe;
> +       vdi_healthy_f           *healthy;
> +       vdi_resolve_f           *resolve;
> +       vdi_gethdrs_f           *gethdrs;
> +       vdi_getbody_f           *getbody;
> +       vdi_getip_f             *getip;
> +       vdi_finish_f            *finish;
> +       vdi_panic_f             *panic;
> +       void                    *priv;
> +       const void              *priv2;
> +};
> +
> +/*--------------------------------------------------------------------
>   * VFP filter state
>   */
>
> diff --git a/bin/varnishd/cache/cache_director.h
> b/bin/varnishd/cache/cache_director.h
> index cf20dc1..3bccf80 100644
> --- a/bin/varnishd/cache/cache_director.h
> +++ b/bin/varnishd/cache/cache_director.h
> @@ -37,49 +37,6 @@
>   *
>   */
>
> -/*--------------------------------------------------------------------
> - * A director is a piece of code which selects one of possibly multiple
> - * backends to use.
> - */
> -
> -
> -typedef unsigned vdi_healthy_f(const struct director *, const struct
> busyobj *,
> -    double *changed);
> -
> -typedef const struct director *vdi_resolve_f(const struct director *,
> -    struct worker *, struct busyobj *);
> -
> -typedef int vdi_gethdrs_f(const struct director *, struct worker *,
> -    struct busyobj *);
> -typedef int vdi_getbody_f(const struct director *, struct worker *,
> -    struct busyobj *);
> -typedef const struct suckaddr *vdi_getip_f(const struct director *,
> -    struct worker *, struct busyobj *);
> -typedef void vdi_finish_f(const struct director *, struct worker *,
> -    struct busyobj *);
> -
> -typedef void vdi_http1pipe_f(const struct director *, struct req *,
> -    struct busyobj *);
> -
> -typedef void vdi_panic_f(const struct director *, struct vsb *);
> -
> -struct director {
> -       unsigned                magic;
> -#define DIRECTOR_MAGIC         0x3336351d
> -       const char              *name;
> -       char                    *vcl_name;
> -       vdi_http1pipe_f         *http1pipe;
> -       vdi_healthy_f           *healthy;
> -       vdi_resolve_f           *resolve;
> -       vdi_gethdrs_f           *gethdrs;
> -       vdi_getbody_f           *getbody;
> -       vdi_getip_f             *getip;
> -       vdi_finish_f            *finish;
> -       vdi_panic_f             *panic;
> -       void                    *priv;
> -       const void              *priv2;
> -};
> -
>  /* cache_director.c */
>
>  int VDI_GetHdr(struct worker *, struct busyobj *);
> diff --git a/lib/libvmod_directors/vdir.c b/lib/libvmod_directors/vdir.c
> index 411df34..1738bcf 100644
> --- a/lib/libvmod_directors/vdir.c
> +++ b/lib/libvmod_directors/vdir.c
> @@ -31,7 +31,6 @@
>  #include <stdlib.h>
>
>  #include "cache/cache.h"
> -#include "cache/cache_director.h"
>
>  #include "vrt.h"
>  #include "vbm.h"
>
> _______________________________________________
> varnish-commit mailing list
> varnish-commit at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-dev/attachments/20150824/4e211ad4/attachment.html>


More information about the varnish-dev mailing list