paul@6 | 1 | #pragma once |
paul@6 | 2 | |
paul@6 | 3 | #include "flexpage.h" |
paul@6 | 4 | |
paul@6 | 5 | /* A file accessor, providing flexpages corresponding to file regions. */ |
paul@6 | 6 | |
paul@6 | 7 | class Accessor |
paul@6 | 8 | { |
paul@6 | 9 | protected: |
paul@6 | 10 | offset_t _size; |
paul@6 | 11 | |
paul@56 | 12 | /* Data transfer helper methods. */ |
paul@56 | 13 | |
paul@56 | 14 | virtual void fill_populated(Flexpage *flexpage); |
paul@56 | 15 | |
paul@56 | 16 | virtual void flush_populated(Flexpage *flexpage); |
paul@56 | 17 | |
paul@6 | 18 | public: |
paul@6 | 19 | fileid_t fileid; |
paul@6 | 20 | |
paul@6 | 21 | explicit Accessor(fileid_t fileid, offset_t size=0); |
paul@6 | 22 | |
paul@79 | 23 | virtual ~Accessor() |
paul@79 | 24 | { |
paul@79 | 25 | } |
paul@79 | 26 | |
paul@6 | 27 | virtual offset_t get_size(); |
paul@6 | 28 | |
paul@53 | 29 | virtual void set_size(offset_t size); |
paul@53 | 30 | |
paul@6 | 31 | virtual void close(); |
paul@6 | 32 | |
paul@6 | 33 | virtual void open(); |
paul@6 | 34 | |
paul@6 | 35 | /* Data transfer methods. */ |
paul@6 | 36 | |
paul@56 | 37 | virtual void fill(Flexpage *flexpage); |
paul@6 | 38 | |
paul@56 | 39 | virtual void flush(Flexpage *flexpage); |
paul@6 | 40 | }; |
paul@6 | 41 | |
paul@6 | 42 | // vim: tabstop=4 expandtab shiftwidth=4 |