blob: 34fd2f9879e270dc0e3ea2b07cba51bcb9783f1b [file] [log] [blame]
// Copyright (c) 2011 The Chromium OS 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 IMAGE_BURNER_IMAGE_BURNER_UTILS_H_
#define IMAGE_BURNER_IMAGE_BURNER_UTILS_H_
#include <unistd.h>
#include <string>
#include <base/files/file.h>
#include <base/callback.h>
#include <base/macros.h>
#include "image-burner/image_burner_utils_interfaces.h"
namespace imageburn {
class BurnWriter : public FileSystemWriter {
public:
using FstatCallback =
base::RepeatingCallback<int(int, base::stat_wrapper_t*)>;
BurnWriter();
BurnWriter(const BurnWriter&) = delete;
BurnWriter& operator=(const BurnWriter&) = delete;
~BurnWriter() override = default;
bool Open(const char* path) override;
bool Close() override;
int Write(const char* data_block, int data_size) override;
const base::File& file() const { return file_; }
void set_fstat_for_test(const FstatCallback& fstat_callback) {
fstat_callback_ = fstat_callback;
}
private:
base::File file_;
int writes_count_{0};
FstatCallback fstat_callback_;
};
class BurnReader : public FileSystemReader {
public:
BurnReader();
BurnReader(const BurnReader&) = delete;
BurnReader& operator=(const BurnReader&) = delete;
~BurnReader() override = default;
bool Open(const char* path) override;
bool Close() override;
int Read(char* data_block, int data_size) override;
int64_t GetSize() override;
private:
base::File file_;
};
class BurnPathGetter : public PathGetter {
public:
BurnPathGetter() = default;
BurnPathGetter(const BurnPathGetter&) = delete;
BurnPathGetter& operator=(const BurnPathGetter&) = delete;
~BurnPathGetter() override = default;
bool GetRealPath(const char* path, std::string* real_path) override;
bool GetRootPath(std::string* path) override;
};
} // namespace imageburn
#endif // IMAGE_BURNER_IMAGE_BURNER_UTILS_H_