XRootD
Loading...
Searching...
No Matches
XrdPfcFPurgeState.hh
Go to the documentation of this file.
1#ifndef __XRDPFC_FPURGESTATE_HH__
2#define __XRDPFC_FPURGESTATE_HH__
3
4#include <ctime>
5#include <list>
6#include <map>
7#include <string>
8
9#include <sys/stat.h>
10
11class XrdOss;
12
13namespace XrdPfc {
14
15class Info;
16class FsTraversal;
17
18//==============================================================================
19// FPurgeState
20//==============================================================================
21
23{
24public:
25 struct PurgeCandidate // unknown meaning, "file that is candidate for purge", PurgeCandidate would be better.
26 {
27 std::string path;
28 long long nStBlocks;
29 time_t time;
30
31 PurgeCandidate(const std::string &dname, const char *fname, long long n, time_t t) :
32 path(dname + fname), nStBlocks(n), time(t)
33 {}
34 };
35
36 using list_t = std::list<PurgeCandidate>;
37 using list_i = list_t::iterator;
38 using map_t = std::multimap<time_t, PurgeCandidate>;
39 using map_i = map_t::iterator;
40
41private:
42 XrdOss &m_oss;
43
44 long long m_nStBlocksReq;
45 long long m_nStBlocksAccum;
46 long long m_nStBlocksTotal;
47 time_t m_tMinTimeStamp;
48 time_t m_tMinUVKeepTimeStamp;
49
50 static const char *m_traceID;
51
52 list_t m_flist; // list of files to be removed unconditionally
53 map_t m_fmap; // map of files that are purge candidates
54
55public:
56 FPurgeState(long long iNBytesReq, XrdOss &oss);
57
58 map_t &refMap() { return m_fmap; }
59 list_t &refList() { return m_flist; }
60
61 void setMinTime(time_t min_time) { m_tMinTimeStamp = min_time; }
62 time_t getMinTime() const { return m_tMinTimeStamp; }
63 void setUVKeepMinTime(time_t min_time) { m_tMinUVKeepTimeStamp = min_time; }
64 long long getNStBlocksTotal() const { return m_nStBlocksTotal; }
65 long long getNBytesTotal() const { return 512ll * m_nStBlocksTotal; }
66
68
69 void CheckFile(const FsTraversal &fst, const char *fname, time_t atime, struct stat &fstat);
70
72 bool TraverseNamespace(const char *root_path);
73};
74
75} // namespace XrdPfc
76
77#endif
#define fstat(a, b)
Definition XrdPosix.hh:62
#define stat(a, b)
Definition XrdPosix.hh:101
long long getNStBlocksTotal() const
time_t getMinTime() const
void CheckFile(const FsTraversal &fst, const char *fname, time_t atime, struct stat &fstat)
void ProcessDirAndRecurse(FsTraversal &fst)
void setUVKeepMinTime(time_t min_time)
std::list< PurgeCandidate > list_t
std::multimap< time_t, PurgeCandidate > map_t
FPurgeState(long long iNBytesReq, XrdOss &oss)
Constructor.
void setMinTime(time_t min_time)
bool TraverseNamespace(const char *root_path)
long long getNBytesTotal() const
list_t::iterator list_i
PurgeCandidate(const std::string &dname, const char *fname, long long n, time_t t)