1 #pragma once 2 3 #include <map> 4 #include <mutex> 5 6 #include "accessor.h" 7 #include "page_mapper.h" 8 9 10 11 /* Mapping type from accessors to page mappers. */ 12 13 typedef std::map<Accessor *, PageMapper *> AccessorMapping; 14 typedef std::pair<Accessor *, PageMapper *> AccessorMappingEntry; 15 16 17 18 /* A registry of mappers for accessors. */ 19 20 class Paging 21 { 22 protected: 23 AccessorMapping _mappers; 24 std::mutex _lock; 25 26 public: 27 bool reserve(Accessor *accessor); 28 29 PageMapper *get(Accessor *accessor); 30 31 void set(Accessor *accessor, PageMapper *mapper); 32 }; 33 34 // vim: tabstop=4 expandtab shiftwidth=4