mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-15 08:15:38 +07:00
vfs worker access
This commit is contained in:
@@ -25,9 +25,6 @@ namespace e2d
|
|||||||
|
|
||||||
class vfs final : public module<vfs> {
|
class vfs final : public module<vfs> {
|
||||||
public:
|
public:
|
||||||
vfs();
|
|
||||||
~vfs() noexcept final;
|
|
||||||
|
|
||||||
class file_source : private e2d::noncopyable {
|
class file_source : private e2d::noncopyable {
|
||||||
public:
|
public:
|
||||||
virtual ~file_source() noexcept = default;
|
virtual ~file_source() noexcept = default;
|
||||||
@@ -38,6 +35,12 @@ namespace e2d
|
|||||||
virtual bool trace(str_view path, filesystem::trace_func func) const = 0;
|
virtual bool trace(str_view path, filesystem::trace_func func) const = 0;
|
||||||
};
|
};
|
||||||
using file_source_uptr = std::unique_ptr<file_source>;
|
using file_source_uptr = std::unique_ptr<file_source>;
|
||||||
|
public:
|
||||||
|
vfs();
|
||||||
|
~vfs() noexcept final;
|
||||||
|
|
||||||
|
stdex::jobber& worker() noexcept;
|
||||||
|
const stdex::jobber& worker() const noexcept;
|
||||||
|
|
||||||
template < typename T, typename... Args >
|
template < typename T, typename... Args >
|
||||||
bool register_scheme(str_view scheme, Args&&... args);
|
bool register_scheme(str_view scheme, Args&&... args);
|
||||||
|
|||||||
@@ -108,9 +108,18 @@ namespace e2d
|
|||||||
|
|
||||||
vfs::vfs()
|
vfs::vfs()
|
||||||
: state_(new state()){}
|
: state_(new state()){}
|
||||||
|
|
||||||
vfs::~vfs() noexcept = default;
|
vfs::~vfs() noexcept = default;
|
||||||
|
|
||||||
|
stdex::jobber& vfs::worker() noexcept {
|
||||||
|
std::lock_guard<std::mutex> guard(state_->mutex);
|
||||||
|
return state_->worker;
|
||||||
|
}
|
||||||
|
|
||||||
|
const stdex::jobber& vfs::worker() const noexcept {
|
||||||
|
std::lock_guard<std::mutex> guard(state_->mutex);
|
||||||
|
return state_->worker;
|
||||||
|
}
|
||||||
|
|
||||||
bool vfs::register_scheme(str_view scheme, file_source_uptr source) {
|
bool vfs::register_scheme(str_view scheme, file_source_uptr source) {
|
||||||
std::lock_guard<std::mutex> guard(state_->mutex);
|
std::lock_guard<std::mutex> guard(state_->mutex);
|
||||||
return (source && source->valid())
|
return (source && source->valid())
|
||||||
|
|||||||
Reference in New Issue
Block a user