diff options
Diffstat (limited to 'client/cpp/encoder_demo.cc')
-rw-r--r-- | client/cpp/encoder_demo.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/client/cpp/encoder_demo.cc b/client/cpp/encoder_demo.cc new file mode 100644 index 0000000..1c278cd --- /dev/null +++ b/client/cpp/encoder_demo.cc @@ -0,0 +1,56 @@ +// Copyright 2014 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Sample code for encoder.cc. +// +// This is the code in README.md. It's here to make sure it actually builds +// and runs. + +#include <cassert> // assert + +#include "encoder.h" +#include "openssl_hash_impl.h" +#include "unix_kernel_rand_impl.h" + +int main(int argc, char** argv) { + // Suppress unused variable warnings + (void) argc; + (void) argv; + + FILE* fp = fopen("/dev/urandom", "r"); + rappor::UnixKernelRand irr_rand(fp); + + rappor::Deps deps(rappor::Md5, "client-secret", rappor::HmacSha256, + irr_rand); + rappor::Params params(32, // num_bits (k) + 2, // num_hashes (h) + 128, // num_cohorts (m) + 0.25, // probability f for PRR + 0.75, // probability p for IRR + 0.5); // probability q for IRR + + const char* encoder_id = "metric-name"; + rappor::Encoder encoder(encoder_id, params, deps); + + // Now use it to encode values. The 'out' value can be sent over the + // network. + rappor::Bits out; + assert(encoder.EncodeString("foo", &out)); // returns false on error + printf("'foo' encoded with RAPPOR: %0x, cohort %d\n", out, encoder.cohort()); + + // Raw bits + assert(encoder.EncodeBits(0x123, &out)); // returns false on error + printf("0x123 encoded with RAPPOR: %0x, cohort %d\n", out, encoder.cohort()); +} + |