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