Go to the documentation of this file.
8 #ifndef SRC_XRDCL_XRDCLZIPOPERATIONS_HH_
9 #define SRC_XRDCL_XRDCLZIPOPERATIONS_HH_
26 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Arguments>
30 template<
template<
bool>
class, bool,
typename,
typename ...>
friend class ZipOperation;
76 template<
bool HasHndl>
112 std::string &url = std::get<UrlArg>( this->args ).Get();
114 uint16_t timeout = pipelineTimeout < this->timeout ?
115 pipelineTimeout : this->timeout;
116 return this->zip->OpenArchive( url, flags, handler, timeout );
127 std::move( flags ) ).
Timeout( timeout );
134 template<
bool HasHndl>
136 Arg<std::string>, Arg<OpenFlags::Flags>, Arg<uint64_t>, Arg<uint32_t>>
156 return "ZipOpenFile";
170 std::string &fn = std::get<FnArg>( this->
args ).Get();
172 uint64_t size = std::get<SizeArg>( this->
args ).Get();
173 uint32_t crc32 = std::get<Crc32Arg>( this->
args ).Get();
175 if( !st.
IsOK() )
return st;
189 std::move( size ), std::move( crc32 ) ).
Timeout( timeout );
196 template<
bool HasHndl>
198 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
232 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
233 uint32_t size = std::get<SizeArg>( this->
args ).Get();
234 void *buffer = std::get<BufferArg>( this->
args ).Get();
235 uint16_t
timeout = pipelineTimeout < this->timeout ?
236 pipelineTimeout : this->
timeout;
248 std::move( buffer ) ).
Timeout( timeout );
253 template<
bool HasHndl>
255 Arg<std::string>, Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
275 return "ZipReadFrom";
289 std::string &fn = std::get<FileNameArg>( this->
args ).Get();
290 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
291 uint32_t size = std::get<SizeArg>( this->
args ).Get();
292 void *buffer = std::get<BufferArg>( this->
args ).Get();
293 uint16_t
timeout = pipelineTimeout < this->timeout ?
294 pipelineTimeout : this->
timeout;
307 std::move( size ), std::move( buffer ) ).
Timeout( timeout );
314 template<
bool HasHndl>
316 Arg<uint32_t>, Arg<const void*>>
350 uint32_t size = std::get<SizeArg>( this->
args ).Get();
351 const void *buffer = std::get<BufferArg>( this->
args ).Get();
352 uint16_t
timeout = pipelineTimeout < this->timeout ?
353 pipelineTimeout : this->
timeout;
362 uint16_t timeout = 0 )
365 std::move( buffer ) ).
Timeout( timeout );
372 template<
bool HasHndl>
374 Arg<std::string>, Arg<uint32_t>, Arg<uint32_t>, Arg<const void*>>
408 std::string &fn = std::get<FnArg>( this->
args ).Get();
409 uint32_t crc32 = std::get<CrcArg>( this->
args ).Get();
410 uint32_t size = std::get<SizeArg>( this->
args ).Get();
411 const void *buffer = std::get<BufferArg>( this->
args ).Get();
412 uint16_t
timeout = pipelineTimeout < this->timeout ?
413 pipelineTimeout : this->
timeout;
426 std::move( size ), std::move( buffer ) ).
Timeout( timeout );
433 template<
bool HasHndl>
448 return "ZipCloseFile";
470 if( !st.
IsOK() )
return st;
481 template<
bool HasHndl>
512 if( !st.
IsOK() )
return st;
532 template<
bool HasHndl>
563 if( !st.
IsOK() )
return st;
583 template<
bool HasHndl>
612 uint16_t
timeout = pipelineTimeout < this->timeout ?
613 pipelineTimeout : this->
timeout;
614 return this->
zip->CloseArchive( handler,
timeout );
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:287
Read operation (.
Definition: XrdClZipOperations.hh:199
AppendFile operation (.
Definition: XrdClZipOperations.hh:375
Derived< HasHndl > Timeout(uint16_t timeout)
Set operation timeout.
Definition: XrdClOperations.hh:651
@ BufferArg
Definition: XrdClZipOperations.hh:329
CloseArchive operation (.
Definition: XrdClZipOperations.hh:585
@ BufferArg
Definition: XrdClZipOperations.hh:211
AppendFileImpl< false > AppendFile(Ctx< ZipArchive > zip, Arg< std::string > fn, Arg< uint32_t > crc32, Arg< uint32_t > size, Arg< const void * > buffer, uint16_t timeout=0)
Factory for creating ArchiveReadImpl objects.
Definition: XrdClZipOperations.hh:421
ZipListImpl< false > List(Ctx< ZipArchive > zip)
Factory for creating ZipStatImpl objects.
Definition: XrdClZipOperations.hh:574
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:110
Ctx< ZipArchive > zip
The file object itself.
Definition: XrdClZipOperations.hh:70
@ None
Nothing.
Definition: XrdClFileSystem.hh:77
@ SizeArg
Definition: XrdClZipOperations.hh:149
OpenFile operation (.
Definition: XrdClZipOperations.hh:137
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:746
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:38
Definition: XrdClOperations.hh:59
Read operation (.
Definition: XrdClZipOperations.hh:256
ZipOperation(ZipOperation< Derived, from, Response, Arguments... > &&op)
Definition: XrdClZipOperations.hh:51
std::string ToString()
Definition: XrdClZipOperations.hh:545
void Set(Type object, bool own=true)
Definition: XrdClAnyObject.hh:59
@ OffsetArg
Definition: XrdClZipOperations.hh:211
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:610
Write operation (.
Definition: XrdClZipOperations.hh:317
Definition: XrdClArg.hh:295
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:467
std::string ToString()
Definition: XrdClZipOperations.hh:494
@ FnArg
Definition: XrdClZipOperations.hh:387
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:358
ZipReadFromImpl< false > ReadFrom(Ctx< ZipArchive > zip, Arg< std::string > fn, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating ArchiveReadImpl objects.
Definition: XrdClZipOperations.hh:302
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:741
Definition: XrdClOperations.hh:522
OpenArchiveImpl< false > OpenArchive(Ctx< ZipArchive > zip, Arg< std::string > fn, Arg< OpenFlags::Flags > flags, uint16_t timeout=0)
Factory for creating OpenArchiveImpl objects.
Definition: XrdClZipOperations.hh:123
CloseFile operation (.
Definition: XrdClZipOperations.hh:435
std::string ToString()
Definition: XrdClZipOperations.hh:154
std::string ToString()
Definition: XrdClZipOperations.hh:446
virtual ~ZipOperation()
Destructor.
Definition: XrdClZipOperations.hh:60
@ SizeArg
Definition: XrdClZipOperations.hh:211
Request status.
Definition: XrdClXRootDResponses.hh:215
CloseArchiveImpl< false > CloseArchive(Ctx< ZipArchive > zip, uint16_t timeout=0)
Factory for creating CloseFileImpl objects.
Definition: XrdClZipOperations.hh:621
@ BufferArg
Definition: XrdClZipOperations.hh:268
std::string ToString()
Definition: XrdClZipOperations.hh:596
OpenArchive operation (.
Definition: XrdClZipOperations.hh:79
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:559
@ FileNameArg
Definition: XrdClZipOperations.hh:268
Directory list.
Definition: XrdClXRootDResponses.hh:646
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:264
std::string ToString()
Definition: XrdClZipOperations.hh:334
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:414
@ BufferArg
Definition: XrdClZipOperations.hh:387
@ CrcArg
Definition: XrdClZipOperations.hh:387
std::string ToString()
Definition: XrdClZipOperations.hh:96
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:230
friend class ZipOperation
Definition: XrdClZipOperations.hh:30
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120
OpenFileImpl< false > OpenFile(Ctx< ZipArchive > zip, Arg< std::string > fn, Arg< OpenFlags::Flags > flags=OpenFlags::None, Arg< uint64_t > size=0, Arg< uint32_t > crc32=0, uint16_t timeout=0)
Factory for creating OpenFileImpl objects.
Definition: XrdClZipOperations.hh:184
std::string ToString()
Definition: XrdClZipOperations.hh:216
ZipList operation (.
Definition: XrdClZipOperations.hh:534
ZipStat operation (.
Definition: XrdClZipOperations.hh:483
@ Crc32Arg
Definition: XrdClZipOperations.hh:149
ZipOperation(Ctx< ZipArchive > zip, Arguments... args)
Definition: XrdClZipOperations.hh:39
@ FnArg
Definition: XrdClZipOperations.hh:149
Definition: XrdClAnyObject.hh:26
std::string ToString()
Definition: XrdClZipOperations.hh:273
@ SizeArg
Definition: XrdClZipOperations.hh:387
Definition: XrdClArg.hh:233
@ OffsetArg
Definition: XrdClZipOperations.hh:268
Object stat info.
Definition: XrdClXRootDResponses.hh:396
@ FlagsArg
Definition: XrdClZipOperations.hh:149
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:406
@ UrlArg
Definition: XrdClZipOperations.hh:91
Definition: XrdClAnyObject.hh:33
@ SizeArg
Definition: XrdClZipOperations.hh:268
std::string ToString()
Definition: XrdClZipOperations.hh:392
CloseFileImpl< false > CloseFile
Definition: XrdClZipOperations.hh:475
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:508
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:76
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:168
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:348
Definition: XrdClZipOperations.hh:28
@ SizeArg
Definition: XrdClZipOperations.hh:329