24 #ifndef SRC_XRDAPPS_RECORDPLUGIN_XRDCLACTION_HH_
25 #define SRC_XRDAPPS_RECORDPLUGIN_XRDCLACTION_HH_
47 :
id(reinterpret_cast<uint64_t>(file))
49 ,
start(std::chrono::system_clock::now())
58 stop = std::chrono::system_clock::now();
67 std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> tp)
69 auto secs = std::chrono::time_point_cast<std::chrono::seconds>(tp);
70 auto ns = std::chrono::time_point_cast<std::chrono::nanoseconds>(tp)
71 - std::chrono::time_point_cast<std::chrono::nanoseconds>(secs);
72 return secs.time_since_epoch().count() + ns.count() / 1000000000.0;
80 auto now = std::chrono::system_clock::now();
91 ss <<
"\"" <<
id <<
"\"" <<
',';
92 ss <<
"\"" <<
Name() <<
"\"" <<
',';
96 ss <<
"\"" << std::fixed << std::setprecision(9) << tstart <<
"\"" <<
",";
97 std::string argstr =
ArgStr();
100 ss <<
"\"" << argstr <<
timeout <<
"\"" <<
',';
101 ss <<
"\"" << std::fixed << std::setprecision(9) << tstop <<
"\"" <<
",";
103 while (ststr.back() ==
' ')
105 ss <<
"\"" << ststr <<
"\"" <<
',';
118 virtual std::string
Name() = 0;
123 virtual std::string
ArgStr() = 0;
132 std::chrono::system_clock::time_point
start;
135 std::chrono::system_clock::time_point
stop;
152 std::string
Name() {
return "Open"; }
156 std::stringstream ss;
178 std::string
Name() {
return "Close"; }
194 std::string
Name() {
return "Stat"; }
204 std::stringstream ss;
232 std::string
Name() {
return "Read"; }
258 std::string
Name() {
return "PgRead"; }
287 std::string
Name() {
return "Write"; }
304 std::string
Name() {
return "PgWrite"; }
308 std::stringstream ss;
327 std::string
Name() {
return "Sync"; }
343 std::string
Name() {
return "Truncate"; }
361 std::string
Name() {
return "VectorRead"; }
367 std::stringstream ss;
368 ss <<
req[0].offset <<
";" <<
req[0].length;
369 for (
size_t i = 1; i <
req.size(); ++i)
370 ss <<
";" <<
req[i].offset <<
";" <<
req[i].length;
380 std::stringstream ss;
383 for (
auto& ch : chunks)
384 ss <<
';' << ch.offset <<
';' << ch.length;
402 std::string
Name() {
return "VectorWrite"; }
408 std::stringstream ss;
409 ss <<
req[0].offset <<
";" <<
req[0].length;
410 for (
size_t i = 1; i <
req.size(); ++i)
411 ss <<
";" <<
req[i].offset <<
";" <<
req[i].length;
429 std::string
Name() {
return "Fcntl"; }
uint32_t size
Definition: XrdClAction.hh:347
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:180
const std::string & GetChecksum() const
Get checksum.
void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:374
Definition: XrdClAnyObject.hh:32
ReadAction(void *file, uint64_t offset, uint32_t size, uint16_t timeout)
Definition: XrdClAction.hh:225
uint64_t offset
Definition: XrdClAction.hh:245
const std::string GetModeAsOctString() const
Get mode.
uint64_t GetChangeTime() const
Get change time (in seconds since epoch)
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:289
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: XrdOucJson.hh:26358
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:236
std::string Name()
Action name.
Definition: XrdClAction.hh:258
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:154
void Get(Type &object)
Retrieve the object being held.
Definition: XrdClAnyObject.hh:78
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:306
Object stat info.
Definition: XrdClXRootDResponses.hh:399
Write action.
Definition: XrdClAction.hh:278
VectorReadAction(void *file, const ChunkList &chunks, uint16_t timeout)
Definition: XrdClAction.hh:355
std::chrono::system_clock::time_point start
Definition: XrdClAction.hh:132
Open action.
Definition: XrdClAction.hh:141
Definition: XrdClXRootDResponses.hh:946
Sync action.
Definition: XrdClAction.hh:320
std::string Name()
Action name.
Definition: XrdClAction.hh:152
uint64_t id
Definition: XrdClAction.hh:130
TruncateAction(void *file, uint64_t size, uint16_t timeout)
Definition: XrdClAction.hh:337
uint64_t offset
Definition: XrdClAction.hh:271
uint64_t offset
Definition: XrdClAction.hh:313
void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:433
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:363
static double timeNow()
Get curretn unix time in ns precision as a double.
Definition: XrdClAction.hh:78
FcntlAction(void *file, const Buffer &arg, uint16_t timeout)
Definition: XrdClAction.hh:423
OpenAction(void *file, const std::string &url, OpenFlags::Flags flags, Access::Mode mode, uint16_t timeout)
Definition: XrdClAction.hh:143
OpenFlags::Flags flags
Definition: XrdClAction.hh:164
ChunkList req
Definition: XrdClAction.hh:388
bool force
Definition: XrdClAction.hh:217
ChunkList & GetChunks()
Get chunks.
Definition: XrdClXRootDResponses.hh:1078
std::string Name()
Action name.
Definition: XrdClAction.hh:343
SyncAction(void *file, uint16_t timeout)
Definition: XrdClAction.hh:322
Stat action.
Definition: XrdClAction.hh:186
void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:262
virtual std::string Name()=0
Action name.
Definition: XrdClAction.hh:249
const std::string & GetOwner() const
Get owner.
Access::Mode mode
Definition: XrdClAction.hh:165
uint32_t GetFlags() const
Get flags.
std::string Name()
Action name.
Definition: XrdClAction.hh:429
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:329
uint32_t req
Definition: XrdClAction.hh:442
std::string Name()
Action name.
Definition: XrdClAction.hh:361
Action(void *file, uint16_t timeout)
Definition: XrdClAction.hh:46
StatAction(void *file, bool force, uint16_t timeout)
Definition: XrdClAction.hh:188
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:260
std::string Name()
Action name.
Definition: XrdClAction.hh:178
uint32_t GetSize() const
Get the size of the message.
Definition: XrdClBuffer.hh:132
Vector Write action.
Definition: XrdClAction.hh:394
uint32_t length
offset in the file
Definition: XrdClXRootDResponses.hh:940
std::string Name()
Action name.
Definition: XrdClAction.hh:194
void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:198
PgReadAction(void *file, uint64_t offset, uint32_t size, uint16_t timeout)
Definition: XrdClAction.hh:251
std::string ToString() const
Create a string representation.
uint16_t timeout
Definition: XrdClAction.hh:131
Describe a data chunk for vector read.
Definition: XrdClXRootDResponses.hh:907
std::string serialrsp
Definition: XrdClAction.hh:134
uint32_t GetLength() const
Get the data length.
Request status.
Definition: XrdClXRootDResponses.hh:218
size_t GetNbRepair()
Get number of repaired pages.
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:234
std::string ToString()
Convert the action / response data into csv row.
Definition: XrdClAction.hh:88
std::string Name()
Action name.
Definition: XrdClAction.hh:402
const std::string url
Definition: XrdClAction.hh:163
Action.
Definition: XrdClAction.hh:38
std::string Name()
Action name.
Definition: XrdClAction.hh:287
uint32_t size
Definition: XrdClAction.hh:246
static double time(std::chrono::time_point< std::chrono::system_clock, std::chrono::nanoseconds > tp)
Convert timpoint to unix timestamp with ns.
Definition: XrdClAction.hh:66
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:431
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:345
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:196
VectorWriteAction(void *file, const ChunkList &chunks, uint16_t timeout)
Definition: XrdClAction.hh:396
VectorRead action.
Definition: XrdClAction.hh:353
virtual void Serialize(AnyObject *response)
Serialize server response.
Definition: XrdClAction.hh:128
Vector read info.
Definition: XrdClXRootDResponses.hh:1051
virtual ~Action()
Destructor.
Definition: XrdClAction.hh:113
Truncate action.
Definition: XrdClAction.hh:335
uint32_t size
Definition: XrdClAction.hh:314
uint64_t offset
Definition: XrdClAction.hh:291
XRootDStatus status
Definition: XrdClAction.hh:133
uint64_t GetAccessTime() const
Get change time (in seconds since epoch)
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
std::string Name()
Action name.
Definition: XrdClAction.hh:232
uint32_t GetSize() const
Get Size.
Definition: XrdClXRootDResponses.hh:1062
Close action.
Definition: XrdClAction.hh:171
Read action.
Definition: XrdClAction.hh:223
virtual std::string ArgStr()=0
Convert operation arguments into a string.
Definition: XrdClAction.hh:295
PgWriteAction(void *file, uint64_t offset, uint32_t size, uint16_t timeout)
Definition: XrdClAction.hh:297
uint32_t size
Definition: XrdClAction.hh:272
std::string Name()
Action name.
Definition: XrdClAction.hh:304
std::chrono::system_clock::time_point stop
Definition: XrdClAction.hh:135
const std::string & GetGroup() const
Get group.
std::string Name()
Action name.
Definition: XrdClAction.hh:327
uint64_t GetSize() const
Get size (in bytes)
std::string ArgStr()
Convert operation arguments into a string.
Definition: XrdClAction.hh:404
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:75
void RecordResult(XRootDStatus *st, AnyObject *rsp)
Record the server response / error / timeout.
Definition: XrdClAction.hh:56
CloseAction(void *file, uint16_t timeout)
Definition: XrdClAction.hh:173
uint64_t GetModTime() const
Get modification time (in seconds since epoch)
WriteAction(void *file, uint64_t offset, uint32_t size, uint16_t timeout)
Definition: XrdClAction.hh:280
Fcntl action.
Definition: XrdClAction.hh:421
uint32_t size
Definition: XrdClAction.hh:292
Binary blob representation.
Definition: XrdClBuffer.hh:33
ChunkList req
Definition: XrdClAction.hh:415