XRootD
Loading...
Searching...
No Matches
XrdOssStatsFile.hh
Go to the documentation of this file.
1
2#ifndef __XRDOSSSTATS_FILE_H
3#define __XRDOSSSTATS_FILE_H
4
8
9#include <memory>
10#include <string>
11
12class XrdSecEntity;
13
14namespace XrdOssStats {
15
16class File : public XrdOssWrapDF {
17public:
18 File(std::unique_ptr<XrdOssDF> wrapDF, XrdSysError &log, FileSystem &oss) :
20 m_wrapped(std::move(wrapDF)),
21 m_log(log),
22 m_oss(oss)
23 {}
24
25 virtual ~File();
26
27 int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &env) override
28 {
29 FileSystem::OpTimer op(m_oss.m_ops.m_open_ops, m_oss.m_slow_ops.m_open_ops, m_oss.m_times.m_open, m_oss.m_slow_times.m_open, m_oss.m_slow_duration);
30 return wrapDF.Open(path, Oflag, Mode, env);
31 }
32
33 int Fchmod(mode_t mode) override
34 {
35 FileSystem::OpTimer op(m_oss.m_ops.m_chmod_ops, m_oss.m_slow_ops.m_chmod_ops, m_oss.m_times.m_chmod, m_oss.m_slow_times.m_chmod, m_oss.m_slow_duration);
36 return wrapDF.Fchmod(mode);
37 }
38
39 int Fstat(struct stat *buf) override
40 {
41 FileSystem::OpTimer op(m_oss.m_ops.m_stat_ops, m_oss.m_slow_ops.m_stat_ops, m_oss.m_times.m_stat, m_oss.m_slow_times.m_stat, m_oss.m_slow_duration);
42 return wrapDF.Fstat(buf);
43 }
44
45 int Ftruncate(unsigned long long size) override
46 {
47 FileSystem::OpTimer op(m_oss.m_ops.m_truncate_ops, m_oss.m_slow_ops.m_truncate_ops, m_oss.m_times.m_truncate, m_oss.m_slow_times.m_truncate, m_oss.m_slow_duration);
48 return wrapDF.Ftruncate(size);
49 }
50
51 ssize_t pgRead (void* buffer, off_t offset, size_t rdlen,
52 uint32_t* csvec, uint64_t opts) override
53 {
54 FileSystem::OpTimer op(m_oss.m_ops.m_pgread_ops, m_oss.m_slow_ops.m_pgread_ops, m_oss.m_times.m_pgread, m_oss.m_slow_times.m_pgread, m_oss.m_slow_duration);
55 return wrapDF.pgRead(buffer, offset, rdlen, csvec, opts);
56 }
57
58 int pgRead (XrdSfsAio* aioparm, uint64_t opts) override
59 {
60 FileSystem::OpTimer op(m_oss.m_ops.m_pgread_ops, m_oss.m_slow_ops.m_pgread_ops, m_oss.m_times.m_pgread, m_oss.m_slow_times.m_pgread, m_oss.m_slow_duration);
61 return wrapDF.pgRead(aioparm, opts);
62 }
63
64 ssize_t pgWrite(void* buffer, off_t offset, size_t wrlen,
65 uint32_t* csvec, uint64_t opts) override
66 {
67 FileSystem::OpTimer op(m_oss.m_ops.m_pgwrite_ops, m_oss.m_slow_ops.m_pgwrite_ops, m_oss.m_times.m_pgwrite, m_oss.m_slow_times.m_pgwrite, m_oss.m_slow_duration);
68 return wrapDF.pgWrite(buffer, offset, wrlen, csvec, opts);
69 }
70
71 int pgWrite(XrdSfsAio* aioparm, uint64_t opts) override
72 {
73 FileSystem::OpTimer op(m_oss.m_ops.m_pgwrite_ops, m_oss.m_slow_ops.m_pgwrite_ops, m_oss.m_times.m_pgwrite, m_oss.m_slow_times.m_pgwrite, m_oss.m_slow_duration);
74 return wrapDF.pgWrite(aioparm, opts);
75 }
76
77 ssize_t Read(off_t offset, size_t size) override
78 {
79 FileSystem::OpTimer op(m_oss.m_ops.m_read_ops, m_oss.m_slow_ops.m_read_ops, m_oss.m_times.m_read, m_oss.m_slow_times.m_read, m_oss.m_slow_duration);
80 return wrapDF.Read(offset, size);
81 }
82
83 ssize_t Read(void *buffer, off_t offset, size_t size) override
84 {
85 FileSystem::OpTimer op(m_oss.m_ops.m_read_ops, m_oss.m_slow_ops.m_read_ops, m_oss.m_times.m_read, m_oss.m_slow_times.m_read, m_oss.m_slow_duration);
86 return wrapDF.Read(buffer, offset, size);
87 }
88
89 int Read(XrdSfsAio *aiop) override
90 {
91 FileSystem::OpTimer op(m_oss.m_ops.m_read_ops, m_oss.m_slow_ops.m_read_ops, m_oss.m_times.m_read, m_oss.m_slow_times.m_read, m_oss.m_slow_duration);
92 return wrapDF.Read(aiop);
93 }
94
95 ssize_t ReadRaw(void *buffer, off_t offset, size_t size) override
96 {
97 FileSystem::OpTimer op(m_oss.m_ops.m_read_ops, m_oss.m_slow_ops.m_read_ops, m_oss.m_times.m_read, m_oss.m_slow_times.m_read, m_oss.m_slow_duration);
98 return wrapDF.ReadRaw(buffer, offset, size);
99 }
100
101 ssize_t ReadV(XrdOucIOVec *readV, int rdvcnt) override
102 {
103 auto start = std::chrono::steady_clock::now();
104 auto result = wrapDF.ReadV(readV, rdvcnt);
105 auto dur = std::chrono::steady_clock::now() - start;
106 m_oss.m_ops.m_readv_ops++;
107 m_oss.m_ops.m_readv_segs += rdvcnt;
108 auto ns = std::chrono::nanoseconds(dur).count();
109 m_oss.m_times.m_readv += ns;
110 if (dur > m_oss.m_slow_duration) {
111 m_oss.m_slow_ops.m_readv_ops++;
112 m_oss.m_slow_ops.m_readv_segs += rdvcnt;
113 m_oss.m_times.m_readv += std::chrono::nanoseconds(dur).count();
114 }
115 return result;
116 }
117
118 ssize_t Write(const void *buffer, off_t offset, size_t size) override
119 {
120 FileSystem::OpTimer op(m_oss.m_ops.m_write_ops, m_oss.m_slow_ops.m_write_ops, m_oss.m_times.m_write, m_oss.m_slow_times.m_write, m_oss.m_slow_duration);
121 return wrapDF.Write(buffer, offset, size);
122 }
123
124 int Write(XrdSfsAio *aiop) override
125 {
126 FileSystem::OpTimer op(m_oss.m_ops.m_write_ops, m_oss.m_slow_ops.m_write_ops, m_oss.m_times.m_write, m_oss.m_slow_times.m_write, m_oss.m_slow_duration);
127 return wrapDF.Write(aiop);
128 }
129
130 ssize_t WriteV(XrdOucIOVec *writeV, int wrvcnt) override
131 {
132 FileSystem::OpTimer op(m_oss.m_ops.m_write_ops, m_oss.m_slow_ops.m_write_ops, m_oss.m_times.m_write, m_oss.m_slow_times.m_write, m_oss.m_slow_duration);
133 return wrapDF.WriteV(writeV, wrvcnt);
134 }
135
136private:
137 std::unique_ptr<XrdOssDF> m_wrapped;
138 XrdSysError &m_log;
139 const XrdSecEntity* m_client;
140 FileSystem &m_oss;
141
142};
143
144} // namespace XrdOssStats
145
146#endif // __XRDOSSSTATS_FILES_H
#define stat(a, b)
Definition XrdPosix.hh:101
int Mode
struct myOpts opts
virtual ssize_t WriteV(XrdOucIOVec *writeV, int wrvcnt)
Definition XrdOss.cc:257
virtual int Ftruncate(unsigned long long flen)
Definition XrdOss.hh:164
virtual int Fstat(struct stat *buf)
Definition XrdOss.hh:136
virtual ssize_t ReadRaw(void *buffer, off_t offset, size_t size)
Definition XrdOss.hh:319
virtual int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &env)
Definition XrdOss.hh:200
virtual ssize_t Read(off_t offset, size_t size)
Definition XrdOss.hh:281
virtual int Fchmod(mode_t mode)
Definition XrdOss.hh:120
virtual ssize_t pgWrite(void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts)
Definition XrdOss.cc:198
virtual ssize_t pgRead(void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts)
Definition XrdOss.cc:160
virtual ssize_t ReadV(XrdOucIOVec *readV, int rdvcnt)
Definition XrdOss.cc:236
virtual ssize_t Write(const void *buffer, off_t offset, size_t size)
Definition XrdOss.hh:345
int Fchmod(mode_t mode) override
ssize_t Read(void *buffer, off_t offset, size_t size) override
ssize_t pgRead(void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts) override
int Ftruncate(unsigned long long size) override
ssize_t WriteV(XrdOucIOVec *writeV, int wrvcnt) override
int pgRead(XrdSfsAio *aioparm, uint64_t opts) override
int Fstat(struct stat *buf) override
ssize_t pgWrite(void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts) override
ssize_t ReadRaw(void *buffer, off_t offset, size_t size) override
ssize_t Write(const void *buffer, off_t offset, size_t size) override
File(std::unique_ptr< XrdOssDF > wrapDF, XrdSysError &log, FileSystem &oss)
int Write(XrdSfsAio *aiop) override
int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &env) override
ssize_t Read(off_t offset, size_t size) override
ssize_t ReadV(XrdOucIOVec *readV, int rdvcnt) override
int Read(XrdSfsAio *aiop) override
int pgWrite(XrdSfsAio *aioparm, uint64_t opts) override
XrdOssDF & wrapDF