1
1
mirror of http://git.sesse.net/plocate synced 2025-10-06 02:12:50 +02:00
Files
plocate/access_rx_cache.h

32 lines
744 B
C
Raw Normal View History

2020-10-16 00:36:20 +02:00
#ifndef _ACCESS_RX_CACHE_H
#define _ACCESS_RX_CACHE_H 1
#include <functional>
#include <map>
#include <mutex>
#include <string>
#include <unordered_map>
#include <vector>
class IOUringEngine;
class AccessRXCache {
public:
AccessRXCache(IOUringEngine *engine, bool check_visibility)
: engine(engine), check_visibility(check_visibility) {}
2020-10-16 00:36:20 +02:00
void check_access(const char *filename, bool allow_async, std::function<void(bool)> cb);
private:
std::unordered_map<std::string, bool> cache;
struct PendingStat {
std::string filename;
std::function<void(bool)> cb;
};
std::map<std::string, std::vector<PendingStat>> pending_stats;
IOUringEngine *engine;
std::mutex mu;
bool check_visibility;
2020-10-16 00:36:20 +02:00
};
#endif // !defined(_ACCESS_RX_CACHE_H)