1 #pragma once 2 3 #include "accessing.h" 4 #include "file_pager.h" 5 #include "opener_context.h" 6 #include "pager.h" 7 #include "paging.h" 8 #include "pages.h" 9 10 /* Support for providing access to files. */ 11 12 class Opener 13 { 14 protected: 15 Accessing *_accessing; 16 Paging *_paging; 17 Pages *_pages; 18 19 /* Convenience methods. */ 20 21 Accessor *get_accessor(fileid_t fileid); 22 23 PageMapper *get_mapper(Accessor *accessor); 24 25 /* Configurable methods. */ 26 27 virtual fileid_t get_fileid(const char *path) = 0; 28 29 virtual Accessor *make_accessor(fileid_t fileid) = 0; 30 31 public: 32 explicit Opener(Accessing *accessing, Paging *paging, Pages *pages); 33 34 OpenerContext *context(); 35 36 FilePager *open(const char *path); 37 }; 38 39 // vim: tabstop=4 expandtab shiftwidth=4