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 namespace XrdOssStats {
13 
14 class Directory : public XrdOssWrapDF {
15 public:
16  Directory(std::unique_ptr<XrdOssDF> ossDF, XrdSysError &log, FileSystem &oss) :
17  XrdOssWrapDF(*ossDF),
18  m_wrappedDir(std::move(ossDF)),
19  m_log(log),
20  m_oss(oss)
21  {
22  }
23 
24  virtual ~Directory() {}
25 
26  virtual int
27  Opendir(const char *path,
28  XrdOucEnv &env) override
29  {
30  FileSystem::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);
31  return wrapDF.Opendir(path, env);
32  }
33 
34  int Readdir(char *buff, int blen) override
35  {
36  FileSystem::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);
37  return wrapDF.Readdir(buff, blen);
38  }
39 
40 
41 private:
42  std::unique_ptr<XrdOssDF> m_wrappedDir;
43  XrdSysError m_log;
44  FileSystem &m_oss;
45 };
46 
47 } // namespace XrdOssStats
48 
49 #endif // __XRDSTATS_DIRECTORY_H
virtual int Opendir(const char *path, XrdOucEnv &env)
Definition: XrdOss.hh:79
virtual int Readdir(char *buff, int blen)
Definition: XrdOss.hh:92
Directory(std::unique_ptr< XrdOssDF > ossDF, XrdSysError &log, FileSystem &oss)
virtual int Opendir(const char *path, XrdOucEnv &env) override
int Readdir(char *buff, int blen) override
XrdOssDF & wrapDF