1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/access_map.h Sat Jan 23 00:01:22 2021 +0100
1.3 @@ -0,0 +1,35 @@
1.4 +#pragma once
1.5 +
1.6 +#include "flexpage.h"
1.7 +#include "page_owner.h"
1.8 +#include "pages.h"
1.9 +
1.10 +#include <map>
1.11 +#include <mutex>
1.12 +
1.13 +/* Collection types. */
1.14 +
1.15 +typedef std::map<offset_t, Flexpage *> _AccessMap;
1.16 +typedef std::pair<offset_t, Flexpage *> _AccessMapEntry;
1.17 +
1.18 +/* A mapping from file positions to flexpages. */
1.19 +
1.20 +class AccessMap
1.21 +{
1.22 +protected:
1.23 + _AccessMap _flexpages;
1.24 + std::mutex _lock;
1.25 +
1.26 +public:
1.27 + Flexpage *find(offset_t position);
1.28 +
1.29 + void insert(Flexpage *flexpage);
1.30 +
1.31 + bool remove(PageOwner *owner, Flexpage *flexpage);
1.32 +
1.33 + void purge(PageOwner *owner, Pages *pages);
1.34 +
1.35 + void flush_all(offset_t start, offset_t size, PageOwner *owner, Pages *pages);
1.36 +};
1.37 +
1.38 +// vim: tabstop=4 expandtab shiftwidth=4