blob: 90e4dc533ac8410346897e8e0de0e9720851505a [file] [edit]
// Copyright 2018 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 COBALT_SRC_LIB_UTIL_POSIX_FILE_SYSTEM_H_
#define COBALT_SRC_LIB_UTIL_POSIX_FILE_SYSTEM_H_
#include <string>
#include <vector>
#include "src/lib/util/file_system.h"
namespace cobalt::util {
// PosixFileSystem implements FileSystem for posix compliant systems.
class PosixFileSystem : public FileSystem {
public:
// Disable copy and assignment
explicit PosixFileSystem() = default;
PosixFileSystem(PosixFileSystem const &) = delete;
PosixFileSystem &operator=(PosixFileSystem const &) = delete;
bool MakeDirectory(const std::string &directory) override;
lib::statusor::StatusOr<std::vector<std::string>> ListFiles(
const std::string &directory) override;
bool Delete(const std::string &file) override;
lib::statusor::StatusOr<size_t> FileSize(const std::string &file) override;
bool FileExists(const std::string &file) override;
bool Rename(const std::string &from, const std::string &to) override;
using FileSystem::NewProtoInputStream;
lib::statusor::StatusOr<ProtoInputStreamPtr> NewProtoInputStream(const std::string &file,
int block_size) override;
using FileSystem::NewProtoOutputStream;
lib::statusor::StatusOr<ProtoOutputStreamPtr> NewProtoOutputStream(const std::string &file,
bool append,
int block_size) override;
};
} // namespace cobalt::util
#endif // COBALT_SRC_LIB_UTIL_POSIX_FILE_SYSTEM_H_