xrootd
XrdClFile.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // Copyright (c) 2011-2014 by European Organization for Nuclear Research (CERN)
3 // Author: Lukasz Janyst <ljanyst@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 __XRD_CL_FILE_HH__
26 #define __XRD_CL_FILE_HH__
27 
28 #include "XrdCl/XrdClFileSystem.hh"
30 #include "XrdOuc/XrdOucCompiler.hh"
31 #include <stdint.h>
32 #include <string>
33 #include <vector>
34 #include <sys/uio.h>
35 
36 namespace XrdCl
37 {
38  class FileStateHandler;
39  class FilePlugIn;
40 
41  //----------------------------------------------------------------------------
43  //----------------------------------------------------------------------------
44  class File
45  {
46  public:
47 
49  {
52  };
53 
54  //------------------------------------------------------------------------
56  //------------------------------------------------------------------------
57  File( bool enablePlugIns = true );
58 
59  //------------------------------------------------------------------------
61  //------------------------------------------------------------------------
62  File( VirtRedirect virtRedirect, bool enablePlugIns = true );
63 
64  //------------------------------------------------------------------------
66  //------------------------------------------------------------------------
67  virtual ~File();
68 
69  //------------------------------------------------------------------------
79  //------------------------------------------------------------------------
80  XRootDStatus Open( const std::string &url,
81  OpenFlags::Flags flags,
82  Access::Mode mode,
83  ResponseHandler *handler,
84  uint16_t timeout = 0 )
86 
87  //------------------------------------------------------------------------
96  //------------------------------------------------------------------------
97  XRootDStatus Open( const std::string &url,
98  OpenFlags::Flags flags,
99  Access::Mode mode = Access::None,
100  uint16_t timeout = 0 )
102 
103  //------------------------------------------------------------------------
110  //------------------------------------------------------------------------
112  uint16_t timeout = 0 )
114 
115  //------------------------------------------------------------------------
121  //------------------------------------------------------------------------
122  XRootDStatus Close( uint16_t timeout = 0 ) XRD_WARN_UNUSED_RESULT;
123 
124  //------------------------------------------------------------------------
134  //------------------------------------------------------------------------
135  XRootDStatus Stat( bool force,
136  ResponseHandler *handler,
137  uint16_t timeout = 0 )
139 
140  //------------------------------------------------------------------------
148  //------------------------------------------------------------------------
149  XRootDStatus Stat( bool force,
150  StatInfo *&response,
151  uint16_t timeout = 0 )
153 
154 
155  //------------------------------------------------------------------------
168  //------------------------------------------------------------------------
169  XRootDStatus Read( uint64_t offset,
170  uint32_t size,
171  void *buffer,
172  ResponseHandler *handler,
173  uint16_t timeout = 0 )
175 
176  //------------------------------------------------------------------------
186  //------------------------------------------------------------------------
187  XRootDStatus Read( uint64_t offset,
188  uint32_t size,
189  void *buffer,
190  uint32_t &bytesRead,
191  uint16_t timeout = 0 )
193 
194  //------------------------------------------------------------------------
206  //------------------------------------------------------------------------
207  XRootDStatus PgRead( uint64_t offset,
208  uint32_t size,
209  void *buffer,
210  ResponseHandler *handler,
211  uint16_t timeout = 0 )
213 
214  //------------------------------------------------------------------------
225  //------------------------------------------------------------------------
226  XRootDStatus PgRead( uint64_t offset,
227  uint32_t size,
228  void *buffer,
229  uint32_t &bytesRead,
230  std::vector<uint32_t> &cksums,
231  uint16_t timeout = 0 )
233 
234  //------------------------------------------------------------------------
247  //------------------------------------------------------------------------
248  XRootDStatus Write( uint64_t offset,
249  uint32_t size,
250  const void *buffer,
251  ResponseHandler *handler,
252  uint16_t timeout = 0 )
254 
255  //------------------------------------------------------------------------
268  //------------------------------------------------------------------------
269  XRootDStatus Write( uint64_t offset,
270  uint32_t size,
271  const void *buffer,
272  uint16_t timeout = 0 )
274 
275  //------------------------------------------------------------------------
286  //------------------------------------------------------------------------
287  XRootDStatus PgWrite( uint64_t offset,
288  uint32_t size,
289  const void *buffer,
290  std::vector<uint32_t> &cksums,
291  ResponseHandler *handler,
292  uint16_t timeout = 0 )
294 
295  //------------------------------------------------------------------------
305  //------------------------------------------------------------------------
306  XRootDStatus PgWrite( uint64_t offset,
307  uint32_t size,
308  const void *buffer,
309  std::vector<uint32_t> &cksums,
310  uint16_t timeout = 0 )
312 
313  //------------------------------------------------------------------------
320  //------------------------------------------------------------------------
322  uint16_t timeout = 0 )
324 
325 
326  //------------------------------------------------------------------------
332  //------------------------------------------------------------------------
333  XRootDStatus Sync( uint16_t timeout = 0 ) XRD_WARN_UNUSED_RESULT;
334 
335  //------------------------------------------------------------------------
343  //------------------------------------------------------------------------
344  XRootDStatus Truncate( uint64_t size,
345  ResponseHandler *handler,
346  uint16_t timeout = 0 )
348 
349 
350  //------------------------------------------------------------------------
357  //------------------------------------------------------------------------
358  XRootDStatus Truncate( uint64_t size,
359  uint16_t timeout = 0 )
361 
362  //------------------------------------------------------------------------
378  //------------------------------------------------------------------------
380  void *buffer,
381  ResponseHandler *handler,
382  uint16_t timeout = 0 )
384 
385  //------------------------------------------------------------------------
401  //------------------------------------------------------------------------
403  void *buffer,
404  VectorReadInfo *&vReadInfo,
405  uint16_t timeout = 0 )
407 
408  //------------------------------------------------------------------------
416  //------------------------------------------------------------------------
418  ResponseHandler *handler,
419  uint16_t timeout = 0 )
421 
422  //------------------------------------------------------------------------
429  //------------------------------------------------------------------------
431  uint16_t timeout = 0 )
433 
434  //------------------------------------------------------------------------
444  //------------------------------------------------------------------------
445  XRootDStatus WriteV( uint64_t offset,
446  const struct iovec *iov,
447  int iovcnt,
448  ResponseHandler *handler,
449  uint16_t timeout = 0 );
450 
451  //------------------------------------------------------------------------
461  //------------------------------------------------------------------------
462  XRootDStatus WriteV( uint64_t offset,
463  const struct iovec *iov,
464  int iovcnt,
465  uint16_t timeout = 0 );
466 
467  //------------------------------------------------------------------------
478  //------------------------------------------------------------------------
479  XRootDStatus Fcntl( const Buffer &arg,
480  ResponseHandler *handler,
481  uint16_t timeout = 0 )
483 
484  //------------------------------------------------------------------------
493  //------------------------------------------------------------------------
494  XRootDStatus Fcntl( const Buffer &arg,
495  Buffer *&response,
496  uint16_t timeout = 0 )
498 
499  //------------------------------------------------------------------------
508  //------------------------------------------------------------------------
510  uint16_t timeout = 0 )
512 
513  //------------------------------------------------------------------------
520  //------------------------------------------------------------------------
522  uint16_t timeout = 0 )
524 
525  //------------------------------------------------------------------------
536  //------------------------------------------------------------------------
537  XRootDStatus SetXAttr( const std::vector<xattr_t> &attrs,
538  ResponseHandler *handler,
539  uint16_t timeout = 0 );
540 
541  //------------------------------------------------------------------------
550  //------------------------------------------------------------------------
551  XRootDStatus SetXAttr( const std::vector<xattr_t> &attrs,
552  std::vector<XAttrStatus> &result,
553  uint16_t timeout = 0 );
554 
555  //------------------------------------------------------------------------
566  //------------------------------------------------------------------------
567  XRootDStatus GetXAttr( const std::vector<std::string> &attrs,
568  ResponseHandler *handler,
569  uint16_t timeout = 0 );
570 
571  //------------------------------------------------------------------------
580  //------------------------------------------------------------------------
581  XRootDStatus GetXAttr( const std::vector<std::string> &attrs,
582  std::vector<XAttr> &result,
583  uint16_t timeout = 0 );
584 
585  //------------------------------------------------------------------------
596  //------------------------------------------------------------------------
597  XRootDStatus DelXAttr( const std::vector<std::string> &attrs,
598  ResponseHandler *handler,
599  uint16_t timeout = 0 );
600 
601  //------------------------------------------------------------------------
610  //------------------------------------------------------------------------
611  XRootDStatus DelXAttr( const std::vector<std::string> &attrs,
612  std::vector<XAttrStatus> &result,
613  uint16_t timeout = 0 );
614 
615  //------------------------------------------------------------------------
625  //------------------------------------------------------------------------
627  uint16_t timeout = 0 );
628 
629  //------------------------------------------------------------------------
637  //------------------------------------------------------------------------
638  XRootDStatus ListXAttr( std::vector<XAttr> &result,
639  uint16_t timeout = 0 );
640 
641  //------------------------------------------------------------------------
643  //------------------------------------------------------------------------
644  bool IsOpen() const;
645 
646  //------------------------------------------------------------------------
653  //------------------------------------------------------------------------
654  bool SetProperty( const std::string &name, const std::string &value );
655 
656  //------------------------------------------------------------------------
664  //------------------------------------------------------------------------
665  bool GetProperty( const std::string &name, std::string &value ) const;
666 
667  private:
671  };
672 }
673 
674 #endif // __XRD_CL_FILE_HH__
#define XRD_WARN_UNUSED_RESULT
Definition: XrdOucCompiler.hh:31
Binary blob representation.
Definition: XrdClBuffer.hh:34
Close operation (.
Definition: XrdClFileOperations.hh:304
Fcntl operation (.
Definition: XrdClFileOperations.hh:748
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:39
Handle the stateful operations.
Definition: XrdClFileStateHandler.hh:50
A file.
Definition: XrdClFile.hh:45
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
virtual ~File()
Destructor.
VirtRedirect
Definition: XrdClFile.hh:49
@ EnableVirtRedirect
Definition: XrdClFile.hh:50
@ DisableVirtRedirect
Definition: XrdClFile.hh:51
bool IsOpen() const
Check if the file is open.
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
File(VirtRedirect virtRedirect, bool enablePlugIns=true)
Constructor.
XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool GetProperty(const std::string &name, std::string &value) const
XRootDStatus GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus DelXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
File(bool enablePlugIns=true)
Constructor.
XRootDStatus PgRead(uint64_t offset, uint32_t size, 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
FileStateHandler * pStateHandler
Definition: XrdClFile.hh:668
FilePlugIn * pPlugIn
Definition: XrdClFile.hh:669
bool SetProperty(const std::string &name, const std::string &value)
bool pEnablePlugIns
Definition: XrdClFile.hh:670
XRootDStatus PgWrite(uint64_t offset, uint32_t size, const void *buffer, std::vector< uint32_t > &cksums, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Open operation (.
Definition: XrdClFileOperations.hh:106
Read operation (.
Definition: XrdClFileOperations.hh:247
Handle an async response.
Definition: XrdClXRootDResponses.hh:975
Object stat info.
Definition: XrdClXRootDResponses.hh:396
Sync operation (.
Definition: XrdClFileOperations.hh:470
VectorRead operation (.
Definition: XrdClFileOperations.hh:579
Vector read info.
Definition: XrdClXRootDResponses.hh:910
VectorWrite operation (.
Definition: XrdClFileOperations.hh:636
Visa operation (.
Definition: XrdClFileOperations.hh:802
Write operation (.
Definition: XrdClFileOperations.hh:413
WriteV operation (.
Definition: XrdClFileOperations.hh:691
Request status.
Definition: XrdClXRootDResponses.hh:215
Definition: XrdClAnyObject.hh:26
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition: XrdClXRootDResponses.hh:285
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:904
Access mode.
Definition: XrdClFileSystem.hh:117
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
none object for initializing empty Optional
Definition: XrdClOptional.hh:35
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:71
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:76
Extended attribute operation status.
Definition: XrdClXRootDResponses.hh:291
Extended attributes with status.
Definition: XrdClXRootDResponses.hh:309