xrootd
XrdClZipListHandler.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// Copyright (c) 2011-2014 by European Organization for Nuclear Research (CERN)
3// Author: Michal Simon <michal.simon@cern.ch>
4//------------------------------------------------------------------------------
5// This file is part of the XRootD software suite.
6//
7// XRootD is free software: you can redistribute it and/or modify
8// it under the terms of the GNU Lesser General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// XRootD is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU Lesser General Public License
18// along with XRootD. If not, see <http://www.gnu.org/licenses/>.
19//
20// In applying this licence, CERN does not waive the privileges and immunities
21// granted to it by virtue of its status as an Intergovernmental Organization
22// or submit itself to any jurisdiction.
23//------------------------------------------------------------------------------
24
25#ifndef SRC_XRDCL_XRDCLZIPLISTHANDLER_HH_
26#define SRC_XRDCL_XRDCLZIPLISTHANDLER_HH_
27
30#include "XrdCl/XrdClFile.hh"
34
35#include <string>
36#include <memory>
37
38namespace XrdCl
39{
40
41 //----------------------------------------------------------------------------
42 // DirList : Handle not a directory error
43 //----------------------------------------------------------------------------
45 {
46
47 //------------------------------------------------------------------------
52 //1 - DONE : we are done
53 //------------------------------------------------------------------------
54 enum Steps
55 {
56 STAT = 0,
57 OPEN = 1,
58 CLOSE = 2,
59 DONE = 4
60 };
61
62 public:
63
64 //------------------------------------------------------------------------
72 //------------------------------------------------------------------------
73 ZipListHandler( const URL &url,
74 const std::string &path,
76 ResponseHandler *handler,
77 uint16_t timeout = 0 ) :
78 pUrl( url ), pFlags( flags ), pHandler( handler ),
79 pTimeout( timeout ), pStartTime( time( 0 ) ),
80 pZip( pFile ), pStep( STAT )
81 {
82 if( !pTimeout )
83 {
84 int val = DefaultRequestTimeout;
85 DefaultEnv::GetEnv()->GetInt( "RequestTimeout", val );
86 pTimeout = val;
87 }
88
89 pUrl.SetPath( path );
90 }
91
92 //------------------------------------------------------------------------
94 //------------------------------------------------------------------------
96 {
97
98 }
99
100 //------------------------------------------------------------------------
102 //------------------------------------------------------------------------
103 virtual void HandleResponse( XrdCl::XRootDStatus *statusptr,
104 XrdCl::AnyObject *responseptr );
105 private:
106
107 //------------------------------------------------------------------------
109 //------------------------------------------------------------------------
110 void DoDirList( time_t timeLeft );
111
112 //------------------------------------------------------------------------
114 //------------------------------------------------------------------------
115 void DoZipOpen( time_t timeLeft );
116
117 //------------------------------------------------------------------------
119 //------------------------------------------------------------------------
120 void DoZipClose( time_t timeLeft );
121
125 uint16_t pTimeout;
126
127 std::unique_ptr<DirectoryList> pDirList;
129
132
133 int pStep;
134
135 };
136
137} /* namespace XrdCl */
138
139#endif /* SRC_XRDCL_XRDCLZIPLISTHANDLER_HH_ */
Definition: XrdClAnyObject.hh:33
static Env * GetEnv()
Get default client environment.
bool GetInt(const std::string &key, int &value)
A file.
Definition: XrdClFile.hh:45
Handle an async response.
Definition: XrdClXRootDResponses.hh:855
URL representation.
Definition: XrdClURL.hh:31
void SetPath(const std::string &path)
Set the path.
Definition: XrdClURL.hh:204
Request status.
Definition: XrdClXRootDResponses.hh:213
Definition: XrdClZipArchiveReader.hh:47
Definition: XrdClZipListHandler.hh:45
std::unique_ptr< DirectoryList > pDirList
Definition: XrdClZipListHandler.hh:127
ZipArchiveReader pZip
Definition: XrdClZipListHandler.hh:131
void DoZipOpen(time_t timeLeft)
Open the ZIP archive.
ZipListHandler(const URL &url, const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClZipListHandler.hh:73
File pFile
Definition: XrdClZipListHandler.hh:130
Steps
Definition: XrdClZipListHandler.hh:55
@ CLOSE
Definition: XrdClZipListHandler.hh:58
@ DONE
Definition: XrdClZipListHandler.hh:59
@ STAT
Definition: XrdClZipListHandler.hh:56
@ OPEN
Definition: XrdClZipListHandler.hh:57
time_t pStartTime
Definition: XrdClZipListHandler.hh:128
void DoZipClose(time_t timeLeft)
Close the ZIP archive.
virtual void HandleResponse(XrdCl::XRootDStatus *statusptr, XrdCl::AnyObject *responseptr)
Handle the server response.
~ZipListHandler()
Destructor.
Definition: XrdClZipListHandler.hh:95
DirListFlags::Flags pFlags
Definition: XrdClZipListHandler.hh:123
int pStep
Definition: XrdClZipListHandler.hh:133
ResponseHandler * pHandler
Definition: XrdClZipListHandler.hh:124
void DoDirList(time_t timeLeft)
Do normal listing if it is a directory (and not a ZIP archive)
URL pUrl
Definition: XrdClZipListHandler.hh:122
uint16_t pTimeout
Definition: XrdClZipListHandler.hh:125
Definition: XrdClAnyObject.hh:26
const int DefaultRequestTimeout
Definition: XrdClConstants.hh:49
Flags
Definition: XrdClFileSystem.hh:157