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