SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
FileSystem.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_fs_Local_FileSystem_h
7 #define swcdb_fs_Local_FileSystem_h
8 
9 #include "swcdb/fs/FileSystem.h"
10 
11 #if defined(SWC_FS_LOCAL_USE_IO_URING)
13 #endif
14 
15 
16 namespace SWC { namespace FS {
17 
18 
20 
21 
22 class FileSystemLocal final : public FileSystem {
23  public:
24 
26 
28  FileSystemLocal(const FileSystemLocal&) = delete;
31 
32  virtual ~FileSystemLocal() noexcept;
33 
34  #if defined(SWC_FS_LOCAL_USE_IO_URING)
35  void stop() override;
36  #endif
37 
38  Type SWC_CONST_FUNC get_type() const noexcept override;
39 
40  std::string to_string() const override;
41 
42 
43  bool exists(int& err, const std::string& name) override;
44 
45  void remove(int& err, const std::string& name) override;
46 
47  size_t length(int& err, const std::string& name) override;
48 
49  void mkdirs(int& err, const std::string& name) override;
50 
51  void readdir(int& err, const std::string& name,
52  DirentList& results) override;
53 
54  void rmdir(int& err, const std::string& name) override;
55 
56  void rename(int& err, const std::string& from,
57  const std::string& to) override;
58 
59  void write(int& err, SmartFd::Ptr& smartfd,
60  uint8_t replication, StaticBuffer& buffer) override {
61  default_write(err, smartfd, replication, buffer);
62  }
63 
64  void read(int& err, const std::string& name, StaticBuffer* dst) override {
65  default_read(err, name, dst);
66  }
67 
68  #if defined(SWC_FS_LOCAL_USE_IO_URING)
69  void read(Callback::ReadAllCb_t&& cb, const std::string& name) override;
70  #endif
71 
72  void combi_pread(int& err, SmartFd::Ptr& smartfd,
73  uint64_t offset, uint32_t amount,
74  StaticBuffer* dst) override {
75  default_combi_pread(err, smartfd, offset, amount, dst);
76  }
77 
78  void create(int& err, SmartFd::Ptr& smartfd, uint8_t replication) override;
79 
80  void open(int& err, SmartFd::Ptr& smartfd) override;
81 
82  size_t read(int& err, SmartFd::Ptr& smartfd,
83  void *dst, size_t amount) override;
84 
85  size_t read(int& err, SmartFd::Ptr& smartfd,
86  StaticBuffer* dst, size_t amount) override {
87  return default_read(err, smartfd, dst, amount);
88  }
89 
90  size_t pread(int& err, SmartFd::Ptr& smartfd,
91  uint64_t offset, void *dst, size_t amount) override;
92 
93  size_t pread(int& err, SmartFd::Ptr& smartfd, uint64_t offset,
94  StaticBuffer* dst, size_t amount) override {
95  return default_pread(err, smartfd, offset, dst, amount);
96  }
97 
98  size_t append(int& err, SmartFd::Ptr& smartfd,
99  StaticBuffer& buffer, Flags flags) override;
100 
101  void seek(int& err, SmartFd::Ptr& smartfd, size_t offset) override;
102 
103  void flush(int& err, SmartFd::Ptr& smartfd) override;
104 
105  void sync(int& err, SmartFd::Ptr& smartfd) override;
106 
107  void close(int& err, SmartFd::Ptr& smartfd) override;
108 
109  private:
111 
112  #if defined(SWC_FS_LOCAL_USE_IO_URING)
113  Comm::IoContextPtr m_io;
114  #endif
115 
116 };
117 
118 
119 }}
120 
121 
122 
123 extern "C" {
125 }
126 
127 #ifdef SWC_IMPL_SOURCE
129 #endif
130 
131 
132 #endif // swcdb_fs_Local_FileSystem_h
SWC::FS::FileSystemLocal::~FileSystemLocal
virtual ~FileSystemLocal() noexcept
Definition: FileSystem.cc:104
SWC::FS::FileSystemLocal::open
void open(int &err, SmartFd::Ptr &smartfd) override
Definition: FileSystem.cc:485
SWC::FS::FileSystem::Ptr
std::shared_ptr< FileSystem > Ptr
Definition: FileSystem.h:104
FileSystem.h
SWC::FS::FileSystemLocal::flush
void flush(int &err, SmartFd::Ptr &smartfd) override
Definition: FileSystem.cc:656
SWC::FS::FileSystemLocal::seek
void seek(int &err, SmartFd::Ptr &smartfd, size_t offset) override
Definition: FileSystem.cc:640
SWC::FS::FileSystem::default_read
void default_read(int &err, const std::string &name, StaticBuffer *dst)
Definition: FileSystem.cc:257
SWC::FS::FileSystemLocal::length
size_t length(int &err, const std::string &name) override
Definition: FileSystem.cc:150
SWC::FS::Type
Type
Definition: FileSystem.h:20
SWC::FS::FileSystemLocal::to_string
std::string to_string() const override
Definition: FileSystem.cc:117
SWC::FS::Flags
Flags
Definition: FileSystem.h:41
SWC::FS::FileSystem::default_combi_pread
void default_combi_pread(int &err, SmartFd::Ptr &smartfd, uint64_t offset, uint32_t amount, StaticBuffer *dst)
Definition: FileSystem.cc:304
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::FS::FileSystem
Definition: FileSystem.h:101
IoContext.h
SWC::FS::FileSystemLocal
Definition: FileSystem.h:22
SWC::FS::Configurables
Definition: FileSystem.h:48
SWC::FS::FileSystemLocal::FileSystemLocal
FileSystemLocal(Configurables *config)
Definition: FileSystem.cc:86
SWC_CONST_FUNC
#define SWC_CONST_FUNC
Definition: Compat.h:107
SWC::FS::FileSystemLocal::m_directio
bool m_directio
Definition: FileSystem.h:110
fs_make_new_local
SWC::FS::FileSystem * fs_make_new_local(SWC::FS::Configurables *config)
Definition: FileSystem.cc:696
SWC::FS::FileSystemLocal::remove
void remove(int &err, const std::string &name) override
Definition: FileSystem.cc:140
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::Buffer
Definition: Buffer.h:18
SWC::FS::FileSystemLocal::operator=
FileSystemLocal & operator=(const FileSystemLocal &)=delete
SWC::FS::FileSystemLocal::rmdir
void rmdir(int &err, const std::string &name) override
Definition: FileSystem.cc:273
SWC::FS::FileSystemLocal::sync
void sync(int &err, SmartFd::Ptr &smartfd) override
Definition: FileSystem.cc:660
SWC::FS::FileSystemLocal::mkdirs
void mkdirs(int &err, const std::string &name) override
Definition: FileSystem.cc:191
SWC::FS::Callback::ReadAllCb_t
std::function< void(int, StaticBuffer &&)> ReadAllCb_t
Definition: Callbacks.h:30
SWC::FS::FileSystemLocal::append
size_t append(int &err, SmartFd::Ptr &smartfd, StaticBuffer &buffer, Flags flags) override
Definition: FileSystem.cc:619
SWC::FS::FileSystemLocal::get_type
Type SWC_CONST_FUNC get_type() const noexcept override
Definition: FileSystem.cc:113
SWC::FS::FileSystemLocal::pread
size_t pread(int &err, SmartFd::Ptr &smartfd, uint64_t offset, StaticBuffer *dst, size_t amount) override
Definition: FileSystem.h:93
SWC::FS::apply_local
Configurables * apply_local()
SWC::FS::SmartFd
Smart FileDescriptor.
Definition: SmartFd.h:34
SWC::FS::FileSystemLocal::create
void create(int &err, SmartFd::Ptr &smartfd, uint8_t replication) override
Definition: FileSystem.cc:443
SWC::Core::Vector< Dirent >
SWC::FS::FileSystem::default_write
void default_write(int &err, SmartFd::Ptr &smartfd, uint8_t replication, StaticBuffer &buffer)
Definition: FileSystem.cc:226
SWC::Condition::from
Comp from(const char **buf, uint32_t *remainp, uint8_t extended=0x00) noexcept
Definition: Comparators.cc:15
SWC::FS::SmartFd::Ptr
std::shared_ptr< SmartFd > Ptr
Definition: SmartFd.h:37
SWC::FS::FileSystemLocal::pread
size_t pread(int &err, SmartFd::Ptr &smartfd, uint64_t offset, void *dst, size_t amount) override
Definition: FileSystem.cc:582
SWC::FS::FileSystemLocal::write
void write(int &err, SmartFd::Ptr &smartfd, uint8_t replication, StaticBuffer &buffer) override
Definition: FileSystem.h:59
SWC::FS::FileSystemLocal::readdir
void readdir(int &err, const std::string &name, DirentList &results) override
Definition: FileSystem.cc:200
SWC::FS::FileSystem::stop
virtual void stop()
Definition: FileSystem.cc:115
SWC::FS::FileSystemLocal::FileSystemLocal
FileSystemLocal(FileSystemLocal &&)=delete
SWC::FS::FileSystemLocal::rename
void rename(int &err, const std::string &from, const std::string &to) override
Definition: FileSystem.cc:284
SWC::FS::FileSystemLocal::FileSystemLocal
FileSystemLocal(const FileSystemLocal &)=delete
SWC::FS::FileSystemLocal::close
void close(int &err, SmartFd::Ptr &smartfd) override
Definition: FileSystem.cc:668
SWC::FS::FileSystemLocal::exists
bool exists(int &err, const std::string &name) override
Definition: FileSystem.cc:127
SWC::FS::FileSystemLocal::combi_pread
void combi_pread(int &err, SmartFd::Ptr &smartfd, uint64_t offset, uint32_t amount, StaticBuffer *dst) override
Definition: FileSystem.h:72
SWC::FS::FileSystemLocal::read
void read(int &err, const std::string &name, StaticBuffer *dst) override
Definition: FileSystem.h:64
flags
uint8_t flags
Flags.
Definition: Header.h:55
SWC::FS::FileSystemLocal::operator=
FileSystemLocal & operator=(FileSystemLocal &&)=delete
SWC::FS::FileSystem::default_pread
size_t default_pread(int &err, SmartFd::Ptr &smartfd, uint64_t offset, StaticBuffer *dst, size_t amount)
Definition: FileSystem.cc:365
FileSystem.cc
SWC::FS::FileSystemLocal::read
size_t read(int &err, SmartFd::Ptr &smartfd, StaticBuffer *dst, size_t amount) override
Definition: FileSystem.h:85