XRootD
XrdOssStatsDirectory.hh
Go to the documentation of this file.
1 
2 #ifndef __XRDSTATS_DIRECTORY_H
3 #define __XRDSTATS_DIRECTORY_H
4 
5 #include "XrdOuc/XrdOucEnv.hh"
8 #include "XrdSys/XrdSysError.hh"
9 
10 #include <memory>
11 
12 class StatsDirectory : public XrdOssWrapDF {
13 public:
14  StatsDirectory(std::unique_ptr<XrdOssDF> ossDF, XrdSysError &log, StatsFileSystem &oss) :
15  XrdOssWrapDF(*ossDF),
16  m_wrappedDir(std::move(ossDF)),
17  m_log(log),
18  m_oss(oss)
19  {
20  }
21 
22  virtual ~StatsDirectory() {}
23 
24  virtual int
25  Opendir(const char *path,
26  XrdOucEnv &env) override
27  {
28  StatsFileSystem::OpTimer op(m_oss.m_ops.m_dirlist_ops, m_oss.m_slow_ops.m_dirlist_ops, m_oss.m_times.m_dirlist, m_oss.m_slow_times.m_dirlist, m_oss.m_slow_duration);
29  return wrapDF.Opendir(path, env);
30  }
31 
32  int Readdir(char *buff, int blen) override
33  {
34  StatsFileSystem::OpTimer op(m_oss.m_ops.m_dirlist_entries, m_oss.m_slow_ops.m_dirlist_entries, m_oss.m_times.m_dirlist, m_oss.m_slow_times.m_dirlist, m_oss.m_slow_duration);
35  return wrapDF.Readdir(buff, blen);
36  }
37 
38 
39 private:
40  std::unique_ptr<XrdOssDF> m_wrappedDir;
41  XrdSysError m_log;
42  StatsFileSystem &m_oss;
43 };
44 
45 #endif
int Readdir(char *buff, int blen) override
StatsDirectory(std::unique_ptr< XrdOssDF > ossDF, XrdSysError &log, StatsFileSystem &oss)
virtual int Opendir(const char *path, XrdOucEnv &env) override
virtual int Opendir(const char *path, XrdOucEnv &env)
Definition: XrdOss.hh:79
virtual int Readdir(char *buff, int blen)
Definition: XrdOss.hh:92
XrdOssDF & wrapDF