aboutsummaryrefslogtreecommitdiff
path: root/client/cpp/encoder_demo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/cpp/encoder_demo.cc')
-rw-r--r--client/cpp/encoder_demo.cc56
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());
+}
+