26#ifndef __XRD_CL_FILE_OPERATIONS_HH__
27#define __XRD_CL_FILE_OPERATIONS_HH__
43 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Arguments>
47 template<
template<
bool>
class, bool,
typename,
typename ...>
friend class FileOperation;
103 template<
bool HasHndl>
156 Arg<
Access::Mode>>( f, std::move( url ), std::move( flags ), std::move( mode ) )
166 Arg<
Access::Mode>>( &f, std::move( url ), std::move( flags ), std::move( mode ) )
196 template<
typename Hdlr>
204 ExResp factory( *this->file );
205 return this->StreamImpl( factory.
Create( hdlr ), own );
229 std::string url = std::get<UrlArg>( this->args ).Get();
231 Access::Mode mode = std::get<ModeArg>( this->args ).Get();
232 return this->file->Open( url, flags, mode, this->handler.get() );
238 catch(
const std::exception& ex )
249 template<
bool HasHndl>
251 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
287 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
288 uint32_t size = std::get<SizeArg>( this->
args ).Get();
289 void *buffer = std::get<BufferArg>( this->
args ).Get();
296 catch(
const std::exception& ex )
307 template<
bool HasHndl>
344 template<
bool HasHndl>
380 bool force = std::get<ForceArg>( this->
args ).Get();
387 catch(
const std::exception& ex )
415 template<
bool HasHndl>
417 Arg<uint32_t>, Arg<void*>>
453 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
454 uint32_t size = std::get<SizeArg>( this->
args ).Get();
455 void *buffer = std::get<BufferArg>( this->
args ).Get();
462 catch(
const std::exception& ex )
473 template<
bool HasHndl>
510 template<
bool HasHndl>
546 uint64_t size = std::get<SizeArg>( this->
args ).Get();
553 catch(
const std::exception& ex )
581 template<
bool HasHndl>
583 Resp<VectorReadInfo>, Arg<ChunkList>, Arg<void*>>
620 void *buffer = std::get<BufferArg>( this->
args ).Get();
627 catch(
const std::exception& ex )
638 template<
bool HasHndl>
659 return "VectorWrite";
675 const ChunkList chunks( std::get<ChunksArg>( this->
args ).Get() );
682 catch(
const std::exception& ex )
693 template<
bool HasHndl>
695 Arg<struct iovec*>, Arg<int>>
731 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
732 const struct iovec *iov = std::get<IovArg>( this->
args ).Get();
733 int iovcnt = std::get<IovcntArg>( this->
args ).Get();
740 catch(
const std::exception& ex )
751 template<
bool HasHndl>
787 Buffer arg( std::get<BufferArg>( this->
args ).Get() );
794 catch(
const std::exception& ex )
805 template<
bool HasHndl>
#define open
Definition: XrdPosix.hh:71
Definition: XrdClArg.hh:286
Definition: XrdClArg.hh:224
Binary blob representation.
Definition: XrdClBuffer.hh:34
Close operation (.
Definition: XrdClFileOperations.hh:309
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:334
std::string ToString()
Definition: XrdClFileOperations.hh:320
Definition: XrdClOperations.hh:468
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:686
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:259
Fcntl operation (.
Definition: XrdClFileOperations.hh:753
std::string ToString()
Definition: XrdClFileOperations.hh:769
@ BufferArg
Definition: XrdClFileOperations.hh:764
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:783
Definition: XrdClFileOperations.hh:45
FileOperation(File *f, Arguments... args)
Definition: XrdClFileOperations.hh:56
virtual ~FileOperation()
Destructor.
Definition: XrdClFileOperations.hh:87
FileOperation(FileOperation< Derived, from, Response, Arguments... > &&op)
Definition: XrdClFileOperations.hh:78
friend class FileOperation
Definition: XrdClFileOperations.hh:47
File * file
The file object itself.
Definition: XrdClFileOperations.hh:97
FileOperation(File &f, Arguments... args)
Definition: XrdClFileOperations.hh:66
A file.
Definition: XrdClFile.hh:45
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
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 WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
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 Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Sync(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
Open operation (.
Definition: XrdClFileOperations.hh:106
OpenImpl(File &f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:163
OpenImpl(OpenImpl< from > &&open)
Definition: XrdClFileOperations.hh:178
@ FlagsArg
Definition: XrdClFileOperations.hh:188
OpenImpl< true > operator>>(Hdlr &&hdlr)
Definition: XrdClFileOperations.hh:197
std::string ToString()
Definition: XrdClFileOperations.hh:211
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:225
OpenImpl(File *f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:153
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:280
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:312
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:351
const char * what() const noexcept
inherited from std::exception
Definition: XrdClOperationHandlers.hh:343
Read operation (.
Definition: XrdClFileOperations.hh:252
std::string ToString()
Definition: XrdClFileOperations.hh:269
@ BufferArg
Definition: XrdClFileOperations.hh:264
@ OffsetArg
Definition: XrdClFileOperations.hh:264
@ SizeArg
Definition: XrdClFileOperations.hh:264
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:283
Handle an async response.
Definition: XrdClXRootDResponses.hh:855
Stat operation (.
Definition: XrdClFileOperations.hh:346
std::string ToString()
Definition: XrdClFileOperations.hh:362
@ ForceArg
Definition: XrdClFileOperations.hh:357
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:376
Object stat info.
Definition: XrdClXRootDResponses.hh:333
Sync operation (.
Definition: XrdClFileOperations.hh:475
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:500
std::string ToString()
Definition: XrdClFileOperations.hh:486
Truncate operation (.
Definition: XrdClFileOperations.hh:512
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:542
std::string ToString()
Definition: XrdClFileOperations.hh:528
@ SizeArg
Definition: XrdClFileOperations.hh:523
VectorRead operation (.
Definition: XrdClFileOperations.hh:584
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:615
@ ChunksArg
Definition: XrdClFileOperations.hh:596
@ BufferArg
Definition: XrdClFileOperations.hh:596
std::string ToString()
Definition: XrdClFileOperations.hh:601
VectorWrite operation (.
Definition: XrdClFileOperations.hh:641
@ ChunksArg
Definition: XrdClFileOperations.hh:652
std::string ToString()
Definition: XrdClFileOperations.hh:657
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:671
Visa operation (.
Definition: XrdClFileOperations.hh:807
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:832
std::string ToString()
Definition: XrdClFileOperations.hh:818
Write operation (.
Definition: XrdClFileOperations.hh:418
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:449
@ SizeArg
Definition: XrdClFileOperations.hh:430
@ OffsetArg
Definition: XrdClFileOperations.hh:430
@ BufferArg
Definition: XrdClFileOperations.hh:430
std::string ToString()
Definition: XrdClFileOperations.hh:435
WriteV operation (.
Definition: XrdClFileOperations.hh:696
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:727
std::string ToString()
Definition: XrdClFileOperations.hh:713
@ OffsetArg
Definition: XrdClFileOperations.hh:708
@ IovArg
Definition: XrdClFileOperations.hh:708
@ IovcntArg
Definition: XrdClFileOperations.hh:708
Request status.
Definition: XrdClXRootDResponses.hh:213
Definition: XrdClAnyObject.hh:26
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
ReadImpl< false > Read
Definition: XrdClFileOperations.hh:302
WriteVImpl< false > WriteV
Definition: XrdClFileOperations.hh:746
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:800
StatImpl< false > Stat(File *file, Arg< bool > force)
Definition: XrdClFileOperations.hh:398
VectorReadImpl< false > VectorRead
Definition: XrdClFileOperations.hh:633
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:837
TruncateImpl< false > Truncate(File *file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:564
CloseImpl< false > Close
Definition: XrdClFileOperations.hh:339
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:784
WriteImpl< false > Write
Definition: XrdClFileOperations.hh:468
SyncImpl< false > Sync
Definition: XrdClFileOperations.hh:505
VectorWriteImpl< false > VectorWrite
Definition: XrdClFileOperations.hh:688
OpenImpl< false > Open
Definition: XrdClFileOperations.hh:244
Access mode.
Definition: XrdClFileSystem.hh:118
Mode
Access mode.
Definition: XrdClFileSystem.hh:123
@ None
Definition: XrdClFileSystem.hh:124
Definition: XrdClOperationHandlers.hh:41
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:72
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:77
Definition: XrdClFileOperations.hh:115
ResponseHandler * Create(std::function< void(XRootDStatus &, StatInfo &)> func)
Definition: XrdClFileOperations.hh:131
ExResp(XrdCl::File &file)
Definition: XrdClFileOperations.hh:121
XrdCl::File & file
The underlying XrdCl::File object.
Definition: XrdClFileOperations.hh:145
Definition: XrdClOperationHandlers.hh:554