From 61a30125e5d015bfab383ccfa4dd67420bd3dbd6 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Sun, 24 Jul 2016 23:09:37 +0200 Subject: [PATCH] WIP: Fs --- src/uvw.hpp | 1 + src/uvw/fs.hpp | 62 +++++++++++++++++++++++++++++++++++++++++++++ src/uvw/request.hpp | 1 + 3 files changed, 64 insertions(+) create mode 100644 src/uvw/fs.hpp diff --git a/src/uvw.hpp b/src/uvw.hpp index 83d9c71b..45073681 100644 --- a/src/uvw.hpp +++ b/src/uvw.hpp @@ -1,6 +1,7 @@ #include "uvw/async.hpp" #include "uvw/check.hpp" #include "uvw/event.hpp" +#include "uvw/fs.hpp" #include "uvw/fs_poll.hpp" #include "uvw/idle.hpp" #include "uvw/loop.hpp" diff --git a/src/uvw/fs.hpp b/src/uvw/fs.hpp new file mode 100644 index 00000000..ede656f0 --- /dev/null +++ b/src/uvw/fs.hpp @@ -0,0 +1,62 @@ +#pragma once + + +#include +#include +#include +#include "event.hpp" +#include "request.hpp" +#include "util.hpp" + + +namespace uvw { + + +class Fs final: public Request { + explicit Fs(std::shared_ptr ref) + : Request{RequestType{}, std::move(ref)} + { } + +public: + template + static std::shared_ptr create(Args&&... args) { + return std::shared_ptr{new Fs{std::forward(args)...}}; + } + + ~Fs() { + uv_fs_req_cleanup(get()); + } + + // TODO uv_fs_close + // TODO uv_fs_open + // TODO uv_fs_read + // TODO uv_fs_unlink + // TODO uv_fs_write + // TODO uv_fs_mkdir + // TODO uv_fs_mkdtemp + // TODO uv_fs_rmdir + // TODO uv_fs_scandir + // TODO uv_fs_scandir_next + // TODO uv_fs_stat + // TODO uv_fs_fstat + // TODO uv_fs_lstat + // TODO uv_fs_rename + // TODO uv_fs_fsync + // TODO uv_fs_fdatasync + // TODO uv_fs_ftruncate + // TODO uv_fs_sendfile + // TODO uv_fs_access + // TODO uv_fs_chmod + // TODO uv_fs_fchmod + // TODO uv_fs_utime + // TODO uv_fs_futime + // TODO uv_fs_link + // TODO uv_fs_symlink + // TODO uv_fs_readlink + // TODO uv_fs_realpath + // TODO uv_fs_chown + // TODO uv_fs_fchown +}; + + +} diff --git a/src/uvw/request.hpp b/src/uvw/request.hpp index 0127c38b..e31573e6 100644 --- a/src/uvw/request.hpp +++ b/src/uvw/request.hpp @@ -15,6 +15,7 @@ template struct RequestType; template<> struct RequestType { }; +template<> struct RequestType { }; template<> struct RequestType { }; template<> struct RequestType { }; template<> struct RequestType { };