1 #pragma once 2 3 #include "flexpage.h" 4 #include "page_owner.h" 5 #include "pages.h" 6 7 #include <map> 8 #include <mutex> 9 10 /* Collection types. */ 11 12 typedef std::map<offset_t, Flexpage *> _AccessMap; 13 typedef std::pair<offset_t, Flexpage *> _AccessMapEntry; 14 15 /* A mapping from file positions to flexpages. */ 16 17 class AccessMap 18 { 19 protected: 20 _AccessMap _flexpages; 21 std::mutex _lock; 22 23 public: 24 Flexpage *find(offset_t position); 25 26 void insert(Flexpage *flexpage); 27 28 bool remove(PageOwner *owner, Flexpage *flexpage); 29 30 void purge(PageOwner *owner, Pages *pages); 31 32 void flush_all(offset_t start, offset_t size, PageOwner *owner, Pages *pages); 33 }; 34 35 // vim: tabstop=4 expandtab shiftwidth=4