// -- HitSet --
-HitSet::HitSet(HitSet::Params *params)
+HitSet::HitSet(const HitSet::Params& params)
{
- switch (params->get_type()) {
+ switch (params.get_type()) {
case TYPE_BLOOM:
- impl.reset(new BloomHitSet(static_cast<BloomHitSet::Params*>(params->impl.get())));
+ {
+ BloomHitSet::Params *p =
+ static_cast<BloomHitSet::Params*>(params.impl.get());
+ impl.reset(new BloomHitSet(p));
+ }
break;
case TYPE_EXPLICIT_HASH:
- impl.reset(new ExplicitHashHitSet(static_cast<ExplicitHashHitSet::Params*>(params->impl.get())));
+ impl.reset(new ExplicitHashHitSet(static_cast<ExplicitHashHitSet::Params*>(params.impl.get())));
break;
case TYPE_EXPLICIT_OBJECT:
- impl.reset(new ExplicitObjectHitSet(static_cast<ExplicitObjectHitSet::Params*>(params->impl.get())));
+ impl.reset(new ExplicitObjectHitSet(static_cast<ExplicitObjectHitSet::Params*>(params.impl.get())));
break;
case TYPE_NONE:
HitSet() : impl(NULL), sealed(false) {}
HitSet(Impl *i) : impl(i), sealed(false) {}
- HitSet(HitSet::Params *params);
+ HitSet(const HitSet::Params& params);
HitSet(const HitSet& o) {
sealed = o.sealed;
uint64_t target_size; ///< number of unique insertions we expect to this HitSet
uint64_t seed; ///< seed to use when initializing the bloom filter
- Params() : false_positive(0), target_size(0), seed(0) {}
+ Params()
+ : false_positive(0), target_size(0), seed(0) {}
Params(double fpp, uint64_t t, uint64_t s)
: false_positive(fpp), target_size(t), seed(s) {}
Params(const Params &o)
{
utime_t now = ceph_clock_now(NULL);
// make a copy of the params to modify
- HitSet::Params *params = new HitSet::Params(pool.info.hit_set_params);
+ HitSet::Params params(pool.info.hit_set_params);
if (pool.info.hit_set_params.get_type() == HitSet::TYPE_BLOOM) {
BloomHitSet::Params *p =
- static_cast<BloomHitSet::Params*>(params->impl.get());
+ static_cast<BloomHitSet::Params*>(params.impl.get());
+ dout(20) << __func__ << " " << params << " " << p << dendl;
// convert false positive rate so it holds up across the full period
p->false_positive = p->false_positive / pool.info.hit_set_count;