Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1328)

Unified Diff: components/rappor/bloom_filter.cc

Issue 1058333002: Multi-dimension rappor metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup and add xml support Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/rappor/bloom_filter.h ('k') | components/rappor/bloom_filter_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/rappor/bloom_filter.cc
diff --git a/components/rappor/bloom_filter.cc b/components/rappor/bloom_filter.cc
index 9ad8f3ca0ce9d68191e8896229dbf3d44c2e1fcc..506ff54ba2aaa9c516e4e01d52948375db36e97e 100644
--- a/components/rappor/bloom_filter.cc
+++ b/components/rappor/bloom_filter.cc
@@ -9,38 +9,29 @@
namespace rappor {
-BloomFilter::BloomFilter(uint32_t bytes_size,
- uint32_t hash_function_count,
- uint32_t hash_seed_offset)
- : bytes_(bytes_size),
- hash_function_count_(hash_function_count),
- hash_seed_offset_(hash_seed_offset) {
- DCHECK_GT(bytes_size, 0u);
-}
-
-BloomFilter::~BloomFilter() {}
-
-void BloomFilter::SetString(const std::string& str) {
- for (size_t i = 0; i < bytes_.size(); ++i) {
- bytes_[i] = 0;
+namespace internal {
+
+void SetBloomBits(uint32_t bytes_size,
+ uint32_t hash_function_count,
+ uint32_t hash_seed_offset,
+ const std::string& str,
+ ByteVector* output) {
+ DCHECK_GE(output->size(), bytes_size);
+ for (size_t i = 0; i < bytes_size; ++i) {
+ (*output)[i] = 0;
}
- for (size_t i = 0; i < hash_function_count_; ++i) {
+ for (size_t i = 0; i < hash_function_count; ++i) {
// Using CityHash here because we have support for it in Dremel. Many hash
// functions, such as MD5, SHA1, or Murmur, would probably also work.
uint32_t index =
- CityHash64WithSeed(str.data(), str.size(), hash_seed_offset_ + i);
+ CityHash64WithSeed(str.data(), str.size(), hash_seed_offset + i);
// Note that the "bytes" are uint8_t, so they are always 8-bits.
- uint32_t byte_index = (index / 8) % bytes_.size();
+ uint32_t byte_index = (index / 8) % bytes_size;
uint32_t bit_index = index % 8;
- bytes_[byte_index] |= 1 << bit_index;
+ (*output)[byte_index] |= 1 << bit_index;
}
}
-void BloomFilter::SetBytesForTesting(const ByteVector& bytes) {
- DCHECK_EQ(bytes_.size(), bytes.size());
- for (size_t i = 0; i < bytes_.size(); ++i) {
- bytes_[i] = bytes[i];
- }
-}
+} // namespace internal
} // namespace rappor
« no previous file with comments | « components/rappor/bloom_filter.h ('k') | components/rappor/bloom_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698