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,
179 action( std::move( 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
virtual ~Recorder()
Destructor.
Definition: XrdClRecorder.hh:255
RecordHandler(Output &output, std::unique_ptr< Action > action, ResponseHandler *handler)
Definition: XrdClRecorder.hh:175
Definition: XrdClAnyObject.hh:32
Output & operator=(const Output &)=delete
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
virtual bool IsOpen() const
IsOpen.
Definition: XrdClRecorder.hh:426
virtual XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout)
Open.
Definition: XrdClRecorder.hh:262
void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition: XrdClRecorder.hh:190
Definition: XrdClRecorder.hh:42
void Warning(uint64_t topic, const char *format,...)
Report a warning.
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Write action.
Definition: XrdClAction.hh:278
Open action.
Definition: XrdClAction.hh:141
bool IsValid()
Definition: XrdClRecorder.hh:119
virtual XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout)
Truncate.
Definition: XrdClRecorder.hh:368
Sync action.
Definition: XrdClAction.hh:320
bool Write(std::unique_ptr< Action > action)
Definition: XrdClRecorder.hh:83
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool SetProperty(const std::string &name, const std::string &value)
Recorder()
Constructor.
Definition: XrdClRecorder.hh:238
virtual XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout)
VectorRead.
Definition: XrdClRecorder.hh:393
~Output()
Destructor.
Definition: XrdClRecorder.hh:149
void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClRecorder.hh:205
XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
virtual XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout)
Write.
Definition: XrdClRecorder.hh:314
virtual XRootDStatus Close(ResponseHandler *handler, uint16_t timeout)
Close.
Definition: XrdClRecorder.hh:276
Stat action.
Definition: XrdClAction.hh:186
static Output & Instance()
Definition: XrdClRecorder.hh:56
virtual XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout)
Stat.
Definition: XrdClRecorder.hh:287
static Log * GetLog()
Get default log.
Definition: XrdClAction.hh:249
Output & output
Definition: XrdClRecorder.hh:214
static Output & Get()
Definition: XrdClRecorder.hh:71
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:38
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
void SetPath(const std::string &path)
Definition: XrdClRecorder.hh:124
A file.
Definition: XrdClFile.hh:45
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
std::vector< HostInfo > HostList
Definition: XrdClXRootDResponses.hh:1111
bool IsOpen() const
Check if the file is open.
#define write(a, b, c)
Definition: XrdPosix.hh:110
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
std::string path
Definition: XrdClRecorder.hh:161
Vector Write action.
Definition: XrdClAction.hh:394
virtual bool GetProperty(const std::string &name, std::string &value) const
GetProperty.
Definition: XrdClRecorder.hh:443
ResponseHandler * handler
Definition: XrdClRecorder.hh:216
Request status.
Definition: XrdClXRootDResponses.hh:218
bool Open()
Definition: XrdClRecorder.hh:108
virtual XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Definition: XrdClRecorder.hh:328
virtual XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout)
Read.
Definition: XrdClRecorder.hh:300
static void SetOutput(const std::string &cfgpath)
Definition: XrdClRecorder.hh:226
virtual XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout)
Sync.
Definition: XrdClRecorder.hh:357
virtual XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout)
Fcntl.
Definition: XrdClRecorder.hh:405
VectorRead action.
Definition: XrdClAction.hh:353
XRootDStatus Truncate(uint64_t size, 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
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
virtual XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout)
VectorRead.
Definition: XrdClRecorder.hh:380
Truncate action.
Definition: XrdClAction.hh:335
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
virtual XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout)
Visa.
Definition: XrdClRecorder.hh:417
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1146
virtual bool SetProperty(const std::string &name, const std::string &value)
SetProperty.
Definition: XrdClRecorder.hh:434
#define close(a)
Definition: XrdPosix.hh:43
void Error(uint64_t topic, const char *format,...)
Report an error.
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition: XrdClXRootDResponses.hh:1130
bool GetProperty(const std::string &name, std::string &value) const
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
Close action.
Definition: XrdClAction.hh:171
Read action.
Definition: XrdClAction.hh:223
#define open
Definition: XrdPosix.hh:71
std::mutex mtx
Definition: XrdClRecorder.hh:159
Definition: XrdClAction.hh:295
Completion handler recording user action / server response.
Definition: XrdClRecorder.hh:167
File file
Definition: XrdClRecorder.hh:451
Definition: XrdClRecorder.hh:48
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:75
bool IsValid() const
Definition: XrdClRecorder.hh:247
const uint64_t AppMsg
Definition: XrdClConstants.hh:32
Output & output
Definition: XrdClRecorder.hh:452
XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Fcntl action.
Definition: XrdClAction.hh:421
Output()
Constructor.
Definition: XrdClRecorder.hh:134
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Binary blob representation.
Definition: XrdClBuffer.hh:33
std::unique_ptr< Action > action
Definition: XrdClRecorder.hh:215
int fd
Definition: XrdClRecorder.hh:160