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>
91 enum { UrlArg, FlagsArg };
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 );
Definition XrdClAnyObject.hh:33
void Set(Type object, bool own=true)
Definition XrdClAnyObject.hh:59
AppendFile operation (.
Definition XrdClZipOperations.hh:375
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:406
@ CrcArg
Definition XrdClZipOperations.hh:387
@ FnArg
Definition XrdClZipOperations.hh:387
@ BufferArg
Definition XrdClZipOperations.hh:387
@ SizeArg
Definition XrdClZipOperations.hh:387
std::string ToString()
Definition XrdClZipOperations.hh:392
Definition XrdClArg.hh:234
CloseArchive operation (.
Definition XrdClZipOperations.hh:585
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:610
std::string ToString()
Definition XrdClZipOperations.hh:596
CloseFile operation (.
Definition XrdClZipOperations.hh:435
std::string ToString()
Definition XrdClZipOperations.hh:446
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:467
Definition XrdClOperations.hh:552
std::tuple< Args... > args
Operation arguments.
Definition XrdClOperations.hh:771
Derived< HasHndl > Timeout(uint16_t timeout)
Set operation timeout.
Definition XrdClOperations.hh:681
uint16_t timeout
Operation timeout.
Definition XrdClOperations.hh:776
Directory list.
Definition XrdClXRootDResponses.hh:650
OpenArchive operation (.
Definition XrdClZipOperations.hh:79
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:110
std::string ToString()
Definition XrdClZipOperations.hh:96
OpenFile operation (.
Definition XrdClZipOperations.hh:137
@ FlagsArg
Definition XrdClZipOperations.hh:149
@ Crc32Arg
Definition XrdClZipOperations.hh:149
@ FnArg
Definition XrdClZipOperations.hh:149
@ SizeArg
Definition XrdClZipOperations.hh:149
std::string ToString()
Definition XrdClZipOperations.hh:154
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:168
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition XrdClOperations.hh:309
Definition XrdClOperations.hh:64
Object stat info.
Definition XrdClXRootDResponses.hh:400
Request status.
Definition XrdClXRootDResponses.hh:219
ZipList operation (.
Definition XrdClZipOperations.hh:534
std::string ToString()
Definition XrdClZipOperations.hh:545
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:559
Definition XrdClZipOperations.hh:28
ZipOperation(ZipOperation< Derived, from, Response, Arguments... > &&op)
Definition XrdClZipOperations.hh:51
friend class ZipOperation
Definition XrdClZipOperations.hh:30
ZipOperation(Ctx< ZipArchive > zip, Arguments... args)
Definition XrdClZipOperations.hh:39
virtual ~ZipOperation()
Destructor.
Definition XrdClZipOperations.hh:60
Ctx< ZipArchive > zip
The file object itself.
Definition XrdClZipOperations.hh:70
Read operation (.
Definition XrdClZipOperations.hh:256
@ BufferArg
Definition XrdClZipOperations.hh:268
@ OffsetArg
Definition XrdClZipOperations.hh:268
@ FileNameArg
Definition XrdClZipOperations.hh:268
@ SizeArg
Definition XrdClZipOperations.hh:268
std::string ToString()
Definition XrdClZipOperations.hh:273
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:287
Read operation (.
Definition XrdClZipOperations.hh:199
std::string ToString()
Definition XrdClZipOperations.hh:216
@ OffsetArg
Definition XrdClZipOperations.hh:211
@ BufferArg
Definition XrdClZipOperations.hh:211
@ SizeArg
Definition XrdClZipOperations.hh:211
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:230
ZipStat operation (.
Definition XrdClZipOperations.hh:483
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:508
std::string ToString()
Definition XrdClZipOperations.hh:494
Write operation (.
Definition XrdClZipOperations.hh:317
std::string ToString()
Definition XrdClZipOperations.hh:334
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClZipOperations.hh:348
@ BufferArg
Definition XrdClZipOperations.hh:329
@ SizeArg
Definition XrdClZipOperations.hh:329
Definition XrdClAction.hh:34
ZipListImpl< false > List(Ctx< ZipArchive > zip)
Factory for creating ZipStatImpl objects.
Definition XrdClZipOperations.hh:574
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
CloseArchiveImpl< false > CloseArchive(Ctx< ZipArchive > zip, uint16_t timeout=0)
Factory for creating CloseFileImpl objects.
Definition XrdClZipOperations.hh:621
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition XrdClFileOperations.hh:535
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
CloseFileImpl< false > CloseFile
Definition XrdClZipOperations.hh:475
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
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
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
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
Definition XrdOucJson.hh:4517
Utility class for storing a pointer to operation context.
Definition XrdClCtx.hh:39
Flags
Open flags, may be or'd when appropriate.
Definition XrdClFileSystem.hh:76
@ None
Nothing.
Definition XrdClFileSystem.hh:77
Definition XrdClOperationHandlers.hh:662
bool IsOK() const
We're fine.
Definition XrdClStatus.hh:124