OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // A library to manage RLZ information for access-points shared | 5 // A library to manage RLZ information for access-points shared |
6 // across different client applications. | 6 // across different client applications. |
7 // | 7 // |
8 // All functions return true on success and false on error. | 8 // All functions return true on success and false on error. |
9 // This implemenation is thread safe. | 9 // This implemenation is thread safe. |
10 | 10 |
11 | 11 |
12 #ifndef RLZ_LIB_RLZ_LIB_H_ | 12 #ifndef RLZ_LIB_RLZ_LIB_H_ |
13 #define RLZ_LIB_RLZ_LIB_H_ | 13 #define RLZ_LIB_RLZ_LIB_H_ |
14 | 14 |
15 #include <stddef.h> | 15 #include <stddef.h> |
16 #include <stdio.h> | 16 #include <stdio.h> |
17 #include <string> | 17 #include <string> |
18 | 18 |
19 #include "build/build_config.h" | 19 #include "build/build_config.h" |
20 | 20 |
| 21 #include "rlz/lib/rlz_api.h" |
21 #include "rlz/lib/rlz_enums.h" | 22 #include "rlz/lib/rlz_enums.h" |
22 | 23 |
23 #if defined(OS_WIN) | |
24 #define RLZ_LIB_API __cdecl | |
25 #else | |
26 #define RLZ_LIB_API | |
27 #endif | |
28 | |
29 // Define one of | 24 // Define one of |
30 // + RLZ_NETWORK_IMPLEMENTATION_WIN_INET: Uses win inet to send financial pings. | 25 // + RLZ_NETWORK_IMPLEMENTATION_WIN_INET: Uses win inet to send financial pings. |
31 // + RLZ_NETWORK_IMPLEMENTATION_CHROME_NET: Uses chrome's network stack to send | 26 // + RLZ_NETWORK_IMPLEMENTATION_CHROME_NET: Uses chrome's network stack to send |
32 // financial pings. rlz_lib::SetURLRequestContext() must be called before | 27 // financial pings. rlz_lib::SetURLRequestContext() must be called before |
33 // any calls to SendFinancialPing(). | 28 // any calls to SendFinancialPing(). |
34 #if defined(RLZ_NETWORK_IMPLEMENTATION_WIN_INET) && \ | 29 #if defined(RLZ_NETWORK_IMPLEMENTATION_WIN_INET) && \ |
35 defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) | 30 defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
36 #error Exactly one of RLZ_NETWORK_IMPLEMENTATION_WIN_INET and \ | 31 #error Exactly one of RLZ_NETWORK_IMPLEMENTATION_WIN_INET and \ |
37 RLZ_NETWORK_IMPLEMENTATION_CHROME_NET should be defined. | 32 RLZ_NETWORK_IMPLEMENTATION_CHROME_NET should be defined. |
38 #endif | 33 #endif |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // Functions which do not access registry will be marked with "no restrictions". | 65 // Functions which do not access registry will be marked with "no restrictions". |
71 | 66 |
72 class ScopedRlzValueStoreLock; | 67 class ScopedRlzValueStoreLock; |
73 | 68 |
74 // The maximum length of an access points RLZ in bytes. | 69 // The maximum length of an access points RLZ in bytes. |
75 const size_t kMaxRlzLength = 64; | 70 const size_t kMaxRlzLength = 64; |
76 // The maximum length of an access points RLZ in bytes. | 71 // The maximum length of an access points RLZ in bytes. |
77 const size_t kMaxDccLength = 128; | 72 const size_t kMaxDccLength = 128; |
78 // The maximum length of a CGI string in bytes. | 73 // The maximum length of a CGI string in bytes. |
79 const size_t kMaxCgiLength = 2048; | 74 const size_t kMaxCgiLength = 2048; |
80 // The maximum length of a ping response we will parse in bytes. If the response | |
81 // is bigger, please break it up into separate calls. | |
82 const size_t kMaxPingResponseLength = 0x4000; // 16K | |
83 | 75 |
84 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) | 76 #if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
85 // Set the URLRequestContextGetter used by SendFinancialPing(). The IO message | 77 // Set the URLRequestContextGetter used by SendFinancialPing(). The IO message |
86 // loop returned by this context will be used for the IO done by | 78 // loop returned by this context will be used for the IO done by |
87 // SendFinancialPing(). | 79 // SendFinancialPing(). |
88 bool RLZ_LIB_API SetURLRequestContext(net::URLRequestContextGetter* context); | 80 bool RLZ_LIB_API SetURLRequestContext(net::URLRequestContextGetter* context); |
89 #endif | 81 #endif |
90 | 82 |
91 // RLZ storage functions. | 83 // RLZ storage functions. |
92 | 84 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 bool RLZ_LIB_API FormFinancialPingRequest(Product product, | 162 bool RLZ_LIB_API FormFinancialPingRequest(Product product, |
171 const AccessPoint* access_points, | 163 const AccessPoint* access_points, |
172 const char* product_signature, | 164 const char* product_signature, |
173 const char* product_brand, | 165 const char* product_brand, |
174 const char* product_id, | 166 const char* product_id, |
175 const char* product_lang, | 167 const char* product_lang, |
176 bool exclude_machine_id, | 168 bool exclude_machine_id, |
177 char* request, | 169 char* request, |
178 size_t request_buffer_size); | 170 size_t request_buffer_size); |
179 | 171 |
180 // Checks if a ping response is valid - ie. it has a checksum line which | |
181 // is the CRC-32 checksum of the message uptil the checksum. If | |
182 // checksum_idx is not NULL, it will get the index of the checksum, i.e. - | |
183 // the effective end of the message. | |
184 // Access: No restrictions. | |
185 bool RLZ_LIB_API IsPingResponseValid(const char* response, | |
186 int* checksum_idx); | |
187 | |
188 | |
189 // Complex helpers built on top of other functions. | 172 // Complex helpers built on top of other functions. |
190 | 173 |
191 // Parses the responses from the financial server and updates product state | 174 // Parses the responses from the financial server and updates product state |
192 // and access point RLZ's in registry. Like ParsePingResponse(), but also | 175 // and access point RLZ's in registry. Like ParsePingResponse(), but also |
193 // updates the last ping time. | 176 // updates the last ping time. |
194 // Access: HKCU write. | 177 // Access: HKCU write. |
195 bool RLZ_LIB_API ParseFinancialPingResponse(Product product, | 178 bool RLZ_LIB_API ParseFinancialPingResponse(Product product, |
196 const char* response); | 179 const char* response); |
197 | 180 |
198 // Send the ping with RLZs and events to the PSO server. | 181 // Send the ping with RLZs and events to the PSO server. |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 | 304 |
322 static const std::string& GetBrand(); | 305 static const std::string& GetBrand(); |
323 | 306 |
324 private: | 307 private: |
325 ScopedRlzValueStoreLock* lock_; | 308 ScopedRlzValueStoreLock* lock_; |
326 }; | 309 }; |
327 | 310 |
328 } // namespace rlz_lib | 311 } // namespace rlz_lib |
329 | 312 |
330 #endif // RLZ_LIB_RLZ_LIB_H_ | 313 #endif // RLZ_LIB_RLZ_LIB_H_ |
OLD | NEW |