blob: e610c58703c97d8d96ce4a1478df5b5b59995d11 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_SYSTEM_LOG_RECORDER_SYSTEM_LOG_RECORDER_H_
#define SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_SYSTEM_LOG_RECORDER_SYSTEM_LOG_RECORDER_H_
#include <lib/sys/cpp/service_directory.h>
#include "lib/zx/time.h"
#include "src/developer/forensics/feedback_data/archive_accessor_ptr.h"
#include "src/developer/forensics/feedback_data/system_log_recorder/encoding/encoder.h"
#include "src/developer/forensics/feedback_data/system_log_recorder/log_message_store.h"
#include "src/developer/forensics/feedback_data/system_log_recorder/writer.h"
namespace forensics {
namespace feedback_data {
namespace system_log_recorder {
class SystemLogRecorder {
public:
struct WriteParameters {
zx::duration period;
size_t max_write_size_bytes;
std::string logs_dir;
size_t max_num_files;
size_t total_log_size_bytes;
};
SystemLogRecorder(async_dispatcher_t* archive_dispatcher, async_dispatcher_t* write_dispatcher,
std::shared_ptr<sys::ServiceDirectory> services,
WriteParameters write_parameters, std::unique_ptr<Encoder> encoder);
void Start();
private:
void PeriodicWriteTask();
async_dispatcher_t* write_dispatcher_;
const zx::duration write_period_;
LogMessageStore store_;
ArchiveAccessor archive_accessor_;
SystemLogWriter writer_;
};
} // namespace system_log_recorder
} // namespace feedback_data
} // namespace forensics
#endif // SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_SYSTEM_LOG_RECORDER_SYSTEM_LOG_RECORDER_H_