unsigned vdir_add_backend(struct vdir *vd, VCL_BACKEND be, double weight) { unsigned u; CHECK_OBJ_NOTNULL(vd, VDIR_MAGIC); AN(be); vdir_lock(vd); if (vd->n_backend >= vd->l_backend) vdir_expand(vd, vd->l_backend + 16); assert(vd->n_backend < vd->l_backend); u = vd->n_backend++; vd->backend[u] = be; vd->weight[u] = weight; vd->total_weight += weight; vdir_unlock(vd); return (u); }
void vdir_add_backend(VRT_CTX, struct vdir *vd, VCL_BACKEND be, double weight) { unsigned u; CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(vd, VDIR_MAGIC); if (be == NULL) { VRT_fail(ctx, "%s: NULL backend cannot be added", VRT_BACKEND_string(vd->dir)); return; } AN(be); vdir_wrlock(vd); if (vd->n_backend >= vd->l_backend) vdir_expand(vd, vd->l_backend + 16); assert(vd->n_backend < vd->l_backend); u = vd->n_backend++; vd->backend[u] = be; vd->weight[u] = weight; vdir_unlock(vd); }