24#ifndef XRDCK_RECORDER_HH_
25#define XRDCK_RECORDER_HH_
59 std::unique_lock<std::mutex> lck(
output.
mtx );
83 bool Write( std::unique_ptr<Action> action )
85 std::unique_lock<std::mutex> lck(
mtx );
86 const std::string &entry = action->ToString();
90 int rc =
::write(
fd, entry.c_str(), entry.size() );
99 while(
size_t( btsWritten ) < entry.size() );
110 fd =
open(
path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0644 );
176 std::unique_ptr<Action>
action,
194 action->RecordResult( status, response );
208 action->RecordResult( status, response );
226 inline static void SetOutput(
const std::string &cfgpath )
228 static const std::string defaultpath =
"/tmp/xrdrecord.csv";
229 const char *envpath = getenv(
"XRD_RECORDERPATH" );
230 std::string path = envpath ? envpath :
231 ( !cfgpath.empty() ? cfgpath : defaultpath );
268 std::unique_ptr<Action> ptr(
new OpenAction(
this, url, flags, mode, timeout ) );
270 return file.
Open( url, flags, mode, recHandler, timeout );
279 std::unique_ptr<Action> ptr(
new CloseAction(
this, timeout ) );
281 return file.
Close( recHandler, timeout );
291 std::unique_ptr<Action> ptr(
new StatAction(
this, force, timeout ) );
293 return file.
Stat(force, recHandler, timeout);
306 std::unique_ptr<Action> ptr(
new ReadAction(
this, offset, size, timeout ) );
308 return file.
Read( offset, size, buffer, recHandler, timeout );
320 std::unique_ptr<Action> ptr(
new WriteAction(
this, offset, size, timeout ) );
322 return file.
Write( offset, size, buffer, recHandler, timeout );
334 std::unique_ptr<Action> ptr(
new PgReadAction(
this, offset, size, timeout ) );
336 return file.
PgRead( offset, size, buffer, recHandler, timeout );
345 std::vector<uint32_t> &cksums,
349 std::unique_ptr<Action> ptr(
new PgWriteAction(
this, offset, size, timeout ) );
351 return file.
PgWrite( offset, size, buffer, cksums, recHandler, timeout );
360 std::unique_ptr<Action> ptr(
new SyncAction(
this, timeout ) );
362 return file.
Sync( recHandler, timeout );
372 std::unique_ptr<Action> ptr(
new TruncateAction(
this, size, timeout ) );
385 std::unique_ptr<Action> ptr(
new VectorReadAction(
this, chunks, timeout ) );
409 std::unique_ptr<Action> ptr(
new FcntlAction(
this, arg, timeout ) );
411 return file.
Fcntl(arg, recHandler, timeout);
435 const std::string& value)
444 std::string& value)
const
#define close(a)
Definition XrdPosix.hh:43
#define write(a, b, c)
Definition XrdPosix.hh:110
#define open
Definition XrdPosix.hh:71
Definition XrdClAnyObject.hh:33
Binary blob representation.
Definition XrdClBuffer.hh:34
static Log * GetLog()
Get default log.
An interface for file plug-ins.
Definition XrdClPlugInInterface.hh:39
A file.
Definition XrdClFile.hh:46
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool IsOpen() const
Check if the file is open.
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool GetProperty(const std::string &name, std::string &value) const
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool SetProperty(const std::string &name, const std::string &value)
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus PgWrite(uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
void Error(uint64_t topic, const char *format,...)
Report an error.
void Warning(uint64_t topic, const char *format,...)
Report a warning.
Definition XrdClRecorder.hh:49
std::string path
Definition XrdClRecorder.hh:161
Output()
Constructor.
Definition XrdClRecorder.hh:134
void SetPath(const std::string &path)
Definition XrdClRecorder.hh:124
bool Write(std::unique_ptr< Action > action)
Definition XrdClRecorder.hh:83
bool Open()
Definition XrdClRecorder.hh:108
~Output()
Destructor.
Definition XrdClRecorder.hh:149
static Output & Instance()
Definition XrdClRecorder.hh:56
Output(const Output &)=delete
Output & operator=(const Output &)=delete
std::mutex mtx
Definition XrdClRecorder.hh:159
int fd
Definition XrdClRecorder.hh:160
bool IsValid()
Definition XrdClRecorder.hh:119
Output & operator=(Output &&)=delete
static Output & Get()
Definition XrdClRecorder.hh:71
Definition XrdClRecorder.hh:43
bool IsValid() const
Definition XrdClRecorder.hh:247
File file
Definition XrdClRecorder.hh:451
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Open.
Definition XrdClRecorder.hh:262
virtual XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Fcntl.
Definition XrdClRecorder.hh:405
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout)
Sync.
Definition XrdClRecorder.hh:357
virtual XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition XrdClRecorder.hh:328
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout)
Stat.
Definition XrdClRecorder.hh:287
virtual bool SetProperty(const std::string &name, const std::string &value)
SetProperty.
Definition XrdClRecorder.hh:434
Output & output
Definition XrdClRecorder.hh:452
virtual bool IsOpen() const
IsOpen.
Definition XrdClRecorder.hh:426
static void SetOutput(const std::string &cfgpath)
Definition XrdClRecorder.hh:226
virtual XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout)
VectorRead.
Definition XrdClRecorder.hh:393
virtual XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout)
Truncate.
Definition XrdClRecorder.hh:368
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout)
Close.
Definition XrdClRecorder.hh:276
virtual ~Recorder()
Destructor.
Definition XrdClRecorder.hh:255
virtual bool GetProperty(const std::string &name, std::string &value) const
GetProperty.
Definition XrdClRecorder.hh:443
virtual XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout)
Visa.
Definition XrdClRecorder.hh:417
virtual XRootDStatus PgWrite(uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout)
Definition XrdClRecorder.hh:342
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Read.
Definition XrdClRecorder.hh:300
Recorder()
Constructor.
Definition XrdClRecorder.hh:238
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout)
Write.
Definition XrdClRecorder.hh:314
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout)
VectorRead.
Definition XrdClRecorder.hh:380
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition XrdClXRootDResponses.hh:1139
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition XrdClXRootDResponses.hh:1155
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdClAction.hh:34
const uint64_t AppMsg
Definition XrdClConstants.hh:32
std::vector< HostInfo > HostList
Definition XrdClXRootDResponses.hh:1120
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
Definition XrdOucJson.hh:4517
Mode
Access mode.
Definition XrdClFileSystem.hh:122
Close action.
Definition XrdClAction.hh:172
Fcntl action.
Definition XrdClAction.hh:422
Open action.
Definition XrdClAction.hh:142
Flags
Open flags, may be or'd when appropriate.
Definition XrdClFileSystem.hh:76
Definition XrdClAction.hh:250
Definition XrdClAction.hh:296
Read action.
Definition XrdClAction.hh:224
Completion handler recording user action / server response.
Definition XrdClRecorder.hh:168
void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition XrdClRecorder.hh:205
void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition XrdClRecorder.hh:190
Output & output
Definition XrdClRecorder.hh:214
ResponseHandler * handler
Definition XrdClRecorder.hh:216
RecordHandler(Output &output, std::unique_ptr< Action > action, ResponseHandler *handler)
Definition XrdClRecorder.hh:175
std::unique_ptr< Action > action
Definition XrdClRecorder.hh:215
Stat action.
Definition XrdClAction.hh:187
Sync action.
Definition XrdClAction.hh:321
Truncate action.
Definition XrdClAction.hh:336
VectorRead action.
Definition XrdClAction.hh:354
Vector Write action.
Definition XrdClAction.hh:395
Write action.
Definition XrdClAction.hh:279