1.1 --- a/libfsserver/include/fsserver/file_paging.h Sat Sep 18 18:51:43 2021 +0200
1.2 +++ b/libfsserver/include/fsserver/file_paging.h Mon Sep 20 01:16:59 2021 +0200
1.3 @@ -21,57 +21,44 @@
1.4
1.5 #pragma once
1.6
1.7 -#include <map>
1.8 -#include <mutex>
1.9 -
1.10 -#include <fsserver/accountable.h>
1.11 +#include <fsserver/directory_provider.h>
1.12 #include <fsserver/file_opening.h>
1.13 #include <fsserver/file_provider.h>
1.14 +#include <fsserver/file_registry.h>
1.15 #include <fsserver/pager.h>
1.16 #include <fsserver/pages.h>
1.17
1.18
1.19
1.20 -/* Mapping type from file identifiers to page mappers. */
1.21 -
1.22 -typedef std::map<fileid_t, Accountable *> FileMapping;
1.23 -typedef std::pair<fileid_t, Accountable *> FileMappingEntry;
1.24 -
1.25 -
1.26 -
1.27 /* A registry of filesystem objects. */
1.28
1.29 -class FilePaging
1.30 +class FilePaging : public FileRegistry
1.31 {
1.32 protected:
1.33 Pages *_pages;
1.34 - FileMapping _providers;
1.35 - std::mutex _lock;
1.36
1.37 - /* Filesystem object access. */
1.38 -
1.39 - Accountable *get(fileid_t fileid);
1.40 -
1.41 - void remove(fileid_t fileid, Accountable *obj);
1.42 -
1.43 - void set(fileid_t fileid, Accountable *obj);
1.44 -
1.45 - /* Pager initialisation methods. */
1.46 + /* Resource initialisation methods. */
1.47
1.48 map_flags_t get_flags(flags_t flags);
1.49
1.50 - long get_provider(FileOpening *opening, const char *path, flags_t flags, fileid_t fileid, FileProvider **file_provider);
1.51 + long get_directory_provider(FileOpening *opening, const char *path,
1.52 + flags_t flags, fileid_t fileid,
1.53 + DirectoryProvider **directory_provider);
1.54 +
1.55 + long get_file_provider(FileOpening *opening, const char *path,
1.56 + flags_t flags, fileid_t fileid,
1.57 + FileProvider **file_provider);
1.58
1.59 public:
1.60 explicit FilePaging(Pages *pages);
1.61
1.62 - /* Pager initialisation methods. */
1.63 -
1.64 - long get_pager(FileOpening *opening, const char *path, flags_t flags, fileid_t fileid, Pager **pager);
1.65 + /* Resource initialisation methods. */
1.66
1.67 - /* Methods for the pager. */
1.68 + long get_directory(FileOpening *opening, const char *path, flags_t flags,
1.69 + fileid_t fileid, Resource **resource);
1.70
1.71 - void detach_pager(fileid_t fileid, Accountable *mapper);
1.72 + long get_pager(FileOpening *opening, const char *path, flags_t flags,
1.73 + fileid_t fileid, Pager **pager);
1.74 };
1.75
1.76 // vim: tabstop=4 expandtab shiftwidth=4