mirror of
https://github.com/zeek/zeek.git
synced 2025-10-05 16:18:19 +00:00
Move probabilistic code into zeek namespaces
This commit is contained in:
parent
be92bd536f
commit
f310795d79
17 changed files with 162 additions and 118 deletions
|
@ -706,7 +706,7 @@ BloomFilterVal::BloomFilterVal()
|
|||
bloom_filter = nullptr;
|
||||
}
|
||||
|
||||
BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf)
|
||||
BloomFilterVal::BloomFilterVal(zeek::probabilistic::BloomFilter* bf)
|
||||
: OpaqueVal(bloomfilter_type)
|
||||
{
|
||||
hash = nullptr;
|
||||
|
@ -784,7 +784,7 @@ BloomFilterValPtr BloomFilterVal::Merge(const BloomFilterVal* x,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
probabilistic::BloomFilter* copy = x->bloom_filter->Clone();
|
||||
zeek::probabilistic::BloomFilter* copy = x->bloom_filter->Clone();
|
||||
|
||||
if ( ! copy->Merge(y->bloom_filter) )
|
||||
{
|
||||
|
@ -851,7 +851,7 @@ bool BloomFilterVal::DoUnserialize(const broker::data& data)
|
|||
return false;
|
||||
}
|
||||
|
||||
auto bf = probabilistic::BloomFilter::Unserialize((*v)[1]);
|
||||
auto bf = zeek::probabilistic::BloomFilter::Unserialize((*v)[1]);
|
||||
if ( ! bf )
|
||||
return false;
|
||||
|
||||
|
@ -865,7 +865,7 @@ CardinalityVal::CardinalityVal() : OpaqueVal(cardinality_type)
|
|||
hash = nullptr;
|
||||
}
|
||||
|
||||
CardinalityVal::CardinalityVal(probabilistic::CardinalityCounter* arg_c)
|
||||
CardinalityVal::CardinalityVal(zeek::probabilistic::detail::CardinalityCounter* arg_c)
|
||||
: OpaqueVal(cardinality_type)
|
||||
{
|
||||
c = arg_c;
|
||||
|
@ -881,7 +881,7 @@ CardinalityVal::~CardinalityVal()
|
|||
ValPtr CardinalityVal::DoClone(CloneState* state)
|
||||
{
|
||||
return state->NewClone(this,
|
||||
zeek::make_intrusive<CardinalityVal>(new probabilistic::CardinalityCounter(*c)));
|
||||
zeek::make_intrusive<CardinalityVal>(new zeek::probabilistic::detail::CardinalityCounter(*c)));
|
||||
}
|
||||
|
||||
bool CardinalityVal::Typify(zeek::TypePtr arg_type)
|
||||
|
@ -945,7 +945,7 @@ bool CardinalityVal::DoUnserialize(const broker::data& data)
|
|||
return false;
|
||||
}
|
||||
|
||||
auto cu = probabilistic::CardinalityCounter::Unserialize((*v)[1]);
|
||||
auto cu = zeek::probabilistic::detail::CardinalityCounter::Unserialize((*v)[1]);
|
||||
if ( ! cu )
|
||||
return false;
|
||||
|
||||
|
|
|
@ -14,10 +14,8 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
class BloomFilter;
|
||||
class CardinalityCounter;
|
||||
}
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BloomFilter, zeek, probabilistic);
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(CardinalityCounter, zeek, probabilistic, detail);
|
||||
|
||||
namespace zeek {
|
||||
|
||||
|
@ -306,7 +304,7 @@ private:
|
|||
|
||||
class BloomFilterVal : public OpaqueVal {
|
||||
public:
|
||||
explicit BloomFilterVal(probabilistic::BloomFilter* bf);
|
||||
explicit BloomFilterVal(zeek::probabilistic::BloomFilter* bf);
|
||||
~BloomFilterVal() override;
|
||||
|
||||
ValPtr DoClone(CloneState* state) override;
|
||||
|
@ -337,13 +335,13 @@ private:
|
|||
|
||||
zeek::TypePtr type;
|
||||
zeek::detail::CompositeHash* hash;
|
||||
probabilistic::BloomFilter* bloom_filter;
|
||||
zeek::probabilistic::BloomFilter* bloom_filter;
|
||||
};
|
||||
|
||||
|
||||
class CardinalityVal : public OpaqueVal {
|
||||
public:
|
||||
explicit CardinalityVal(probabilistic::CardinalityCounter*);
|
||||
explicit CardinalityVal(zeek::probabilistic::detail::CardinalityCounter*);
|
||||
~CardinalityVal() override;
|
||||
|
||||
ValPtr DoClone(CloneState* state) override;
|
||||
|
@ -355,7 +353,7 @@ public:
|
|||
|
||||
bool Typify(zeek::TypePtr type);
|
||||
|
||||
probabilistic::CardinalityCounter* Get() { return c; };
|
||||
zeek::probabilistic::detail::CardinalityCounter* Get() { return c; };
|
||||
|
||||
protected:
|
||||
CardinalityVal();
|
||||
|
@ -364,7 +362,7 @@ protected:
|
|||
private:
|
||||
zeek::TypePtr type;
|
||||
zeek::detail::CompositeHash* hash;
|
||||
probabilistic::CardinalityCounter* c;
|
||||
zeek::probabilistic::detail::CardinalityCounter* c;
|
||||
};
|
||||
|
||||
class ParaglobVal : public OpaqueVal {
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "digest.h"
|
||||
|
||||
using namespace probabilistic;
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
BitVector::size_type BitVector::npos = static_cast<BitVector::size_type>(-1);
|
||||
BitVector::block_type BitVector::bits_per_block =
|
||||
|
@ -263,8 +263,6 @@ BitVector& BitVector::operator-=(BitVector const& other)
|
|||
return *this;
|
||||
}
|
||||
|
||||
namespace probabilistic {
|
||||
|
||||
BitVector operator&(BitVector const& x, BitVector const& y)
|
||||
{
|
||||
BitVector b(x);
|
||||
|
@ -318,8 +316,6 @@ bool operator<(BitVector const& x, BitVector const& y)
|
|||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void BitVector::Resize(size_type n, bool value)
|
||||
{
|
||||
size_type old = Blocks();
|
||||
|
@ -581,3 +577,5 @@ BitVector::size_type BitVector::find_from(size_type i) const
|
|||
|
||||
return i * bits_per_block + lowest_bit(bits[i]);
|
||||
}
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
/**
|
||||
* A vector of bits.
|
||||
|
@ -356,4 +356,8 @@ private:
|
|||
size_type num_bits;
|
||||
};
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
||||
namespace probabilistic {
|
||||
using BitVector [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::BitVector.")]] = zeek::probabilistic::detail::BitVector;
|
||||
}
|
||||
|
|
|
@ -13,14 +13,14 @@
|
|||
#include "../util.h"
|
||||
#include "../Reporter.h"
|
||||
|
||||
using namespace probabilistic;
|
||||
namespace zeek::probabilistic {
|
||||
|
||||
BloomFilter::BloomFilter()
|
||||
{
|
||||
hasher = nullptr;
|
||||
}
|
||||
|
||||
BloomFilter::BloomFilter(const Hasher* arg_hasher)
|
||||
BloomFilter::BloomFilter(const detail::Hasher* arg_hasher)
|
||||
{
|
||||
hasher = arg_hasher;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ std::unique_ptr<BloomFilter> BloomFilter::Unserialize(const broker::data& data)
|
|||
if ( ! type )
|
||||
return nullptr;
|
||||
|
||||
auto hasher_ = Hasher::Unserialize((*v)[1]);
|
||||
auto hasher_ = detail::Hasher::Unserialize((*v)[1]);
|
||||
if ( ! hasher_ )
|
||||
return nullptr;
|
||||
|
||||
|
@ -130,7 +130,7 @@ BasicBloomFilter* BasicBloomFilter::Clone() const
|
|||
BasicBloomFilter* copy = new BasicBloomFilter();
|
||||
|
||||
copy->hasher = hasher->Clone();
|
||||
copy->bits = new BitVector(*bits);
|
||||
copy->bits = new detail::BitVector(*bits);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
@ -145,10 +145,10 @@ BasicBloomFilter::BasicBloomFilter()
|
|||
bits = nullptr;
|
||||
}
|
||||
|
||||
BasicBloomFilter::BasicBloomFilter(const Hasher* hasher, size_t cells)
|
||||
BasicBloomFilter::BasicBloomFilter(const detail::Hasher* hasher, size_t cells)
|
||||
: BloomFilter(hasher)
|
||||
{
|
||||
bits = new BitVector(cells);
|
||||
bits = new detail::BitVector(cells);
|
||||
}
|
||||
|
||||
BasicBloomFilter::~BasicBloomFilter()
|
||||
|
@ -158,7 +158,7 @@ BasicBloomFilter::~BasicBloomFilter()
|
|||
|
||||
void BasicBloomFilter::Add(const zeek::detail::HashKey* key)
|
||||
{
|
||||
Hasher::digest_vector h = hasher->Hash(key);
|
||||
detail::Hasher::digest_vector h = hasher->Hash(key);
|
||||
|
||||
for ( size_t i = 0; i < h.size(); ++i )
|
||||
bits->Set(h[i] % bits->Size());
|
||||
|
@ -166,7 +166,7 @@ void BasicBloomFilter::Add(const zeek::detail::HashKey* key)
|
|||
|
||||
size_t BasicBloomFilter::Count(const zeek::detail::HashKey* key) const
|
||||
{
|
||||
Hasher::digest_vector h = hasher->Hash(key);
|
||||
detail::Hasher::digest_vector h = hasher->Hash(key);
|
||||
|
||||
for ( size_t i = 0; i < h.size(); ++i )
|
||||
{
|
||||
|
@ -185,7 +185,7 @@ broker::expected<broker::data> BasicBloomFilter::DoSerialize() const
|
|||
|
||||
bool BasicBloomFilter::DoUnserialize(const broker::data& data)
|
||||
{
|
||||
auto b = BitVector::Unserialize(data);
|
||||
auto b = detail::BitVector::Unserialize(data);
|
||||
if ( ! b )
|
||||
return false;
|
||||
|
||||
|
@ -198,11 +198,11 @@ CountingBloomFilter::CountingBloomFilter()
|
|||
cells = nullptr;
|
||||
}
|
||||
|
||||
CountingBloomFilter::CountingBloomFilter(const Hasher* hasher,
|
||||
size_t arg_cells, size_t width)
|
||||
CountingBloomFilter::CountingBloomFilter(const detail::Hasher* hasher,
|
||||
size_t arg_cells, size_t width)
|
||||
: BloomFilter(hasher)
|
||||
{
|
||||
cells = new CounterVector(width, arg_cells);
|
||||
cells = new detail::CounterVector(width, arg_cells);
|
||||
}
|
||||
|
||||
CountingBloomFilter::~CountingBloomFilter()
|
||||
|
@ -249,7 +249,7 @@ CountingBloomFilter* CountingBloomFilter::Clone() const
|
|||
CountingBloomFilter* copy = new CountingBloomFilter();
|
||||
|
||||
copy->hasher = hasher->Clone();
|
||||
copy->cells = new CounterVector(*cells);
|
||||
copy->cells = new detail::CounterVector(*cells);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ std::string CountingBloomFilter::InternalState() const
|
|||
// TODO: Use partitioning in add/count to allow for reusing CMS bounds.
|
||||
void CountingBloomFilter::Add(const zeek::detail::HashKey* key)
|
||||
{
|
||||
Hasher::digest_vector h = hasher->Hash(key);
|
||||
detail::Hasher::digest_vector h = hasher->Hash(key);
|
||||
|
||||
for ( size_t i = 0; i < h.size(); ++i )
|
||||
cells->Increment(h[i] % cells->Size());
|
||||
|
@ -270,14 +270,14 @@ void CountingBloomFilter::Add(const zeek::detail::HashKey* key)
|
|||
|
||||
size_t CountingBloomFilter::Count(const zeek::detail::HashKey* key) const
|
||||
{
|
||||
Hasher::digest_vector h = hasher->Hash(key);
|
||||
detail::Hasher::digest_vector h = hasher->Hash(key);
|
||||
|
||||
CounterVector::size_type min =
|
||||
std::numeric_limits<CounterVector::size_type>::max();
|
||||
detail::CounterVector::size_type min =
|
||||
std::numeric_limits<detail::CounterVector::size_type>::max();
|
||||
|
||||
for ( size_t i = 0; i < h.size(); ++i )
|
||||
{
|
||||
CounterVector::size_type cnt = cells->Count(h[i] % cells->Size());
|
||||
detail::CounterVector::size_type cnt = cells->Count(h[i] % cells->Size());
|
||||
if ( cnt < min )
|
||||
min = cnt;
|
||||
}
|
||||
|
@ -293,10 +293,12 @@ broker::expected<broker::data> CountingBloomFilter::DoSerialize() const
|
|||
|
||||
bool CountingBloomFilter::DoUnserialize(const broker::data& data)
|
||||
{
|
||||
auto c = CounterVector::Unserialize(data);
|
||||
auto c = detail::CounterVector::Unserialize(data);
|
||||
if ( ! c )
|
||||
return false;
|
||||
|
||||
cells = c.release();
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace zeek::probabilistic
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "zeek-config.h"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
@ -13,9 +15,9 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(CounterVector, zeek, probabilistic, detail);
|
||||
|
||||
class CounterVector;
|
||||
namespace zeek::probabilistic {
|
||||
|
||||
/** Types of derived BloomFilter classes. */
|
||||
enum BloomFilterType { Basic, Counting };
|
||||
|
@ -94,13 +96,13 @@ protected:
|
|||
*
|
||||
* @param hasher The hasher to use for this Bloom filter.
|
||||
*/
|
||||
explicit BloomFilter(const Hasher* hasher);
|
||||
explicit BloomFilter(const detail::Hasher* hasher);
|
||||
|
||||
virtual broker::expected<broker::data> DoSerialize() const = 0;
|
||||
virtual bool DoUnserialize(const broker::data& data) = 0;
|
||||
virtual BloomFilterType Type() const = 0;
|
||||
|
||||
const Hasher* hasher;
|
||||
const detail::Hasher* hasher;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -117,7 +119,7 @@ public:
|
|||
*
|
||||
* @param cells The number of cells.
|
||||
*/
|
||||
BasicBloomFilter(const Hasher* hasher, size_t cells);
|
||||
BasicBloomFilter(const detail::Hasher* hasher, size_t cells);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
|
@ -176,7 +178,7 @@ protected:
|
|||
{ return BloomFilterType::Basic; }
|
||||
|
||||
private:
|
||||
BitVector* bits;
|
||||
detail::BitVector* bits;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -194,7 +196,7 @@ public:
|
|||
*
|
||||
* @param width The maximal bit-width of counter values.
|
||||
*/
|
||||
CountingBloomFilter(const Hasher* hasher, size_t cells, size_t width);
|
||||
CountingBloomFilter(const detail::Hasher* hasher, size_t cells, size_t width);
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
|
@ -225,7 +227,19 @@ protected:
|
|||
{ return BloomFilterType::Counting; }
|
||||
|
||||
private:
|
||||
CounterVector* cells;
|
||||
detail::CounterVector* cells;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace zeek::probabilistic
|
||||
|
||||
namespace probabilistic {
|
||||
|
||||
using BloomFilterType [[deprecated("Remove in v4.1. Use zeek::probabilistic::BloomFilterType.")]] = zeek::probabilistic::BloomFilterType;
|
||||
constexpr auto Basic [[deprecated("Remove in v4.1. Use zeek::probabilistic::Basic.")]] = zeek::probabilistic::Basic;
|
||||
constexpr auto Counting [[deprecated("Remove in v4.1. Use zeek::probabilistic::Counting.")]] = zeek::probabilistic::Counting;
|
||||
|
||||
using BloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::BloomFilter.")]] = zeek::probabilistic::BloomFilter;
|
||||
using BasicBloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::BasicBloomFilter.")]] = zeek::probabilistic::BasicBloomFilter;
|
||||
using CountingBloomFilter [[deprecated("Remove in v4.1. Use zeek::probabilistic::CountingBloomFilter.")]] = zeek::probabilistic::CountingBloomFilter;
|
||||
|
||||
} // namespace probabilistic
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "Reporter.h"
|
||||
|
||||
using namespace probabilistic;
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
int CardinalityCounter::OptimalB(double error, double confidence) const
|
||||
{
|
||||
|
@ -279,14 +279,15 @@ std::unique_ptr<CardinalityCounter> CardinalityCounter::Unserialize(const broker
|
|||
/*
|
||||
* Find Last Set bit
|
||||
*/
|
||||
int
|
||||
CardinalityCounter::flsll(uint64_t mask)
|
||||
{
|
||||
int bit;
|
||||
int CardinalityCounter::flsll(uint64_t mask)
|
||||
{
|
||||
int bit;
|
||||
|
||||
if (mask == 0)
|
||||
return (0);
|
||||
for (bit = 1; mask != 1; bit++)
|
||||
mask = (uint64_t)mask >> 1;
|
||||
return (bit);
|
||||
}
|
||||
if (mask == 0)
|
||||
return (0);
|
||||
for (bit = 1; mask != 1; bit++)
|
||||
mask = (uint64_t)mask >> 1;
|
||||
return (bit);
|
||||
}
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
/**
|
||||
* A probabilistic cardinality counter using the HyperLogLog algorithm.
|
||||
|
@ -186,4 +186,8 @@ private:
|
|||
int p; // the log2 of m
|
||||
};
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
||||
namespace probabilistic {
|
||||
using CardinalityCounter [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::CardinalityCounter.")]] = zeek::probabilistic::detail::CardinalityCounter;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include "BitVector.h"
|
||||
#include "util.h"
|
||||
|
||||
using namespace probabilistic;
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
CounterVector::CounterVector(size_t arg_width, size_t cells)
|
||||
{
|
||||
|
@ -143,8 +143,6 @@ CounterVector& CounterVector::Merge(const CounterVector& other)
|
|||
return *this;
|
||||
}
|
||||
|
||||
namespace probabilistic {
|
||||
|
||||
CounterVector& CounterVector::operator|=(const CounterVector& other)
|
||||
{
|
||||
return Merge(other);
|
||||
|
@ -156,8 +154,6 @@ CounterVector operator|(const CounterVector& x, const CounterVector& y)
|
|||
return cv |= y;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint64_t CounterVector::Hash() const
|
||||
{
|
||||
return bits->Hash();
|
||||
|
@ -190,5 +186,4 @@ std::unique_ptr<CounterVector> CounterVector::Unserialize(const broker::data& da
|
|||
return cv;
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "zeek-config.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
@ -10,9 +12,9 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BitVector, zeek, probabilistic, detail);
|
||||
|
||||
class BitVector;
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
/**
|
||||
* A vector of counters, each of which has a fixed number of bits.
|
||||
|
@ -154,4 +156,8 @@ private:
|
|||
size_t width;
|
||||
};
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
||||
namespace probabilistic {
|
||||
using CounterVector [[deprecated("Remove in v4.1. Use zeek::probabilisitc::detail::CounterVector.")]] = zeek::probabilistic::detail::CounterVector;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
#include <broker/data.hh>
|
||||
|
||||
using namespace probabilistic;
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
Hasher::seed_t Hasher::MakeSeed(const void* data, size_t size)
|
||||
{
|
||||
|
@ -178,3 +178,5 @@ bool DoubleHasher::Equals(const Hasher* other) const
|
|||
const DoubleHasher* o = static_cast<const DoubleHasher*>(other);
|
||||
return h1 == o->h1 && h2 == o->h2;
|
||||
}
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
namespace broker { class data; }
|
||||
|
||||
namespace probabilistic {
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
/** Types of derived Hasher classes. */
|
||||
enum HasherType { Default, Double };
|
||||
|
@ -257,4 +257,17 @@ private:
|
|||
UHF h2;
|
||||
};
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
||||
namespace probabilistic {
|
||||
|
||||
using HasherType [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::HasherType.")]] = zeek::probabilistic::detail::HasherType;
|
||||
constexpr auto Default [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Default.")]] = zeek::probabilistic::detail::Default;
|
||||
constexpr auto Double [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Double.")]] = zeek::probabilistic::detail::Double;
|
||||
|
||||
using Hasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Hasher.")]] = zeek::probabilistic::detail::Hasher;
|
||||
using UHF [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::UHF.")]] = zeek::probabilistic::detail::UHF;
|
||||
using DefaultHasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::DefaultHasher.")]] = zeek::probabilistic::detail::DefaultHasher;
|
||||
using DoubleHasher [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::DoubleHasher.")]] = zeek::probabilistic::detail::DoubleHasher;
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "Reporter.h"
|
||||
#include "Dict.h"
|
||||
|
||||
namespace probabilistic {
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
static void topk_element_hash_delete_func(void* val)
|
||||
{
|
||||
|
@ -519,4 +519,5 @@ bool TopkVal::DoUnserialize(const broker::data& data)
|
|||
assert(i == numElements);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
ZEEK_FORWARD_DECLARE_NAMESPACED(CompositeHash, zeek::detail);
|
||||
|
||||
namespace probabilistic {
|
||||
namespace zeek::probabilistic::detail {
|
||||
|
||||
struct Element;
|
||||
|
||||
|
@ -172,4 +172,10 @@ private:
|
|||
bool pruned; // was this data structure pruned?
|
||||
};
|
||||
|
||||
};
|
||||
} // namespace zeek::probabilistic::detail
|
||||
|
||||
namespace probabilistic {
|
||||
using Element [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Element.")]] = zeek::probabilistic::detail::Element;
|
||||
using Bucket [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::Bucket.")]] = zeek::probabilistic::detail::Bucket;
|
||||
using TopkVal [[deprecated("Remove in v4.1. Use zeek::probabilistic::detail::TopkVal.")]] = zeek::probabilistic::detail::TopkVal;
|
||||
}
|
||||
|
|
|
@ -40,13 +40,13 @@ function bloomfilter_basic_init%(fp: double, capacity: count,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
size_t cells = BasicBloomFilter::M(fp, capacity);
|
||||
size_t optimal_k = BasicBloomFilter::K(cells, capacity);
|
||||
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
|
||||
name->Len());
|
||||
const Hasher* h = new DoubleHasher(optimal_k, seed);
|
||||
size_t cells = zeek::probabilistic::BasicBloomFilter::M(fp, capacity);
|
||||
size_t optimal_k = zeek::probabilistic::BasicBloomFilter::K(cells, capacity);
|
||||
zeek::probabilistic::detail::Hasher::seed_t seed =
|
||||
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
|
||||
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DoubleHasher(optimal_k, seed);
|
||||
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new BasicBloomFilter(h, cells));
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::BasicBloomFilter(h, cells));
|
||||
%}
|
||||
|
||||
## Creates a basic Bloom filter. This function serves as a low-level
|
||||
|
@ -82,11 +82,11 @@ function bloomfilter_basic_init2%(k: count, cells: count,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
|
||||
name->Len());
|
||||
const Hasher* h = new DoubleHasher(k, seed);
|
||||
zeek::probabilistic::detail::Hasher::seed_t seed =
|
||||
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
|
||||
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DoubleHasher(k, seed);
|
||||
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new BasicBloomFilter(h, cells));
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::BasicBloomFilter(h, cells));
|
||||
%}
|
||||
|
||||
## Creates a counting Bloom filter.
|
||||
|
@ -121,16 +121,16 @@ function bloomfilter_counting_init%(k: count, cells: count, max: count,
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
Hasher::seed_t seed = Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0,
|
||||
name->Len());
|
||||
zeek::probabilistic::detail::Hasher::seed_t seed =
|
||||
zeek::probabilistic::detail::Hasher::MakeSeed(name->Len() > 0 ? name->Bytes() : 0, name->Len());
|
||||
|
||||
const Hasher* h = new DefaultHasher(k, seed);
|
||||
const zeek::probabilistic::detail::Hasher* h = new zeek::probabilistic::detail::DefaultHasher(k, seed);
|
||||
|
||||
uint16_t width = 1;
|
||||
while ( max >>= 1 )
|
||||
++width;
|
||||
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new CountingBloomFilter(h, cells, width));
|
||||
return zeek::make_intrusive<zeek::BloomFilterVal>(new zeek::probabilistic::CountingBloomFilter(h, cells, width));
|
||||
%}
|
||||
|
||||
## Adds an element to a Bloom filter.
|
||||
|
@ -144,7 +144,7 @@ function bloomfilter_counting_init%(k: count, cells: count, max: count,
|
|||
## bloomfilter_merge
|
||||
function bloomfilter_add%(bf: opaque of bloomfilter, x: any%): any
|
||||
%{
|
||||
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
auto* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
|
||||
if ( ! bfv->Type() && ! bfv->Typify(x->GetType()) )
|
||||
reporter->Error("failed to set Bloom filter type");
|
||||
|
@ -171,7 +171,7 @@ function bloomfilter_add%(bf: opaque of bloomfilter, x: any%): any
|
|||
## bloomfilter_merge
|
||||
function bloomfilter_lookup%(bf: opaque of bloomfilter, x: any%): count
|
||||
%{
|
||||
const BloomFilterVal* bfv = static_cast<const BloomFilterVal*>(bf);
|
||||
const auto* bfv = static_cast<const BloomFilterVal*>(bf);
|
||||
|
||||
if ( ! bfv->Type() )
|
||||
return zeek::val_mgr->Count(0);
|
||||
|
@ -196,7 +196,7 @@ function bloomfilter_lookup%(bf: opaque of bloomfilter, x: any%): count
|
|||
## bloomfilter_merge
|
||||
function bloomfilter_clear%(bf: opaque of bloomfilter%): any
|
||||
%{
|
||||
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
auto* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
|
||||
if ( bfv->Type() ) // Untyped Bloom filters are already empty.
|
||||
bfv->Clear();
|
||||
|
@ -222,8 +222,8 @@ function bloomfilter_clear%(bf: opaque of bloomfilter%): any
|
|||
function bloomfilter_merge%(bf1: opaque of bloomfilter,
|
||||
bf2: opaque of bloomfilter%): opaque of bloomfilter
|
||||
%{
|
||||
const BloomFilterVal* bfv1 = static_cast<const BloomFilterVal*>(bf1);
|
||||
const BloomFilterVal* bfv2 = static_cast<const BloomFilterVal*>(bf2);
|
||||
const auto* bfv1 = static_cast<const BloomFilterVal*>(bf1);
|
||||
const auto* bfv2 = static_cast<const BloomFilterVal*>(bf2);
|
||||
|
||||
if ( bfv1->Type() && // any one 0 is ok here
|
||||
bfv2->Type() &&
|
||||
|
@ -244,6 +244,6 @@ function bloomfilter_merge%(bf1: opaque of bloomfilter,
|
|||
## Returns: a string with a representation of a Bloom filter's internal state.
|
||||
function bloomfilter_internal_state%(bf: opaque of bloomfilter%): string
|
||||
%{
|
||||
BloomFilterVal* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
auto* bfv = static_cast<BloomFilterVal*>(bf);
|
||||
return zeek::make_intrusive<zeek::StringVal>(bfv->InternalState());
|
||||
%}
|
||||
|
|
|
@ -22,7 +22,7 @@ module GLOBAL;
|
|||
## hll_cardinality_copy
|
||||
function hll_cardinality_init%(err: double, confidence: double%): opaque of cardinality
|
||||
%{
|
||||
CardinalityCounter* c = new CardinalityCounter(err, confidence);
|
||||
auto* c = new zeek::probabilistic::detail::CardinalityCounter(err, confidence);
|
||||
auto cv = zeek::make_intrusive<zeek::CardinalityVal>(c);
|
||||
|
||||
return cv;
|
||||
|
@ -40,7 +40,7 @@ function hll_cardinality_init%(err: double, confidence: double%): opaque of card
|
|||
## hll_cardinality_init hll_cardinality_copy
|
||||
function hll_cardinality_add%(handle: opaque of cardinality, elem: any%): bool
|
||||
%{
|
||||
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
|
||||
auto* cv = static_cast<CardinalityVal*>(handle);
|
||||
|
||||
if ( ! cv->Type() && ! cv->Typify(elem->GetType()) )
|
||||
{
|
||||
|
@ -73,8 +73,8 @@ function hll_cardinality_add%(handle: opaque of cardinality, elem: any%): bool
|
|||
## hll_cardinality_init hll_cardinality_copy
|
||||
function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: opaque of cardinality%): bool
|
||||
%{
|
||||
CardinalityVal* v1 = static_cast<CardinalityVal*>(handle1);
|
||||
CardinalityVal* v2 = static_cast<CardinalityVal*>(handle2);
|
||||
auto* v1 = static_cast<CardinalityVal*>(handle1);
|
||||
auto* v2 = static_cast<CardinalityVal*>(handle2);
|
||||
|
||||
if ( (v1->Type() != v2->Type()) && // both 0 is ok
|
||||
(v1->Type() != nullptr) && // any one 0 also is ok
|
||||
|
@ -85,8 +85,8 @@ function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: op
|
|||
return zeek::val_mgr->False();
|
||||
}
|
||||
|
||||
CardinalityCounter* h1 = v1->Get();
|
||||
CardinalityCounter* h2 = v2->Get();
|
||||
zeek::probabilistic::detail::CardinalityCounter* h1 = v1->Get();
|
||||
zeek::probabilistic::detail::CardinalityCounter* h2 = v2->Get();
|
||||
|
||||
bool res = h1->Merge(h2);
|
||||
if ( ! res )
|
||||
|
@ -108,8 +108,8 @@ function hll_cardinality_merge_into%(handle1: opaque of cardinality, handle2: op
|
|||
## hll_cardinality_init hll_cardinality_copy
|
||||
function hll_cardinality_estimate%(handle: opaque of cardinality%): double
|
||||
%{
|
||||
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
|
||||
CardinalityCounter* h = cv->Get();
|
||||
auto* cv = static_cast<CardinalityVal*>(handle);
|
||||
zeek::probabilistic::detail::CardinalityCounter* h = cv->Get();
|
||||
|
||||
double estimate = h->Size();
|
||||
|
||||
|
@ -126,9 +126,9 @@ function hll_cardinality_estimate%(handle: opaque of cardinality%): double
|
|||
## hll_cardinality_init
|
||||
function hll_cardinality_copy%(handle: opaque of cardinality%): opaque of cardinality
|
||||
%{
|
||||
CardinalityVal* cv = static_cast<CardinalityVal*>(handle);
|
||||
CardinalityCounter* h = cv->Get();
|
||||
CardinalityCounter* h2 = new CardinalityCounter(*h);
|
||||
auto* cv = static_cast<CardinalityVal*>(handle);
|
||||
zeek::probabilistic::detail::CardinalityCounter* h = cv->Get();
|
||||
auto* h2 = new zeek::probabilistic::detail::CardinalityCounter(*h);
|
||||
auto out = zeek::make_intrusive<zeek::CardinalityVal>(h2);
|
||||
|
||||
return out;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
## topk_size topk_sum topk_merge topk_merge_prune
|
||||
function topk_init%(size: count%): opaque of topk
|
||||
%{
|
||||
auto v = zeek::make_intrusive<probabilistic::TopkVal>(size);
|
||||
auto v = zeek::make_intrusive<zeek::probabilistic::detail::TopkVal>(size);
|
||||
return v;
|
||||
%}
|
||||
|
||||
|
@ -33,7 +33,7 @@ function topk_init%(size: count%): opaque of topk
|
|||
function topk_add%(handle: opaque of topk, value: any%): any
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
h->Encountered({zeek::NewRef{}, value});
|
||||
|
||||
return nullptr;
|
||||
|
@ -52,7 +52,7 @@ function topk_add%(handle: opaque of topk, value: any%): any
|
|||
function topk_get_top%(handle: opaque of topk, k: count%): any_vec
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
return h->GetTopK(k);
|
||||
%}
|
||||
|
||||
|
@ -73,7 +73,7 @@ function topk_get_top%(handle: opaque of topk, k: count%): any_vec
|
|||
function topk_count%(handle: opaque of topk, value: any%): count
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
return zeek::val_mgr->Count(h->GetCount(value));
|
||||
%}
|
||||
|
||||
|
@ -93,7 +93,7 @@ function topk_count%(handle: opaque of topk, value: any%): count
|
|||
function topk_epsilon%(handle: opaque of topk, value: any%): count
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
return zeek::val_mgr->Count(h->GetEpsilon(value));
|
||||
%}
|
||||
|
||||
|
@ -112,7 +112,7 @@ function topk_epsilon%(handle: opaque of topk, value: any%): count
|
|||
function topk_size%(handle: opaque of topk%): count
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
return zeek::val_mgr->Count(h->GetSize());
|
||||
%}
|
||||
|
||||
|
@ -132,7 +132,7 @@ function topk_size%(handle: opaque of topk%): count
|
|||
function topk_sum%(handle: opaque of topk%): count
|
||||
%{
|
||||
assert(handle);
|
||||
probabilistic::TopkVal* h = (probabilistic::TopkVal*) handle;
|
||||
auto* h = (zeek::probabilistic::detail::TopkVal*) handle;
|
||||
return zeek::val_mgr->Count(h->GetSum());
|
||||
%}
|
||||
|
||||
|
@ -152,8 +152,8 @@ function topk_merge%(handle1: opaque of topk, handle2: opaque of topk%): any
|
|||
assert(handle1);
|
||||
assert(handle2);
|
||||
|
||||
probabilistic::TopkVal* h1 = (probabilistic::TopkVal*) handle1;
|
||||
probabilistic::TopkVal* h2 = (probabilistic::TopkVal*) handle2;
|
||||
auto* h1 = (zeek::probabilistic::detail::TopkVal*) handle1;
|
||||
auto* h2 = (zeek::probabilistic::detail::TopkVal*) handle2;
|
||||
|
||||
h1->Merge(h2);
|
||||
|
||||
|
@ -178,8 +178,8 @@ function topk_merge_prune%(handle1: opaque of topk, handle2: opaque of topk%): a
|
|||
assert(handle1);
|
||||
assert(handle2);
|
||||
|
||||
probabilistic::TopkVal* h1 = (probabilistic::TopkVal*) handle1;
|
||||
probabilistic::TopkVal* h2 = (probabilistic::TopkVal*) handle2;
|
||||
auto* h1 = (zeek::probabilistic::detail::TopkVal*) handle1;
|
||||
auto* h2 = (zeek::probabilistic::detail::TopkVal*) handle2;
|
||||
|
||||
h1->Merge(h2, true);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue