1.1 --- a/libfsserver/include/fsserver/file_paging.h Sun Jul 18 00:47:14 2021 +0200
1.2 +++ b/libfsserver/include/fsserver/file_paging.h Sat Jul 24 18:55:21 2021 +0200
1.3 @@ -1,5 +1,5 @@
1.4 /*
1.5 - * General functionality supporting file paging.
1.6 + * A registry of objects supporting paging for files.
1.7 *
1.8 * Copyright (C) 2021 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 @@ -24,10 +24,11 @@
1.11 #include <map>
1.12 #include <mutex>
1.13
1.14 -#include <fsserver/accessor.h>
1.15 +#include <fsserver/file_opening.h>
1.16 #include <fsserver/notification.h>
1.17 +#include <fsserver/page_mapper.h>
1.18 #include <fsserver/pager.h>
1.19 -#include <fsserver/page_mapper.h>
1.20 +#include <fsserver/pages.h>
1.21
1.22
1.23
1.24 @@ -44,26 +45,9 @@
1.25 {
1.26 protected:
1.27 Pages *_pages;
1.28 -
1.29 FileMapping _mappers;
1.30 std::mutex _lock;
1.31
1.32 - /* Pager initialisation methods. */
1.33 -
1.34 - long get_mapper(const char *path, flags_t flags, fileid_t fileid, PageMapper **mapper);
1.35 -
1.36 - long get_pager(const char *path, flags_t flags, Pager **pager);
1.37 -
1.38 - /* Configurable methods. */
1.39 -
1.40 - virtual map_flags_t get_flags(flags_t flags);
1.41 -
1.42 - /* Configurable methods requiring implementation. */
1.43 -
1.44 - virtual fileid_t get_fileid(const char *path, flags_t flags) = 0;
1.45 -
1.46 - virtual long make_accessor(const char *path, flags_t flags, fileid_t fileid, Accessor **accessor) = 0;
1.47 -
1.48 /* Mapper registry access. */
1.49
1.50 PageMapper *get(fileid_t fileid);
1.51 @@ -72,9 +56,19 @@
1.52
1.53 void set(fileid_t fileid, PageMapper *mapper);
1.54
1.55 + /* Pager initialisation methods. */
1.56 +
1.57 + map_flags_t get_flags(flags_t flags);
1.58 +
1.59 public:
1.60 explicit FilePaging(Pages *pages);
1.61
1.62 + /* Pager initialisation methods. */
1.63 +
1.64 + long get_mapper(FileOpening *opening, const char *path, flags_t flags, fileid_t fileid, PageMapper **mapper);
1.65 +
1.66 + long get_pager(FileOpening *opening, const char *path, flags_t flags, Pager **pager);
1.67 +
1.68 /* Methods for the pager. */
1.69
1.70 void detach_pager(fileid_t fileid, PageMapper *mapper);