varnish 0.6.0

A Rust framework for creating Varnish Caching Proxy extensions
Documentation
---
source: varnish-macros/src/tests.rs
---
VMOD_JSON_SPEC
[
  [
    "$VMOD",
    "2.0",
    "task",
    "Vmod_vmod_task_Func",
    "d3254ccf9860c2c9a8db4e739800906db26805bc168f4b8f497e3685770707e1",
    "Varnish (version) (hash)",
    "0",
    "0"
  ],
  [
    "$CPROTO",
    "
struct vmod_task_PerVcl;

typedef VCL_VOID td_vmod_task_per_vcl_val(
    VRT_CTX,
    struct vmod_priv *
);

struct arg_vmod_task_per_vcl_opt {
  struct vmod_priv * vcl;
  char valid_op;
  VCL_INT op;
};

typedef VCL_VOID td_vmod_task_per_vcl_opt(
    VRT_CTX,
    struct arg_vmod_task_per_vcl_opt *
);

typedef VCL_VOID td_vmod_task_per_tsk_val(
    VRT_CTX,
    struct vmod_priv *
);

struct arg_vmod_task_per_tsk_opt {
  struct vmod_priv * tsk;
  char valid_op;
  VCL_INT op;
};

typedef VCL_VOID td_vmod_task_per_tsk_opt(
    VRT_CTX,
    struct arg_vmod_task_per_tsk_opt *
);

typedef VCL_VOID td_vmod_task_PerVcl__init(
    VRT_CTX,
    struct vmod_task_PerVcl **,
    const char *,
    struct vmod_priv *
);

typedef VCL_VOID td_vmod_task_PerVcl__fini(
    struct vmod_task_PerVcl **
);

typedef VCL_VOID td_vmod_task_PerVcl_both(
    VRT_CTX,
    struct vmod_task_PerVcl *,
    struct vmod_priv *,
    struct vmod_priv *
);

typedef VCL_VOID td_vmod_task_PerVcl_both_pos(
    VRT_CTX,
    struct vmod_task_PerVcl *,
    struct vmod_priv *,
    struct vmod_priv *,
    VCL_INT
);

struct arg_vmod_task_PerVcl_both_opt {
  struct vmod_priv * tsk;
  struct vmod_priv * vcl;
  char valid_opt;
  VCL_INT opt;
};

typedef VCL_VOID td_vmod_task_PerVcl_both_opt(
    VRT_CTX,
    struct vmod_task_PerVcl *,
    struct arg_vmod_task_PerVcl_both_opt *
);

struct Vmod_vmod_task_Func {
  vmod_event_f *f_on_event;
  td_vmod_task_per_vcl_val *f_per_vcl_val;
  td_vmod_task_per_vcl_opt *f_per_vcl_opt;
  td_vmod_task_per_tsk_val *f_per_tsk_val;
  td_vmod_task_per_tsk_opt *f_per_tsk_opt;
  td_vmod_task_PerVcl__init *f_PerVcl__init;
  td_vmod_task_PerVcl__fini *f_PerVcl__fini;
  td_vmod_task_PerVcl_both *f_PerVcl_both;
  td_vmod_task_PerVcl_both_pos *f_PerVcl_both_pos;
  td_vmod_task_PerVcl_both_opt *f_PerVcl_both_opt;
};

static struct Vmod_vmod_task_Func Vmod_vmod_task_Func;"
  ],
  [
    "$EVENT",
    "Vmod_vmod_task_Func.f_on_event"
  ],
  [
    "$FUNC",
    "per_vcl_val",
    [
      [
        "VOID"
      ],
      "Vmod_vmod_task_Func.f_per_vcl_val",
      "",
      [
        "PRIV_VCL",
        "vcl",
        "vcl"
      ]
    ]
  ],
  [
    "$FUNC",
    "per_vcl_opt",
    [
      [
        "VOID"
      ],
      "Vmod_vmod_task_Func.f_per_vcl_opt",
      "struct arg_vmod_task_per_vcl_opt",
      [
        "PRIV_VCL",
        "vcl",
        "vcl"
      ],
      [
        "INT",
        "op",
        "op",
        null,
        null,
        true
      ]
    ]
  ],
  [
    "$FUNC",
    "per_tsk_val",
    [
      [
        "VOID"
      ],
      "Vmod_vmod_task_Func.f_per_tsk_val",
      "",
      [
        "PRIV_TASK",
        "tsk",
        "tsk"
      ]
    ]
  ],
  [
    "$FUNC",
    "per_tsk_opt",
    [
      [
        "VOID"
      ],
      "Vmod_vmod_task_Func.f_per_tsk_opt",
      "struct arg_vmod_task_per_tsk_opt",
      [
        "PRIV_TASK",
        "tsk",
        "tsk"
      ],
      [
        "INT",
        "op",
        "op",
        null,
        null,
        true
      ]
    ]
  ],
  [
    "$OBJ",
    "PerVcl",
    {
      "NULL_OK": false
    },
    "struct vmod_task_PerVcl",
    [
      "$INIT",
      [
        [
          "VOID"
        ],
        "Vmod_vmod_task_Func.f_PerVcl__init",
        "",
        [
          "PRIV_VCL",
          "__vp",
          "__vp"
        ]
      ]
    ],
    [
      "$FINI",
      [
        [
          "VOID"
        ],
        "Vmod_vmod_task_Func.f_PerVcl__fini",
        ""
      ]
    ],
    [
      "$METHOD",
      "both",
      [
        [
          "VOID"
        ],
        "Vmod_vmod_task_Func.f_PerVcl_both",
        "",
        [
          "PRIV_TASK",
          "tsk",
          "tsk"
        ],
        [
          "PRIV_VCL",
          "vcl",
          "vcl"
        ]
      ]
    ],
    [
      "$METHOD",
      "both_pos",
      [
        [
          "VOID"
        ],
        "Vmod_vmod_task_Func.f_PerVcl_both_pos",
        "",
        [
          "PRIV_TASK",
          "tsk",
          "tsk"
        ],
        [
          "PRIV_VCL",
          "vcl",
          "vcl"
        ],
        [
          "INT",
          "val",
          "val"
        ]
      ]
    ],
    [
      "$METHOD",
      "both_opt",
      [
        [
          "VOID"
        ],
        "Vmod_vmod_task_Func.f_PerVcl_both_opt",
        "struct arg_vmod_task_PerVcl_both_opt",
        [
          "PRIV_TASK",
          "tsk",
          "tsk"
        ],
        [
          "PRIV_VCL",
          "vcl",
          "vcl"
        ],
        [
          "INT",
          "opt",
          "opt",
          null,
          null,
          true
        ]
      ]
    ]
  ]
]