|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
#include <memory> |
|
#include <string> |
|
#include <vector> |
|
|
|
#include "arrow/filesystem/filesystem.h" |
|
|
|
namespace arrow { |
|
namespace internal { |
|
|
|
class Uri; |
|
|
|
} |
|
|
|
namespace fs { |
|
|
|
|
|
struct ARROW_EXPORT LocalFileSystemOptions { |
|
static constexpr int32_t kDefaultDirectoryReadahead = 16; |
|
static constexpr int32_t kDefaultFileInfoBatchSize = 1000; |
|
|
|
|
|
|
|
bool use_mmap = false; |
|
|
|
|
|
|
|
|
|
|
|
int32_t directory_readahead = kDefaultDirectoryReadahead; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int32_t file_info_batch_size = kDefaultFileInfoBatchSize; |
|
|
|
|
|
static LocalFileSystemOptions Defaults(); |
|
|
|
bool Equals(const LocalFileSystemOptions& other) const; |
|
|
|
static Result<LocalFileSystemOptions> FromUri(const ::arrow::util::Uri& uri, |
|
std::string* out_path); |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ARROW_EXPORT LocalFileSystem : public FileSystem { |
|
public: |
|
explicit LocalFileSystem(const io::IOContext& = io::default_io_context()); |
|
explicit LocalFileSystem(const LocalFileSystemOptions&, |
|
const io::IOContext& = io::default_io_context()); |
|
~LocalFileSystem() override; |
|
|
|
std::string type_name() const override { return "local"; } |
|
|
|
Result<std::string> NormalizePath(std::string path) override; |
|
Result<std::string> PathFromUri(const std::string& uri_string) const override; |
|
Result<std::string> MakeUri(std::string path) const override; |
|
|
|
bool Equals(const FileSystem& other) const override; |
|
|
|
LocalFileSystemOptions options() const { return options_; } |
|
|
|
|
|
using FileSystem::CreateDir; |
|
using FileSystem::DeleteDirContents; |
|
using FileSystem::GetFileInfo; |
|
using FileSystem::OpenAppendStream; |
|
using FileSystem::OpenOutputStream; |
|
|
|
|
|
Result<FileInfo> GetFileInfo(const std::string& path) override; |
|
Result<std::vector<FileInfo>> GetFileInfo(const FileSelector& select) override; |
|
FileInfoGenerator GetFileInfoGenerator(const FileSelector& select) override; |
|
|
|
Status CreateDir(const std::string& path, bool recursive) override; |
|
|
|
Status DeleteDir(const std::string& path) override; |
|
Status DeleteDirContents(const std::string& path, bool missing_dir_ok) override; |
|
Status DeleteRootDirContents() override; |
|
|
|
Status DeleteFile(const std::string& path) override; |
|
|
|
Status Move(const std::string& src, const std::string& dest) override; |
|
|
|
Status CopyFile(const std::string& src, const std::string& dest) override; |
|
|
|
Result<std::shared_ptr<io::InputStream>> OpenInputStream( |
|
const std::string& path) override; |
|
Result<std::shared_ptr<io::RandomAccessFile>> OpenInputFile( |
|
const std::string& path) override; |
|
Result<std::shared_ptr<io::OutputStream>> OpenOutputStream( |
|
const std::string& path, |
|
const std::shared_ptr<const KeyValueMetadata>& metadata) override; |
|
Result<std::shared_ptr<io::OutputStream>> OpenAppendStream( |
|
const std::string& path, |
|
const std::shared_ptr<const KeyValueMetadata>& metadata) override; |
|
|
|
protected: |
|
LocalFileSystemOptions options_; |
|
}; |
|
|
|
} |
|
} |
|
|