File indexing completed on 2026-01-08 10:33:39
0001 #ifndef __XRDPFC_DIRSTATEBASE_HH__
0002 #define __XRDPFC_DIRSTATEBASE_HH__
0003
0004 #include <XrdPfc/XrdPfcStats.hh>
0005 #include <ctime>
0006 #include <string>
0007
0008 namespace XrdPfc
0009 {
0010
0011
0012
0013
0014
0015 struct DirUsage
0016 {
0017 time_t m_LastOpenTime = 0;
0018 time_t m_LastCloseTime = 0;
0019 long long m_StBlocks = 0;
0020 int m_NFilesOpen = 0;
0021 int m_NFiles = 0;
0022 int m_NDirectories = 0;
0023
0024 DirUsage() = default;
0025
0026 DirUsage(const DirUsage& s) = default;
0027
0028 DirUsage& operator=(const DirUsage&) = default;
0029
0030 DirUsage(const DirUsage &a, const DirUsage &b) :
0031 m_LastOpenTime (std::max(a.m_LastOpenTime, b.m_LastOpenTime)),
0032 m_LastCloseTime (std::max(a.m_LastCloseTime, b.m_LastCloseTime)),
0033 m_StBlocks (a.m_StBlocks + b.m_StBlocks),
0034 m_NFilesOpen (a.m_NFilesOpen + b.m_NFilesOpen),
0035 m_NFiles (a.m_NFiles + b.m_NFiles),
0036 m_NDirectories (a.m_NDirectories + b.m_NDirectories)
0037 {}
0038
0039 void update_from_stats(const DirStats& s)
0040 {
0041 m_StBlocks += s.m_StBlocksAdded - s.m_StBlocksRemoved;
0042 m_NFilesOpen += s.m_NFilesOpened - s.m_NFilesClosed;
0043 m_NFiles += s.m_NFilesCreated - s.m_NFilesRemoved;
0044 m_NDirectories += s.m_NDirectoriesCreated - s.m_NDirectoriesRemoved;
0045 }
0046
0047 void update_last_times(const DirUsage& u)
0048 {
0049 m_LastOpenTime = std::max(m_LastOpenTime, u.m_LastOpenTime);
0050 m_LastCloseTime = std::max(m_LastCloseTime, u.m_LastCloseTime);
0051 }
0052 };
0053
0054
0055
0056
0057
0058
0059 struct DirStateBase
0060 {
0061 std::string m_dir_name;
0062
0063 DirStateBase() {}
0064 DirStateBase(const std::string &dname) : m_dir_name(dname) {}
0065 };
0066
0067 struct DataFsStateBase
0068 {
0069 time_t m_usage_update_time = 0;
0070
0071 long long m_disk_total = 0;
0072 long long m_disk_used = 0;
0073 long long m_file_usage = 0;
0074 long long m_meta_total = 0;
0075 long long m_meta_used = 0;
0076 };
0077
0078 }
0079
0080 #endif