xrootd
XrdClMonitor.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // Copyright (c) 2012 by the Board of Trustees of the Leland Stanford, Jr.,
3 // University
4 // Copyright (c) 2012 by European Organization for Nuclear Research (CERN)
5 // Author: Andrew Hanushevsky <abh@stanford.edu>
6 // Author: Lukasz Janyst <ljanyst@cern.ch>
7 //------------------------------------------------------------------------------
8 // XRootD is free software: you can redistribute it and/or modify
9 // it under the terms of the GNU Lesser General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or
11 // (at your option) any later version.
12 //
13 // XRootD is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public License
19 // along with XRootD. If not, see <http://www.gnu.org/licenses/>.
20 //------------------------------------------------------------------------------
21 
22 //------------------------------------------------------------------------------
39 //------------------------------------------------------------------------------
40 
41 #ifndef __XRD_CL_MONITOR_HH__
42 #define __XRD_CL_MONITOR_HH__
43 
44 #include "XrdCl/XrdClFileSystem.hh"
45 
46 namespace XrdCl
47 {
48  class URL;
49 
50  //----------------------------------------------------------------------------
52  //----------------------------------------------------------------------------
53  class Monitor
54  {
55  public:
56  //------------------------------------------------------------------------
58  //------------------------------------------------------------------------
59  Monitor() {}
60 
61  //------------------------------------------------------------------------
63  //------------------------------------------------------------------------
64  virtual ~Monitor() {}
65 
66  //------------------------------------------------------------------------
68  //------------------------------------------------------------------------
69  struct ConnectInfo
70  {
72  {
73  sTOD.tv_sec = 0; sTOD.tv_usec = 0;
74  eTOD.tv_sec = 0; eTOD.tv_usec = 0;
75  }
76  std::string server;
77  std::string auth;
78  timeval sTOD;
79  timeval eTOD;
80  uint16_t streams;
81  };
82 
83  //------------------------------------------------------------------------
85  //------------------------------------------------------------------------
87  {
89  {}
90  std::string server;
91  uint64_t rBytes;
92  uint64_t sBytes;
93  time_t cTime;
95  };
96 
97  //------------------------------------------------------------------------
99  //------------------------------------------------------------------------
100  struct OpenInfo
101  {
102  OpenInfo(): file(0), fSize(0), oFlags(0) {}
103  const URL *file;
104  std::string dataServer;
105  uint64_t fSize;
106  uint16_t oFlags;
107  };
108 
109  //------------------------------------------------------------------------
111  //------------------------------------------------------------------------
112  struct CloseInfo
113  {
115  file(0), rBytes(0), vrBytes(0), wBytes(0), vwBytes(0), vSegs(0), rCount(0),
116  vCount(0), wCount(0), status(0)
117  {
118  oTOD.tv_sec = 0; oTOD.tv_usec = 0;
119  cTOD.tv_sec = 0; cTOD.tv_usec = 0;
120  }
121  const URL *file;
122  timeval oTOD;
123  timeval cTOD;
124  uint64_t rBytes;
125  uint64_t vrBytes;
126  uint64_t wBytes;
127  uint64_t vwBytes;
128  uint64_t vSegs;
129  uint32_t rCount;
130  uint32_t vCount;
131  uint32_t wCount;
133  };
134 
135  //------------------------------------------------------------------------
137  //------------------------------------------------------------------------
138  struct ErrorInfo
139  {
141  {
142  ErrOpen = 0,
147  ErrUnc
148  };
149 
150  ErrorInfo(): file(0), status(0), opCode( ErrUnc ) {}
151  const URL *file;
154  };
155 
156  //------------------------------------------------------------------------
158  //------------------------------------------------------------------------
160  {
162  const URL *origin;
163  const URL *target;
164  };
165 
166  //------------------------------------------------------------------------
170  //------------------------------------------------------------------------
171  struct CopyBInfo
172  {
174  };
175 
176  //------------------------------------------------------------------------
178  //------------------------------------------------------------------------
179  struct CopyEInfo
180  {
182  {
183  bTOD.tv_sec = 0; bTOD.tv_usec = 0;
184  eTOD.tv_sec = 0; eTOD.tv_usec = 0;
185  }
187  int sources;
188  timeval bTOD;
189  timeval eTOD;
191  };
192 
193  //------------------------------------------------------------------------
195  //------------------------------------------------------------------------
197  {
198  CheckSumInfo(): oTime(0), tTime(0), isOK(false) {}
200  std::string cksum;
201  uint64_t oTime;
202  uint64_t tTime;
203  bool isOK;
204  };
205 
206  //------------------------------------------------------------------------
209  //------------------------------------------------------------------------
211  {
219  EvDisconnect
220 
221  };
222 
223  //------------------------------------------------------------------------
230  //------------------------------------------------------------------------
231  virtual void Event( EventCode evCode, void *evData ) = 0;
232  };
233 }
234 
235 #endif // __XRD_CL_MONITOR_HH
XrdClFileSystem.hh
XrdCl::Monitor::CopyBInfo
Definition: XrdClMonitor.hh:172
XrdCl::Monitor::ConnectInfo::server
std::string server
"user@host:port"
Definition: XrdClMonitor.hh:76
XrdCl::Monitor::DisconnectInfo::sBytes
uint64_t sBytes
Number of bytes sent.
Definition: XrdClMonitor.hh:92
XrdCl::Monitor::ErrorInfo::opCode
Operation opCode
The associated operation.
Definition: XrdClMonitor.hh:153
XrdCl::Monitor::ConnectInfo::sTOD
timeval sTOD
gettimeofday() when login started
Definition: XrdClMonitor.hh:78
XrdCl::Monitor::CheckSumInfo
Describe a checksum event.
Definition: XrdClMonitor.hh:197
XrdCl::Monitor::EvOpen
@ EvOpen
OpenInfo: File opened.
Definition: XrdClMonitor.hh:215
XrdCl::Monitor::ErrorInfo::ErrRead
@ ErrRead
Read.
Definition: XrdClMonitor.hh:143
XrdCl::Monitor::EvClose
@ EvClose
CloseInfo: File closed.
Definition: XrdClMonitor.hh:216
XrdCl::Monitor::CloseInfo::wBytes
uint64_t wBytes
Total number of bytes written.
Definition: XrdClMonitor.hh:126
XrdCl::Monitor::DisconnectInfo::cTime
time_t cTime
Seconds connected to the server.
Definition: XrdClMonitor.hh:93
XrdCl::Monitor::OpenInfo::fSize
uint64_t fSize
File size in bytes.
Definition: XrdClMonitor.hh:105
XrdCl::Monitor::DisconnectInfo::server
std::string server
"user@host:port"
Definition: XrdClMonitor.hh:90
XrdCl::Monitor::OpenInfo::file
const URL * file
File in question.
Definition: XrdClMonitor.hh:103
XrdCl::Monitor::ErrorInfo::Operation
Operation
Definition: XrdClMonitor.hh:141
XrdCl::Monitor::OpenInfo::OpenInfo
OpenInfo()
Definition: XrdClMonitor.hh:102
XrdCl::Monitor::CheckSumInfo::transfer
TransferInfo transfer
The transfer in question.
Definition: XrdClMonitor.hh:199
XrdCl::Monitor::CloseInfo
Describe a file close event.
Definition: XrdClMonitor.hh:113
XrdCl::Monitor::DisconnectInfo
Describe a server logout event.
Definition: XrdClMonitor.hh:87
XrdCl::Monitor::CheckSumInfo::cksum
std::string cksum
Checksum as "type:value".
Definition: XrdClMonitor.hh:200
XrdCl::Monitor::EvCopyBeg
@ EvCopyBeg
CopyBInfo: Copy operation started.
Definition: XrdClMonitor.hh:212
XrdCl::Monitor::EvErrIO
@ EvErrIO
ErrorInfo: An I/O error occurred.
Definition: XrdClMonitor.hh:217
XrdCl::Monitor::CopyEInfo::CopyEInfo
CopyEInfo()
Definition: XrdClMonitor.hh:181
XrdCl::Monitor::CloseInfo::vCount
uint32_t vCount
Total count of readv.
Definition: XrdClMonitor.hh:130
XrdCl::Monitor::CloseInfo::file
const URL * file
The file in question.
Definition: XrdClMonitor.hh:121
XrdCl::Monitor::CopyEInfo::status
const XRootDStatus * status
Status of the copy.
Definition: XrdClMonitor.hh:190
XrdCl::Monitor::~Monitor
virtual ~Monitor()
Destructor.
Definition: XrdClMonitor.hh:64
XrdCl::Monitor::Event
virtual void Event(EventCode evCode, void *evData)=0
XrdCl::XRootDStatus
Request status.
Definition: XrdClXRootDResponses.hh:219
XrdCl::Monitor::CloseInfo::vwBytes
uint64_t vwBytes
Total number of bytes written vie writev.
Definition: XrdClMonitor.hh:127
XrdCl::Monitor::ErrorInfo::ErrWrite
@ ErrWrite
Write.
Definition: XrdClMonitor.hh:145
XrdCl::Monitor::ConnectInfo::auth
std::string auth
authentication protocol used or empty if none
Definition: XrdClMonitor.hh:77
XrdCl::Monitor::Monitor
Monitor()
Constructor.
Definition: XrdClMonitor.hh:59
XrdCl::Monitor::TransferInfo::target
const URL * target
URL of the target.
Definition: XrdClMonitor.hh:163
XrdCl::Monitor::OpenInfo::dataServer
std::string dataServer
Actual fata server.
Definition: XrdClMonitor.hh:104
XrdCl::Monitor::ErrorInfo::ErrWriteV
@ ErrWriteV
WriteV.
Definition: XrdClMonitor.hh:146
XrdCl::Monitor::CopyEInfo::transfer
TransferInfo transfer
The transfer in question.
Definition: XrdClMonitor.hh:186
XrdCl::Monitor::TransferInfo::origin
const URL * origin
URL of the origin.
Definition: XrdClMonitor.hh:162
XrdCl::Monitor::CopyBInfo::transfer
TransferInfo transfer
The transfer in question.
Definition: XrdClMonitor.hh:173
XrdCl::Monitor::CopyEInfo::eTOD
timeval eTOD
Copy end time.
Definition: XrdClMonitor.hh:189
XrdCl::Monitor::CloseInfo::vrBytes
uint64_t vrBytes
Total number of bytes read via readv.
Definition: XrdClMonitor.hh:125
XrdCl::Monitor::TransferInfo::TransferInfo
TransferInfo()
Definition: XrdClMonitor.hh:161
XrdCl::Monitor::DisconnectInfo::DisconnectInfo
DisconnectInfo()
Definition: XrdClMonitor.hh:88
XrdCl::Monitor::ConnectInfo
Describe a server login event.
Definition: XrdClMonitor.hh:70
XrdCl::Monitor::ErrorInfo::file
const URL * file
The file in question.
Definition: XrdClMonitor.hh:151
XrdCl::Monitor::OpenInfo::oFlags
uint16_t oFlags
OpenFlags.
Definition: XrdClMonitor.hh:106
XrdCl::Monitor::CloseInfo::status
const XRootDStatus * status
Close status.
Definition: XrdClMonitor.hh:132
XrdCl::Monitor::OpenInfo
Describe a file open event to the monitor.
Definition: XrdClMonitor.hh:101
XrdCl
Definition: XrdClAnyObject.hh:26
XrdCl::Monitor::ConnectInfo::streams
uint16_t streams
Number of streams.
Definition: XrdClMonitor.hh:80
XrdCl::Monitor::DisconnectInfo::status
Status status
Disconnection status.
Definition: XrdClMonitor.hh:94
XrdCl::Monitor::ConnectInfo::eTOD
timeval eTOD
gettimeofday() when login ended
Definition: XrdClMonitor.hh:79
XrdCl::Monitor::ErrorInfo::ErrReadV
@ ErrReadV
Readv.
Definition: XrdClMonitor.hh:144
XrdCl::Monitor::EvDisconnect
@ EvDisconnect
DisconnectInfo: Logout from a server.
Definition: XrdClMonitor.hh:219
XrdCl::Monitor::CloseInfo::vSegs
uint64_t vSegs
Total count of readv segments.
Definition: XrdClMonitor.hh:128
XrdCl::Monitor::EvCopyEnd
@ EvCopyEnd
CopyEInfo: Copy operation ended.
Definition: XrdClMonitor.hh:213
XrdCl::Monitor::ErrorInfo::ErrUnc
@ ErrUnc
Unclassified operation.
Definition: XrdClMonitor.hh:147
XrdCl::Monitor::DisconnectInfo::rBytes
uint64_t rBytes
Number of bytes received.
Definition: XrdClMonitor.hh:91
XrdCl::Monitor::CheckSumInfo::tTime
uint64_t tTime
Microseconds to obtain cksum from target.
Definition: XrdClMonitor.hh:202
XrdCl::Monitor::EvConnect
@ EvConnect
ConnectInfo: Login into a server.
Definition: XrdClMonitor.hh:218
XrdCl::Status
Procedure execution status.
Definition: XrdClStatus.hh:113
XrdCl::URL
URL representation.
Definition: XrdClURL.hh:31
XrdCl::Monitor::EvCheckSum
@ EvCheckSum
CheckSumInfo: File checksummed.
Definition: XrdClMonitor.hh:214
XrdCl::Monitor::CloseInfo::rBytes
uint64_t rBytes
Total number of bytes read via read.
Definition: XrdClMonitor.hh:124
XrdCl::Monitor
An abstract class to describe the client-side monitoring plugin interface.
Definition: XrdClMonitor.hh:54
XrdCl::Monitor::CheckSumInfo::oTime
uint64_t oTime
Microseconds to obtain cksum from origin.
Definition: XrdClMonitor.hh:201
XrdCl::Monitor::CopyEInfo::sources
int sources
Number of sources used for the copy.
Definition: XrdClMonitor.hh:187
XrdCl::Monitor::CopyEInfo
Describe an end of copy event.
Definition: XrdClMonitor.hh:180
XrdCl::Monitor::CloseInfo::rCount
uint32_t rCount
Total count of reads.
Definition: XrdClMonitor.hh:129
XrdCl::Monitor::ErrorInfo
Describe an encountered file-based error.
Definition: XrdClMonitor.hh:139
XrdCl::Monitor::CopyEInfo::bTOD
timeval bTOD
Copy start time.
Definition: XrdClMonitor.hh:188
XrdCl::Monitor::TransferInfo
Describe the transfer.
Definition: XrdClMonitor.hh:160
XrdCl::Monitor::ErrorInfo::ErrorInfo
ErrorInfo()
Definition: XrdClMonitor.hh:150
XrdCl::Monitor::CloseInfo::wCount
uint32_t wCount
Total count of writes.
Definition: XrdClMonitor.hh:131
XrdCl::Monitor::ConnectInfo::ConnectInfo
ConnectInfo()
Definition: XrdClMonitor.hh:71
XrdCl::Monitor::EventCode
EventCode
Definition: XrdClMonitor.hh:211
XrdCl::Monitor::CloseInfo::oTOD
timeval oTOD
gettimeofday() when file was opened
Definition: XrdClMonitor.hh:122
XrdCl::Monitor::ErrorInfo::status
const XRootDStatus * status
Status code.
Definition: XrdClMonitor.hh:152
XrdCl::Monitor::CheckSumInfo::CheckSumInfo
CheckSumInfo()
Definition: XrdClMonitor.hh:198
XrdCl::Monitor::CloseInfo::cTOD
timeval cTOD
gettimeofday() when file was closed
Definition: XrdClMonitor.hh:123
XrdCl::Monitor::CheckSumInfo::isOK
bool isOK
True if checksum matched, false otherwise.
Definition: XrdClMonitor.hh:203
XrdCl::Monitor::ErrorInfo::ErrOpen
@ ErrOpen
Open (ditto)
Definition: XrdClMonitor.hh:142
XrdCl::Monitor::CloseInfo::CloseInfo
CloseInfo()
Definition: XrdClMonitor.hh:114