15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Functions exported by the RLZ DLL.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "rlz/lib/rlz_lib.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define RLZ_DLL_EXPORT extern "C" __declspec(dllexport)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool RecordProductEvent(rlz_lib::Product product,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       rlz_lib::AccessPoint point,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       rlz_lib::Event event_id) {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::RecordProductEvent(product, point, event_id);
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool GetProductEventsAsCgi(rlz_lib::Product product,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          char* unescaped_cgi,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          size_t unescaped_cgi_size) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::GetProductEventsAsCgi(product, unescaped_cgi,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        unescaped_cgi_size);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool ClearAllProductEvents(rlz_lib::Product product) {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::ClearAllProductEvents(product);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool ClearProductEvent(rlz_lib::Product product,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      rlz_lib::AccessPoint point,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      rlz_lib::Event event_id) {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::ClearProductEvent(product, point, event_id);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool GetAccessPointRlz(rlz_lib::AccessPoint point,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      char* rlz,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      size_t rlz_size) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::GetAccessPointRlz(point, rlz, rlz_size);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool SetAccessPointRlz(rlz_lib::AccessPoint point,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* new_rlz) {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::SetAccessPointRlz(point, new_rlz);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool CreateMachineState() {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::CreateMachineState();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool SetMachineDealCode(const char* dcc) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::SetMachineDealCode(dcc);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool GetMachineDealCodeAsCgi(char* cgi, size_t cgi_size) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::GetMachineDealCodeAsCgi(cgi, cgi_size);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool GetMachineDealCode2(char* dcc, size_t dcc_size) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::GetMachineDealCode(dcc, dcc_size);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool GetPingParams(rlz_lib::Product product,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const rlz_lib::AccessPoint* access_points,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  char* unescaped_cgi,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  size_t unescaped_cgi_size) {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::GetPingParams(product, access_points, unescaped_cgi,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                unescaped_cgi_size);
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool ParsePingResponse(rlz_lib::Product product,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* response) {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::ParsePingResponse(product, response);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool IsPingResponseValid(const char* response,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        int* checksum_idx) {
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::IsPingResponseValid(response, checksum_idx);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool SetMachineDealCodeFromPingResponse(const char* response) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::SetMachineDealCodeFromPingResponse(response);
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool SendFinancialPing(rlz_lib::Product product,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const rlz_lib::AccessPoint* access_points,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* product_signature,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* product_brand,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* product_id,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const char* product_lang,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      bool exclude_machine_id) {
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::SendFinancialPing(product, access_points, product_signature,
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      product_brand, product_id, product_lang, exclude_machine_id);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT bool SendFinancialPingNoDelay(
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rlz_lib::Product product,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const rlz_lib::AccessPoint* access_points,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char* product_signature,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char* product_brand,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char* product_id,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char* product_lang,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool exclude_machine_id) {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::SendFinancialPing(product, access_points, product_signature,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      product_brand, product_id, product_lang, exclude_machine_id, true);
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RLZ_DLL_EXPORT void ClearProductState(
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rlz_lib::Product product, const rlz_lib::AccessPoint* access_points) {
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rlz_lib::ClearProductState(product, access_points);
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
109