25#ifndef __XRD_CL_FILE_STATE_HANDLER_HH__
26#define __XRD_CL_FILE_STATE_HANDLER_HH__
49 class PgReadRetryHandler;
50 class PgReadSubstitutionHandler;
81 friend class ::PgReadHandler;
82 friend class ::PgReadRetryHandler;
83 friend class ::PgReadSubstitutionHandler;
84 friend class ::OpenHandler;
130 const std::string &url,
134 uint16_t timeout = 0 );
146 uint16_t timeout = 0 );
162 uint16_t timeout = 0 );
186 uint16_t timeout = 0 );
207 uint16_t timeout = 0 );
226 PgReadHandler *handler,
227 uint16_t timeout = 0 );
250 uint16_t timeout = 0 );
268 uint16_t timeout = 0 );
285 uint16_t timeout = 0 );
307 uint16_t timeout = 0 );
325 std::vector<uint32_t> &cksums,
327 uint16_t timeout = 0 );
346 uint16_t timeout = 0 );
365 std::vector<uint32_t> &cksums,
368 uint16_t timeout = 0 );
380 uint16_t timeout = 0 );
394 uint16_t timeout = 0 );
410 uint16_t timeout = 0 );
424 uint16_t timeout = 0 );
439 const struct iovec *
iov,
442 uint16_t timeout = 0 );
460 uint16_t timeout = 0 );
477 uint16_t timeout = 0 );
491 uint16_t timeout = 0 );
506 const std::vector<xattr_t> &attrs,
508 uint16_t timeout = 0 );
523 const std::vector<std::string> &attrs,
525 uint16_t timeout = 0 );
540 const std::vector<std::string> &attrs,
542 uint16_t timeout = 0 );
557 uint16_t timeout = 0 );
573 uint16_t timeout = 0 );
591 uint16_t timeout = 0 );
606 const struct iovec *
iov,
609 uint16_t timeout = 0 );
636 const std::string &redirectUrl,
660 return pIsChannelEncrypted;
668 bool SetProperty(
const std::string &name,
const std::string &value );
675 bool GetProperty(
const std::string &name, std::string &value )
const;
723 request(r), handler(h), params(p) {}
742 const std::vector<T> &attrs,
744 uint16_t timeout = 0 );
769 bool callbackOnFailure =
true );
819 pOpenTime.tv_sec = 0; pOpenTime.tv_usec = 0;
853 std::unique_ptr<XrdSys::KernelBuffer> kbuff,
unsigned char kXR_char
Definition XPtypes.hh:65
#define XRDOUC_ENUM_OPERATORS(T)
Definition XrdOucEnum.hh:22
Definition XrdClAnyObject.hh:33
Binary blob representation.
Definition XrdClBuffer.hh:34
An interface for file plug-ins.
Definition XrdClPlugInInterface.hh:39
Handle the stateful operations.
Definition XrdClFileStateHandler.hh:80
uint64_t pRBytes
Definition XrdClFileStateHandler.hh:883
static XRootDStatus PgReadImpl(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, void *buffer, uint16_t flags, ResponseHandler *handler, uint16_t timeout=0)
URL * pDataServer
Definition XrdClFileStateHandler.hh:862
static void OnStateResponse(std::shared_ptr< FileStateHandler > &self, XRootDStatus *status, Message *message, AnyObject *response, HostList *hostList)
Handle stateful response.
std::set< Message * > pInTheFly
Definition XrdClFileStateHandler.hh:870
void AfterForkChild()
Called in the child process after the fork.
static XRootDStatus DelXAttr(std::shared_ptr< FileStateHandler > &self, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
URL * pStateRedirect
Definition XrdClFileStateHandler.hh:864
static XRootDStatus SendClose(std::shared_ptr< FileStateHandler > &self, uint16_t timeout)
FileStateHandler(bool useVirtRedirector, FilePlugIn *&plugin)
static XRootDStatus Checkpoint(std::shared_ptr< FileStateHandler > &self, kXR_char code, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus Fcntl(std::shared_ptr< FileStateHandler > &self, const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus PgRead(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus Write(std::shared_ptr< FileStateHandler > &self, uint64_t offset, Buffer &&buffer, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus PgReadRetry(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, size_t pgnb, void *buffer, PgReadHandler *handler, uint16_t timeout=0)
void TimeOutRequests(time_t now)
Declare timeout on requests being recovered.
void ReWriteFileHandle(Message *msg)
Re-write file handle.
bool pDoRecoverRead
Definition XrdClFileStateHandler.hh:872
void Tick(time_t now)
Tick.
bool IsReadOnly() const
Check if the file is open for read only.
bool pFollowRedirects
Definition XrdClFileStateHandler.hh:874
void FailQueuedMessages(XRootDStatus status)
Fail queued messages.
std::list< RequestData > RequestList
Definition XrdClFileStateHandler.hh:728
static Status XAttrOperationImpl(std::shared_ptr< FileStateHandler > &self, kXR_char subcode, kXR_char options, const std::vector< T > &attrs, ResponseHandler *handler, uint16_t timeout=0)
bool pIsChannelEncrypted
Definition XrdClFileStateHandler.hh:876
static XRootDStatus Visa(std::shared_ptr< FileStateHandler > &self, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus IssueRequest(const URL &url, Message *msg, ResponseHandler *handler, MessageSendParams &sendParams)
uint64_t pVWBytes
Definition XrdClFileStateHandler.hh:886
FileStateHandler(FilePlugIn *&plugin)
Constructor.
static XRootDStatus PgWriteImpl(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, kXR_char flags, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus VectorWrite(std::shared_ptr< FileStateHandler > &self, const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0)
FilePlugIn *& pPlugin
Definition XrdClFileStateHandler.hh:902
uint16_t pOpenFlags
Definition XrdClFileStateHandler.hh:868
static XRootDStatus ReadV(std::shared_ptr< FileStateHandler > &self, uint64_t offset, struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
XrdSysMutex pMutex
Definition XrdClFileStateHandler.hh:857
static XRootDStatus SetXAttr(std::shared_ptr< FileStateHandler > &self, const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
URL * pLoadBalancer
Definition XrdClFileStateHandler.hh:863
URL * pWrtRecoveryRedir
Definition XrdClFileStateHandler.hh:865
uint64_t pVSegs
Definition XrdClFileStateHandler.hh:887
StatInfo * pStatInfo
Definition XrdClFileStateHandler.hh:860
FileStatus
State of the file.
Definition XrdClFileStateHandler.hh:91
@ OpenInProgress
Opening is in progress.
Definition XrdClFileStateHandler.hh:96
@ Closed
The file is closed.
Definition XrdClFileStateHandler.hh:92
@ Opened
Opening has succeeded.
Definition XrdClFileStateHandler.hh:93
@ Error
Opening has failed.
Definition XrdClFileStateHandler.hh:94
@ Recovering
Recovering from an error.
Definition XrdClFileStateHandler.hh:95
static XRootDStatus WriteKernelBuffer(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t length, std::unique_ptr< XrdSys::KernelBuffer > kbuff, ResponseHandler *handler, uint16_t timeout)
Send a write request with payload being stored in a kernel buffer.
static XRootDStatus VectorRead(std::shared_ptr< FileStateHandler > &self, const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
static Status SendOrQueue(std::shared_ptr< FileStateHandler > &self, const URL &url, Message *msg, ResponseHandler *handler, MessageSendParams &sendParams)
Send a message to a host or put it in the recovery queue.
void UnLock()
Unlock the internal lock.
Definition XrdClFileStateHandler.hh:688
RequestList pToBeRecovered
Definition XrdClFileStateHandler.hh:869
static Status RecoverMessage(std::shared_ptr< FileStateHandler > &self, RequestData rd, bool callbackOnFailure=true)
void ResetMonitoringVars()
Reset monitoring vars.
Definition XrdClFileStateHandler.hh:817
XRootDStatus pCloseReason
Definition XrdClFileStateHandler.hh:892
uint64_t pVWCount
Definition XrdClFileStateHandler.hh:891
uint64_t pVRBytes
Definition XrdClFileStateHandler.hh:884
uint64_t pSessionId
Definition XrdClFileStateHandler.hh:871
bool SetProperty(const std::string &name, const std::string &value)
bool pAllowBundledClose
Definition XrdClFileStateHandler.hh:877
void OnClose(const XRootDStatus *status)
Process the results of the closing operation.
static XRootDStatus PgWrite(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus TryOtherServer(std::shared_ptr< FileStateHandler > &self, uint16_t timeout)
Try other data server.
static XRootDStatus Open(std::shared_ptr< FileStateHandler > &self, const std::string &url, uint16_t flags, uint16_t mode, ResponseHandler *handler, uint16_t timeout=0)
uint16_t pOpenMode
Definition XrdClFileStateHandler.hh:867
uint8_t * pFileHandle
Definition XrdClFileStateHandler.hh:866
static XRootDStatus WriteV(std::shared_ptr< FileStateHandler > &self, uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
void OnOpen(const XRootDStatus *status, const OpenInfo *openInfo, const HostList *hostList)
Process the results of the opening operation.
static XRootDStatus ChkptWrtV(std::shared_ptr< FileStateHandler > &self, uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
uint64_t pRCount
Definition XrdClFileStateHandler.hh:888
void MonitorClose(const XRootDStatus *status)
Dispatch monitoring information on close.
bool pDoRecoverWrite
Definition XrdClFileStateHandler.hh:873
bool IsRecoverable(const XRootDStatus &stataus) const
Check if the stateful error is recoverable.
uint64_t pVRCount
Definition XrdClFileStateHandler.hh:889
static XRootDStatus Write(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0)
uint64_t pWBytes
Definition XrdClFileStateHandler.hh:885
static XRootDStatus ListXAttr(std::shared_ptr< FileStateHandler > &self, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus pStatus
Definition XrdClFileStateHandler.hh:859
bool IsSecure() const
Check if the file is using an encrypted connection.
Definition XrdClFileStateHandler.hh:658
static void OnStateRedirection(std::shared_ptr< FileStateHandler > &self, const std::string &redirectUrl, Message *message, ResponseHandler *userHandler, MessageSendParams &sendParams)
Handle stateful redirect.
static XRootDStatus Read(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0)
void FailMessage(RequestData rd, XRootDStatus status)
Fail a message.
~FileStateHandler()
Destructor.
bool GetProperty(const std::string &name, std::string &value) const
static XRootDStatus Sync(std::shared_ptr< FileStateHandler > &self, ResponseHandler *handler, uint16_t timeout=0)
LocalFileHandler * pLFileHandler
Definition XrdClFileStateHandler.hh:897
static XRootDStatus Write(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, Optional< uint64_t > fdoff, int fd, ResponseHandler *handler, uint16_t timeout=0)
uint64_t pWCount
Definition XrdClFileStateHandler.hh:890
static XRootDStatus ChkptWrt(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus GetXAttr(std::shared_ptr< FileStateHandler > &self, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus ReOpenFileAtServer(std::shared_ptr< FileStateHandler > &self, const URL &url, uint16_t timeout)
Re-open the current file at a given server.
static XRootDStatus Truncate(std::shared_ptr< FileStateHandler > &self, uint64_t size, ResponseHandler *handler, uint16_t timeout=0)
static Status RunRecovery(std::shared_ptr< FileStateHandler > &self)
Run the recovery procedure if appropriate.
static void OnStateError(std::shared_ptr< FileStateHandler > &self, XRootDStatus *status, Message *message, ResponseHandler *userHandler, MessageSendParams &sendParams)
Handle an error while sending a stateful message.
FileStatus pFileState
Definition XrdClFileStateHandler.hh:858
bool pUseVirtRedirector
Definition XrdClFileStateHandler.hh:875
timeval pOpenTime
Definition XrdClFileStateHandler.hh:882
static XRootDStatus Close(std::shared_ptr< FileStateHandler > &self, ResponseHandler *handler, uint16_t timeout=0)
bool IsOpen() const
Check if the file is open.
void ReSendQueuedMessages()
Re-send queued messages.
static XRootDStatus Stat(std::shared_ptr< FileStateHandler > &self, bool force, ResponseHandler *handler, uint16_t timeout=0)
static XRootDStatus PgWriteRetry(std::shared_ptr< FileStateHandler > &self, uint64_t offset, uint32_t size, const void *buffer, uint32_t digest, ResponseHandler *handler, uint16_t timeout=0)
void Lock()
Lock the internal lock.
Definition XrdClFileStateHandler.hh:680
URL * pFileUrl
Definition XrdClFileStateHandler.hh:861
Definition XrdClLocalFileHandler.hh:33
The message representation used throughout the system.
Definition XrdClMessage.hh:30
Information returned by file open operation.
Definition XrdClXRootDResponses.hh:862
Definition XrdClOptional.hh:44
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
Object stat info.
Definition XrdClXRootDResponses.hh:400
URL representation.
Definition XrdClURL.hh:31
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdSysPthread.hh:165
Definition XrdClAction.hh:34
std::vector< HostInfo > HostList
Definition XrdClXRootDResponses.hh:1120
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
static const int kXR_pgRetry
Definition XProtocol.hh:503
Definition XrdClFileStateHandler.hh:719
RequestData()
Definition XrdClFileStateHandler.hh:720
Message * request
Definition XrdClFileStateHandler.hh:724
RequestData(Message *r, ResponseHandler *h, const MessageSendParams &p)
Definition XrdClFileStateHandler.hh:721
ResponseHandler * handler
Definition XrdClFileStateHandler.hh:725
MessageSendParams params
Definition XrdClFileStateHandler.hh:726
Definition XrdClMessageUtils.hh:132
none object for initializing empty Optional
Definition XrdClOptional.hh:35
PgRead flags.
Definition XrdClFileStateHandler.hh:63
Flags
PgRead flags.
Definition XrdClFileStateHandler.hh:68
@ Retry
Definition XrdClFileStateHandler.hh:70
Procedure execution status.
Definition XrdClStatus.hh:115
Definition XrdOucIOVec.hh:65