| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COBALT_ALGORITHMS_RAPPOR_RAPPOR_CONFIG_HELPER_H_ |
| #define COBALT_ALGORITHMS_RAPPOR_RAPPOR_CONFIG_HELPER_H_ |
| |
| #include <string> |
| |
| #include "config/metric_definition.pb.h" |
| #include "config/report_definition.pb.h" |
| |
| namespace cobalt { |
| namespace rappor { |
| |
| class RapporConfigHelper { |
| public: |
| // Sentinel value returned by ProbBitFlip() when the ReportDefinition |
| // does not contain the necessary settings to determine a value |
| // for the probability of flipping a bit. |
| static const float kInvalidProbability; // = -1 |
| |
| // We do not support RAPPOR's PRR in Cobalt. |
| static const float kProbRR; // = 0 |
| |
| // For String RAPPOR's number of hashes, always use h = 2. |
| static const size_t kNumHashes = 2; |
| |
| // Returns the probability of flipping a bit in the RAPPOR encoding, |
| // or kInvalidProbability. |
| // |
| // |metric_debug_name| should be the fully qualified name of the containing |
| // MetricDefinition (including the customer and project). This will be |
| // used to form a logged error message in case of an error. |
| static float ProbBitFlip(const ReportDefinition& report_definition, |
| const std::string& metric_debug_name); |
| |
| // Returns the number of categories to use for the Basic RAPPOR encoding. |
| // This is the same as the number of bits. |
| static size_t BasicRapporNumCategories( |
| const MetricDefinition& metric_definition); |
| |
| // Returns the number of cohorts to use for the String RAPPOR encoding. |
| static size_t StringRapporNumCohorts( |
| const ReportDefinition& report_definition); |
| |
| // Returns the number of bits to use for the String RAPPOR encoding. |
| static size_t StringRapporNumBloomBits( |
| const ReportDefinition& report_definition); |
| }; |
| |
| } // namespace rappor |
| } // namespace cobalt |
| |
| #endif // COBALT_ALGORITHMS_RAPPOR_RAPPOR_CONFIG_HELPER_H_ |