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;
237 return this->
zip->Read( offset, size, buffer, handler, 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;
295 return this->
zip->ReadFrom( fn, offset, size, buffer, handler, 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;
354 return this->
zip->Write( size, buffer, handler, 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;
414 return this->
zip->AppendFile( fn, crc32, size, buffer, handler, 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:467
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
Definition: XrdClAnyObject.hh:32
Definition: XrdClZipOperations.hh:387
std::string ToString()
Definition: XrdClZipOperations.hh:216
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:37
Definition: XrdClZipOperations.hh:268
Directory list.
Definition: XrdClXRootDResponses.hh:649
Definition: XrdClZipOperations.hh:211
Read operation (.
Definition: XrdClZipOperations.hh:197
Write operation (.
Definition: XrdClZipOperations.hh:315
std::string ToString()
Definition: XrdClZipOperations.hh:334
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:508
std::string ToString()
Definition: XrdClZipOperations.hh:392
Object stat info.
Definition: XrdClXRootDResponses.hh:399
Definition: XrdClOperationTimeout.hh:19
Definition: XrdClZipOperations.hh:149
Definition: XrdClZipOperations.hh:149
Definition: XrdClZipOperations.hh:211
CloseFileImpl< false > CloseFile
Definition: XrdClZipOperations.hh:475
OpenFile operation (.
Definition: XrdClZipOperations.hh:135
Definition: XrdClZipOperations.hh:91
AppendFile operation (.
Definition: XrdClZipOperations.hh:373
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:766
OpenArchive operation (.
Definition: XrdClZipOperations.hh:77
Definition: XrdClZipOperations.hh:387
CloseFile operation (.
Definition: XrdClZipOperations.hh:434
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
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:610
CloseArchive operation (.
Definition: XrdClZipOperations.hh:584
std::string ToString()
Definition: XrdClZipOperations.hh:273
Read operation (.
Definition: XrdClZipOperations.hh:254
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:559
Definition: XrdClZipOperations.hh:27
Definition: XrdClZipOperations.hh:387
std::string ToString()
Definition: XrdClZipOperations.hh:494
Definition: XrdClZipOperations.hh:268
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:287
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
Definition: XrdClZipOperations.hh:211
virtual ~ZipOperation()
Destructor.
Definition: XrdClZipOperations.hh:60
CloseArchiveImpl< false > CloseArchive(Ctx< ZipArchive > zip, uint16_t timeout=0)
Factory for creating CloseFileImpl objects.
Definition: XrdClZipOperations.hh:621
std::string ToString()
Definition: XrdClZipOperations.hh:596
std::tuple< Args...> args
Operation arguments.
Definition: XrdClOperations.hh:761
Definition: XrdClArg.hh:232
Definition: XrdClArg.hh:294
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:348
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:230
void Set(Type object, bool own=true)
Definition: XrdClAnyObject.hh:59
Request status.
Definition: XrdClXRootDResponses.hh:218
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:535
std::string ToString()
Definition: XrdClZipOperations.hh:96
Definition: XrdClZipOperations.hh:268
Definition: XrdClZipOperations.hh:149
ZipStat operation (.
Definition: XrdClZipOperations.hh:482
Definition: XrdClZipOperations.hh:329
std::string ToString()
Definition: XrdClZipOperations.hh:446
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: XrdClZipOperations.hh:149
friend class ZipOperation
Definition: XrdClZipOperations.hh:30
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:110
Definition: XrdClOperations.hh:58
Definition: XrdClZipOperations.hh:329
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback function.
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:168
std::string ToString()
Definition: XrdClZipOperations.hh:545
std::string ToString()
Definition: XrdClZipOperations.hh:154
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
Ctx< ZipArchive > zip
The file object itself.
Definition: XrdClZipOperations.hh:70
Nothing.
Definition: XrdClFileSystem.hh:77
Definition: XrdClZipOperations.hh:387
ZipList operation (.
Definition: XrdClZipOperations.hh:533
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:75
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:123
ZipOperation(Ctx< ZipArchive > zip, Arguments...args)
Definition: XrdClZipOperations.hh:39
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClZipOperations.hh:406
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
ZipOperation(ZipOperation< Derived, from, Response, Arguments...> &&op)
Definition: XrdClZipOperations.hh:51
Definition: XrdClZipOperations.hh:268
Definition: XrdClOperations.hh:541
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