Back to home page

EIC code displayed by LXR

 
 

    


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 // Data-holding struct DirUsage -- complementary to Stats.
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 // Base classes, shared between in-memory tree form and snap-shot vector forms.
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; // In bytes, from Oss::StatVS() on space data
0072    long long m_disk_used  = 0; // ""
0073    long long m_file_usage = 0; // Calculate usage by data files in the cache
0074    long long m_meta_total = 0; // In bytes, from Oss::StatVS() on space meta
0075    long long m_meta_used  = 0; // ""
0076 };
0077 
0078 }
0079 
0080 #endif