25 #ifndef __XRD_CL_FILE_STATE_HANDLER_HH__
26 #define __XRD_CL_FILE_STATE_HANDLER_HH__
48 class PgReadRetryHandler;
49 class PgReadSubstitutionHandler;
80 friend class ::PgReadHandler;
81 friend class ::PgReadRetryHandler;
82 friend class ::PgReadSubstitutionHandler;
83 friend class ::OpenHandler;
110 FileStateHandler(
bool useVirtRedirector,
FilePlugIn *& plugin );
129 const std::string &url,
133 uint16_t timeout = 0 );
145 uint16_t timeout = 0 );
161 uint16_t timeout = 0 );
185 uint16_t timeout = 0 );
206 uint16_t timeout = 0 );
220 static XRootDStatus PgReadRetry( std::shared_ptr<FileStateHandler> &
self,
225 PgReadHandler *handler,
226 uint16_t timeout = 0 );
249 uint16_t timeout = 0 );
267 uint16_t timeout = 0 );
284 uint16_t timeout = 0 );
306 uint16_t timeout = 0 );
324 std::vector<uint32_t> &cksums,
326 uint16_t timeout = 0 );
340 static XRootDStatus PgWriteRetry( std::shared_ptr<FileStateHandler> &
self,
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 );
455 static XRootDStatus ReadV( std::shared_ptr<FileStateHandler> &
self,
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 );
626 static void OnStateError( std::shared_ptr<FileStateHandler> &
self,
635 static void OnStateRedirection( std::shared_ptr<FileStateHandler> &
self,
636 const std::string &redirectUrl,
644 static void OnStateResponse( std::shared_ptr<FileStateHandler> &
self,
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;
696 void Tick( time_t now );
701 void TimeOutRequests( time_t now );
706 void AfterForkChild();
711 static XRootDStatus TryOtherServer( std::shared_ptr<FileStateHandler> &
self,
723 request(r), handler(h), params(p) {}
739 static Status XAttrOperationImpl( std::shared_ptr<FileStateHandler> &
self,
742 const std::vector<T> &attrs,
744 uint16_t timeout = 0 );
749 static Status SendOrQueue( std::shared_ptr<FileStateHandler> &
self,
758 bool IsRecoverable(
const XRootDStatus &stataus )
const;
767 static Status RecoverMessage( std::shared_ptr<FileStateHandler> &
self,
769 bool callbackOnFailure =
true );
774 static Status RunRecovery( std::shared_ptr<FileStateHandler> &
self );
779 static XRootDStatus SendClose( std::shared_ptr<FileStateHandler> &
self,
785 bool IsReadOnly()
const;
790 static XRootDStatus ReOpenFileAtServer( std::shared_ptr<FileStateHandler> &
self,
807 void ReSendQueuedMessages();
812 void ReWriteFileHandle(
Message *msg );
819 pOpenTime.tv_sec = 0; pOpenTime.tv_usec = 0;
850 static XRootDStatus WriteKernelBuffer( std::shared_ptr<FileStateHandler> &
self,
853 std::unique_ptr<XrdSys::KernelBuffer> kbuff,
906 #endif // __XRD_CL_FILE_STATE_HANDLER_HH__
uint64_t pWBytes
Definition: XrdClFileStateHandler.hh:885
unsigned char kXR_char
Definition: XPtypes.hh:65
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition: XrdClFileOperations.hh:1361
FilePlugIn *& pPlugin
Definition: XrdClFileStateHandler.hh:902
Definition: XrdClAnyObject.hh:32
void Lock()
Lock the internal lock.
Definition: XrdClFileStateHandler.hh:680
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:1021
void UnLock()
Unlock the internal lock.
Definition: XrdClFileStateHandler.hh:688
PgRead flags.
Definition: XrdClFileStateHandler.hh:61
Definition: XrdClMessageUtils.hh:131
uint64_t pRBytes
Definition: XrdClFileStateHandler.hh:883
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
bool IsSecure() const
Check if the file is using an encrypted connection.
Definition: XrdClFileStateHandler.hh:658
uint64_t pSessionId
Definition: XrdClFileStateHandler.hh:871
The message representation used throughout the system.
Definition: XrdClMessage.hh:29
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:922
uint64_t pVWBytes
Definition: XrdClFileStateHandler.hh:886
Object stat info.
Definition: XrdClXRootDResponses.hh:399
uint64_t pWCount
Definition: XrdClFileStateHandler.hh:890
RequestData()
Definition: XrdClFileStateHandler.hh:720
The file is closed.
Definition: XrdClFileStateHandler.hh:91
Definition: XrdClOptional.hh:43
Message * request
Definition: XrdClFileStateHandler.hh:724
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1256
ChkptWrtVImpl< false > ChkptWrtV(Ctx< File > file, Arg< uint64_t > offset, Arg< std::vector< iovec >> iov, uint16_t timeout=0)
Factory for creating ChkptWrtVImpl objects.
Definition: XrdClCheckpointOperation.hh:197
PgReadImpl< false > PgRead(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
Definition: XrdClFileOperations.hh:331
uint64_t pVSegs
Definition: XrdClFileStateHandler.hh:887
ReadImpl< false > Read(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClFileOperations.hh:273
bool pDoRecoverWrite
Definition: XrdClFileStateHandler.hh:873
ResponseHandler * handler
Definition: XrdClFileStateHandler.hh:725
VectorWriteImpl< false > VectorWrite(Ctx< File > file, Arg< ChunkList > chunks, uint16_t timeout=0)
Factory for creating VectorWriteImpl objects.
Definition: XrdClFileOperations.hh:807
Procedure execution status.
Definition: XrdClStatus.hh:113
static const int kXR_pgRetry
Definition: XProtocol.hh:503
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1139
bool pAllowBundledClose
Definition: XrdClFileStateHandler.hh:877
Opening is in progress.
Definition: XrdClFileStateHandler.hh:95
Information returned by file open operation.
Definition: XrdClXRootDResponses.hh:852
void ResetMonitoringVars()
Reset monitoring vars.
Definition: XrdClFileStateHandler.hh:817
URL * pWrtRecoveryRedir
Definition: XrdClFileStateHandler.hh:865
Definition: XrdSysPthread.hh:164
bool pDoRecoverRead
Definition: XrdClFileStateHandler.hh:872
LocalFileHandler * pLFileHandler
Definition: XrdClFileStateHandler.hh:897
std::list< RequestData > RequestList
Definition: XrdClFileStateHandler.hh:728
Definition: XrdOucIOVec.hh:65
std::set< Message * > pInTheFly
Definition: XrdClFileStateHandler.hh:870
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:38
WriteImpl< false > Write(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< const void * > buffer, uint16_t timeout=0)
Factory for creating WriteImpl objects.
Definition: XrdClFileOperations.hh:591
timeval pOpenTime
Definition: XrdClFileStateHandler.hh:882
std::vector< HostInfo > HostList
Definition: XrdClXRootDResponses.hh:1111
uint64_t pRCount
Definition: XrdClFileStateHandler.hh:888
MessageSendParams params
Definition: XrdClFileStateHandler.hh:726
uint16_t pOpenFlags
Definition: XrdClFileStateHandler.hh:868
Opening has failed.
Definition: XrdClFileStateHandler.hh:93
Opening has succeeded.
Definition: XrdClFileStateHandler.hh:92
none object for initializing empty Optional
Definition: XrdClOptional.hh:35
Request status.
Definition: XrdClXRootDResponses.hh:218
Definition: XrdClFileStateHandler.hh:69
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:535
FileStatus
State of the file.
Definition: XrdClFileStateHandler.hh:89
bool pUseVirtRedirector
Definition: XrdClFileStateHandler.hh:875
SyncImpl< false > Sync(Ctx< File > file, uint16_t timeout=0)
Factory for creating SyncImpl objects.
Definition: XrdClFileOperations.hh:639
Definition: XrdClFileStateHandler.hh:718
ChkptWrtImpl< false > ChkptWrt(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< const void * > buffer, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClCheckpointOperation.hh:129
Recovering from an error.
Definition: XrdClFileStateHandler.hh:94
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size, uint16_t timeout)
Definition: XrdClFileOperations.hh:692
RequestData(Message *r, ResponseHandler *h, const MessageSendParams &p)
Definition: XrdClFileStateHandler.hh:721
CheckpointImpl< false > Checkpoint(Ctx< File > file, Arg< ChkPtCode > code, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClCheckpointOperation.hh:72
FileStatus pFileState
Definition: XrdClFileStateHandler.hh:858
XRootDStatus pCloseReason
Definition: XrdClFileStateHandler.hh:892
uint64_t pVWCount
Definition: XrdClFileStateHandler.hh:891
Flags
PgRead flags.
Definition: XrdClFileStateHandler.hh:66
RequestList pToBeRecovered
Definition: XrdClFileStateHandler.hh:869
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
PgRead operation (.
Definition: XrdClFileOperations.hh:284
Handle the stateful operations.
Definition: XrdClFileStateHandler.hh:78
Definition: XrdClLocalFileHandler.hh:32
URL representation.
Definition: XrdClURL.hh:30
CloseImpl< false > Close(Ctx< File > file, uint16_t timeout=0)
Factory for creating CloseImpl objects.
Definition: XrdClFileOperations.hh:482
URL * pFileUrl
Definition: XrdClFileStateHandler.hh:861
bool pFollowRedirects
Definition: XrdClFileStateHandler.hh:874
uint64_t pVRCount
Definition: XrdClFileStateHandler.hh:889
XRootDStatus pStatus
Definition: XrdClFileStateHandler.hh:859
#define XRDOUC_ENUM_OPERATORS(T)
Definition: XrdOucEnum.hh:22
uint8_t * pFileHandle
Definition: XrdClFileStateHandler.hh:866
bool pIsChannelEncrypted
Definition: XrdClFileStateHandler.hh:876
URL * pStateRedirect
Definition: XrdClFileStateHandler.hh:864
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:961
WriteVImpl< false > WriteV(Ctx< File > file, Arg< uint64_t > offset, Arg< std::vector< iovec >> iov, uint16_t timeout=0)
Factory for creating WriteVImpl objects.
Definition: XrdClFileOperations.hh:872
URL * pDataServer
Definition: XrdClFileStateHandler.hh:862
uint16_t pOpenMode
Definition: XrdClFileStateHandler.hh:867
PgWriteImpl< false > PgWrite(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, Arg< std::vector< uint32_t >> cksums, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
Definition: XrdClFileOperations.hh:420
OpenImpl< false > Open(Ctx< File > file, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClFileOperations.hh:215
PgWrite operation (.
Definition: XrdClFileOperations.hh:372
StatInfo * pStatInfo
Definition: XrdClFileStateHandler.hh:860
uint64_t pVRBytes
Definition: XrdClFileStateHandler.hh:884
XrdSysMutex pMutex
Definition: XrdClFileStateHandler.hh:857
URL * pLoadBalancer
Definition: XrdClFileStateHandler.hh:863
Binary blob representation.
Definition: XrdClBuffer.hh:33
VectorReadImpl< false > VectorRead(Ctx< File > file, Arg< ChunkList > chunks, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating VectorReadImpl objects.
Definition: XrdClFileOperations.hh:747