blob: 9032ce9e1657e7ac946883a553d4b8bb5f303ceb [file] [log] [blame]
// 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 <memory>
#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:
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_