15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_DEBUG_LOG_WRITER_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_DEBUG_LOG_WRITER_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/basictypes.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/callback_forward.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/files/file_path.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace chromeos { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DebugLogWriter { 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Called once StoreDebugLogs is complete. Takes two parameters: 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // - log_path: where the log file was saved in the case of success; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // - succeeded: was the log file saved successfully. 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) typedef base::Callback<void(const base::FilePath& log_path, bool succeeded)> 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) StoreLogsCallback; 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Stores debug logs in either .tgz or .tar archive (depending on value of 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |should_compress|) on the |fileshelf|. The file is created on the 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // worker pool, then writing to it is triggered from the UI thread, and 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // finally it is closed (on success) or deleted (on failure) on the worker 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // pool, prior to calling |callback|. 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void StoreLogs(const base::FilePath& fileshelf, 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool should_compress, 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const StoreLogsCallback& callback); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Stores both system and user logs in .tgz archive on the |fileshelf|. 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |sequence_token_name| defines named sequence for task running on 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // blocking pool (file operations). 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void StoreCombinedLogs(const base::FilePath& fileshelf, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& sequence_token_name, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const StoreLogsCallback& callback); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DebugLogWriter(); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DebugLogWriter); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace chromeos 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_SYSTEM_LOGS_DEBUG_LOG_WRITER_H_ 46