146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#ifndef COMPONENTS_METRICS_METRICS_LOG_UPLOADER_H_ 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define COMPONENTS_METRICS_METRICS_LOG_UPLOADER_H_ 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include <string> 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/basictypes.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/callback.h" 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/macros.h" 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace metrics { 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// MetricsLogUploader is an abstract base class for uploading UMA logs on behalf 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// of MetricsService. 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class MetricsLogUploader { 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public: 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Constructs the uploader that will upload logs to the specified |server_url| 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // with the given |mime_type|. The |on_upload_complete| callback will be 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // called with the HTTP response code of the upload or with -1 on an error. 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) MetricsLogUploader(const std::string& server_url, 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& mime_type, 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const base::Callback<void(int)>& on_upload_complete); 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual ~MetricsLogUploader(); 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Uploads a log with the specified |compressed_log_data| and |log_hash|. 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // |log_hash| is expected to be the hex-encoded SHA1 hash of the log data 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // before compression. 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool UploadLog(const std::string& compressed_log_data, 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& log_hash) = 0; 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) protected: 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string server_url_; 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string mime_type_; 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const base::Callback<void(int)> on_upload_complete_; 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private: 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MetricsLogUploader); 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}; 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace metrics 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif // COMPONENTS_METRICS_METRICS_LOG_UPLOADER_H_ 46