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