Commit d4dc46ed authored by Nils Goroll's avatar Nils Goroll

hash_string() should be a function, not a method

parent b7d9d4f7
Pipeline #12 skipped
......@@ -32,21 +32,21 @@ varnish v1 -vcl+backend {
}
sub recv_sub {
set req.backend_hint = vd.backend(hash=vd.hash_string(req.http.X-Hash, RS));
set req.backend_hint = vd.backend(hash=vslp.hash_string(req.http.X-Hash, RS));
}
sub vcl_recv {
if(req.url == "/1") {
set req.backend_hint = vd.backend(hash=vd.hash_string("/eishoSu2"));
set req.backend_hint = vd.backend(hash=vslp.hash_string("/eishoSu2"));
} else if (req.url == "/2") {
set req.backend_hint = vd.backend(hash=vd.hash_string(alg=SHA256, string="/eishoSu2"));
set req.backend_hint = vd.backend(hash=vslp.hash_string(alg=SHA256, string="/eishoSu2"));
} else if (req.url == "/3") {
set req.http.X-Hash = "/oob3dahS";
call recv_sub;
} else if (req.url == "/null_by_string") {
set req.backend_hint = vd.backend(hash=vd.hash_string(req.http.NonExistent));
set req.backend_hint = vd.backend(hash=vslp.hash_string(req.http.NonExistent));
} else if (req.url == "/null_by_string_hash") {
set req.backend_hint = vd.backend(hash=vd.hash_string(req.http.NonExistent, SHA256));
set req.backend_hint = vd.backend(hash=vslp.hash_string(req.http.NonExistent, SHA256));
}
return(pass);
}
......
......@@ -40,7 +40,7 @@ varnish v1 -vcl+backend {
}
sub vcl_recv {
set req.backend_hint = vd.backend(hash=vd.hash_string("/eishoSu2"));
set req.backend_hint = vd.backend(hash=vslp.hash_string("/eishoSu2"));
if(req.url == "/2" && req.restarts > 0) {
unset req.http.vrstart;
}
......
......@@ -28,7 +28,7 @@ varnish v1 -vcl+backend {
}
sub vcl_recv {
set req.backend_hint = vd.backend(hash=vd.hash_string("/eishoSu2"));
set req.backend_hint = vd.backend(hash=vslp.hash_string("/eishoSu2"));
return(pass);
}
......
......@@ -31,7 +31,7 @@ varnish v1 -vcl+backend {
}
sub vcl_recv {
set req.backend_hint = vd.backend(hash=vd.hash_string("/eishoSu2"));
set req.backend_hint = vd.backend(hash=vslp.hash_string("/eishoSu2"));
return(pass);
}
......
......@@ -76,6 +76,20 @@ vmod_vslp__fini(struct vmod_vslp_vslp **vslpdp)
FREE_OBJ(vslpd);
}
VCL_INT __match_proto__(td_vslp_hash_string)
vmod_hash_string(const struct vrt_ctx *ctx, VCL_STRING s, VCL_ENUM hash_m)
{
uint32_t hash;
hash_func hash_fp;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
hash_fp = vslp_get_hash_fp(hash_m);
hash = hash_fp(s ? s : "");
return (hash);
}
VCL_VOID __match_proto__(td_vslp_vslp_add_backend)
vmod_vslp_add_backend(const struct vrt_ctx *ctx, struct vmod_vslp_vslp *vslpd, VCL_BACKEND be)
{
......@@ -121,21 +135,6 @@ vmod_vslp_init_hashcircle(const struct vrt_ctx *ctx, struct vmod_vslp_vslp *vslp
vslpdir_init_hashcircle(vslpd->vslpd, replicas);
}
VCL_INT __match_proto__(td_vslp_vslp_hash_string)
vmod_vslp_hash_string(const struct vrt_ctx *ctx, struct vmod_vslp_vslp *vslpd, VCL_STRING s, VCL_ENUM hash_m)
{
uint32_t hash;
hash_func hash_fp;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(vslpd, VMOD_VSLP_VSLP_MAGIC);
hash_fp = vslp_get_hash_fp(hash_m);
hash = hash_fp(s ? s : "");
return (hash);
}
VCL_BACKEND __match_proto__(td_vslp_vslp_backend)
vmod_vslp_backend(const struct vrt_ctx *ctx, struct vmod_vslp_vslp *vslpd, VCL_INT n, VCL_BOOL altsrv_p, VCL_BOOL healthy, VCL_INT i)
{
......
......@@ -28,11 +28,12 @@
$Module vslp 3 Varnish StateLess Persistency Director aka Shard Director
$Function INT hash_string(STRING string, ENUM { CRC32, SHA256, RS } alg="CRC32")
$Object vslp()
$Method VOID .add_backend(BACKEND)
$Method VOID .set_rampup_ratio(REAL)
$Method VOID .set_rampup_time(DURATION)
$Method VOID .set_hash(ENUM { CRC32, SHA256, RS })
$Method VOID .init_hashcircle(INT)
$Method INT .hash_string(STRING string, ENUM { CRC32, SHA256, RS } alg="CRC32")
$Method BACKEND .backend(INT nte=0, BOOL altsrv_p=1, BOOL healthy=1, INT hash=0)
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