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 "XrdCl/XrdClOptional.hh"
31 #include "XrdOuc/XrdOucCompiler.hh"
32 #include <cstdint>
33 #include <string>
34 #include <vector>
35 #include <sys/uio.h>
36 
37 namespace XrdCl
38 {
39  struct FileImpl;
40  class FilePlugIn;
41 
42  //----------------------------------------------------------------------------
44  //----------------------------------------------------------------------------
45  class File
46  {
47  public:
48 
50  {
53  };
54 
55  //------------------------------------------------------------------------
57  //------------------------------------------------------------------------
58  File( bool enablePlugIns = true );
59 
60  //------------------------------------------------------------------------
62  //------------------------------------------------------------------------
63  File( VirtRedirect virtRedirect, bool enablePlugIns = true );
64 
65  //------------------------------------------------------------------------
67  //------------------------------------------------------------------------
68  virtual ~File();
69 
70  //------------------------------------------------------------------------
80  //------------------------------------------------------------------------
81  XRootDStatus Open( const std::string &url,
82  OpenFlags::Flags flags,
83  Access::Mode mode,
84  ResponseHandler *handler,
85  uint16_t timeout = 0 )
87 
88  //------------------------------------------------------------------------
97  //------------------------------------------------------------------------
98  XRootDStatus Open( const std::string &url,
99  OpenFlags::Flags flags,
100  Access::Mode mode = Access::None,
101  uint16_t timeout = 0 )
103 
104  //------------------------------------------------------------------------
111  //------------------------------------------------------------------------
113  uint16_t timeout = 0 )
115 
116  //------------------------------------------------------------------------
122  //------------------------------------------------------------------------
123  XRootDStatus Close( uint16_t timeout = 0 ) XRD_WARN_UNUSED_RESULT;
124 
125  //------------------------------------------------------------------------
135  //------------------------------------------------------------------------
136  XRootDStatus Stat( bool force,
137  ResponseHandler *handler,
138  uint16_t timeout = 0 )
140 
141  //------------------------------------------------------------------------
149  //------------------------------------------------------------------------
150  XRootDStatus Stat( bool force,
151  StatInfo *&response,
152  uint16_t timeout = 0 )
154 
155 
156  //------------------------------------------------------------------------
169  //------------------------------------------------------------------------
170  XRootDStatus Read( uint64_t offset,
171  uint32_t size,
172  void *buffer,
173  ResponseHandler *handler,
174  uint16_t timeout = 0 )
176 
177  //------------------------------------------------------------------------
187  //------------------------------------------------------------------------
188  XRootDStatus Read( uint64_t offset,
189  uint32_t size,
190  void *buffer,
191  uint32_t &bytesRead,
192  uint16_t timeout = 0 )
194 
195  //------------------------------------------------------------------------
207  //------------------------------------------------------------------------
208  XRootDStatus PgRead( uint64_t offset,
209  uint32_t size,
210  void *buffer,
211  ResponseHandler *handler,
212  uint16_t timeout = 0 )
214 
215  //------------------------------------------------------------------------
226  //------------------------------------------------------------------------
227  XRootDStatus PgRead( uint64_t offset,
228  uint32_t size,
229  void *buffer,
230  std::vector<uint32_t> &cksums,
231  uint32_t &bytesRead,
232  uint16_t timeout = 0 )
234 
235  //------------------------------------------------------------------------
248  //------------------------------------------------------------------------
249  XRootDStatus Write( uint64_t offset,
250  uint32_t size,
251  const void *buffer,
252  ResponseHandler *handler,
253  uint16_t timeout = 0 )
255 
256  //------------------------------------------------------------------------
269  //------------------------------------------------------------------------
270  XRootDStatus Write( uint64_t offset,
271  uint32_t size,
272  const void *buffer,
273  uint16_t timeout = 0 )
275 
276  //------------------------------------------------------------------------
286  //------------------------------------------------------------------------
287  XRootDStatus Write( uint64_t offset,
288  Buffer &&buffer,
289  ResponseHandler *handler,
290  uint16_t timeout = 0 );
291 
292  //------------------------------------------------------------------------
301  //------------------------------------------------------------------------
302  XRootDStatus Write( uint64_t offset,
303  Buffer &&buffer,
304  uint16_t timeout = 0 );
305 
306  //------------------------------------------------------------------------
319  //------------------------------------------------------------------------
320  XRootDStatus Write( uint64_t offset,
321  uint32_t size,
322  Optional<uint64_t> fdoff,
323  int fd,
324  ResponseHandler *handler,
325  uint16_t timeout = 0 );
326 
327  //------------------------------------------------------------------------
339  //------------------------------------------------------------------------
340  XRootDStatus Write( uint64_t offset,
341  uint32_t size,
342  Optional<uint64_t> fdoff,
343  int fd,
344  uint16_t timeout = 0 );
345 
346  //------------------------------------------------------------------------
357  //------------------------------------------------------------------------
358  XRootDStatus PgWrite( uint64_t offset,
359  uint32_t size,
360  const void *buffer,
361  std::vector<uint32_t> &cksums,
362  ResponseHandler *handler,
363  uint16_t timeout = 0 )
365 
366  //------------------------------------------------------------------------
376  //------------------------------------------------------------------------
377  XRootDStatus PgWrite( uint64_t offset,
378  uint32_t size,
379  const void *buffer,
380  std::vector<uint32_t> &cksums,
381  uint16_t timeout = 0 )
383 
384  //------------------------------------------------------------------------
391  //------------------------------------------------------------------------
393  uint16_t timeout = 0 )
395 
396 
397  //------------------------------------------------------------------------
403  //------------------------------------------------------------------------
404  XRootDStatus Sync( uint16_t timeout = 0 ) XRD_WARN_UNUSED_RESULT;
405 
406  //------------------------------------------------------------------------
414  //------------------------------------------------------------------------
415  XRootDStatus Truncate( uint64_t size,
416  ResponseHandler *handler,
417  uint16_t timeout = 0 )
419 
420 
421  //------------------------------------------------------------------------
428  //------------------------------------------------------------------------
429  XRootDStatus Truncate( uint64_t size,
430  uint16_t timeout = 0 )
432 
433  //------------------------------------------------------------------------
449  //------------------------------------------------------------------------
450  XRootDStatus VectorRead( const ChunkList &chunks,
451  void *buffer,
452  ResponseHandler *handler,
453  uint16_t timeout = 0 )
455 
456  //------------------------------------------------------------------------
472  //------------------------------------------------------------------------
473  XRootDStatus VectorRead( const ChunkList &chunks,
474  void *buffer,
475  VectorReadInfo *&vReadInfo,
476  uint16_t timeout = 0 )
478 
479  //------------------------------------------------------------------------
487  //------------------------------------------------------------------------
488  XRootDStatus VectorWrite( const ChunkList &chunks,
489  ResponseHandler *handler,
490  uint16_t timeout = 0 )
492 
493  //------------------------------------------------------------------------
500  //------------------------------------------------------------------------
501  XRootDStatus VectorWrite( const ChunkList &chunks,
502  uint16_t timeout = 0 )
504 
505  //------------------------------------------------------------------------
515  //------------------------------------------------------------------------
516  XRootDStatus WriteV( uint64_t offset,
517  const struct iovec *iov,
518  int iovcnt,
519  ResponseHandler *handler,
520  uint16_t timeout = 0 );
521 
522  //------------------------------------------------------------------------
531  //------------------------------------------------------------------------
532  XRootDStatus WriteV( uint64_t offset,
533  const struct iovec *iov,
534  int iovcnt,
535  uint16_t timeout = 0 );
536 
537  //------------------------------------------------------------------------
547  //------------------------------------------------------------------------
548  XRootDStatus ReadV( uint64_t offset,
549  struct iovec *iov,
550  int iovcnt,
551  ResponseHandler *handler,
552  uint16_t timeout = 0 );
553 
554  //------------------------------------------------------------------------
564  //------------------------------------------------------------------------
565  XRootDStatus ReadV( uint64_t offset,
566  struct iovec *iov,
567  int iovcnt,
568  uint32_t &bytesRead,
569  uint16_t timeout = 0 );
570 
571  //------------------------------------------------------------------------
582  //------------------------------------------------------------------------
583  XRootDStatus Fcntl( const Buffer &arg,
584  ResponseHandler *handler,
585  uint16_t timeout = 0 )
587 
588  //------------------------------------------------------------------------
597  //------------------------------------------------------------------------
598  XRootDStatus Fcntl( const Buffer &arg,
599  Buffer *&response,
600  uint16_t timeout = 0 )
602 
603  //------------------------------------------------------------------------
612  //------------------------------------------------------------------------
614  uint16_t timeout = 0 )
616 
617  //------------------------------------------------------------------------
624  //------------------------------------------------------------------------
625  XRootDStatus Visa( Buffer *&visa,
626  uint16_t timeout = 0 )
628 
629  //------------------------------------------------------------------------
640  //------------------------------------------------------------------------
641  XRootDStatus SetXAttr( const std::vector<xattr_t> &attrs,
642  ResponseHandler *handler,
643  uint16_t timeout = 0 );
644 
645  //------------------------------------------------------------------------
654  //------------------------------------------------------------------------
655  XRootDStatus SetXAttr( const std::vector<xattr_t> &attrs,
656  std::vector<XAttrStatus> &result,
657  uint16_t timeout = 0 );
658 
659  //------------------------------------------------------------------------
670  //------------------------------------------------------------------------
671  XRootDStatus GetXAttr( const std::vector<std::string> &attrs,
672  ResponseHandler *handler,
673  uint16_t timeout = 0 );
674 
675  //------------------------------------------------------------------------
684  //------------------------------------------------------------------------
685  XRootDStatus GetXAttr( const std::vector<std::string> &attrs,
686  std::vector<XAttr> &result,
687  uint16_t timeout = 0 );
688 
689  //------------------------------------------------------------------------
700  //------------------------------------------------------------------------
701  XRootDStatus DelXAttr( const std::vector<std::string> &attrs,
702  ResponseHandler *handler,
703  uint16_t timeout = 0 );
704 
705  //------------------------------------------------------------------------
714  //------------------------------------------------------------------------
715  XRootDStatus DelXAttr( const std::vector<std::string> &attrs,
716  std::vector<XAttrStatus> &result,
717  uint16_t timeout = 0 );
718 
719  //------------------------------------------------------------------------
729  //------------------------------------------------------------------------
731  uint16_t timeout = 0 );
732 
733  //------------------------------------------------------------------------
741  //------------------------------------------------------------------------
742  XRootDStatus ListXAttr( std::vector<XAttr> &result,
743  uint16_t timeout = 0 );
744 
745  //------------------------------------------------------------------------
752  //------------------------------------------------------------------------
753  XRootDStatus TryOtherServer( uint16_t timeout = 0 );
754 
755  //------------------------------------------------------------------------
757  //------------------------------------------------------------------------
758  bool IsOpen() const;
759 
760  //------------------------------------------------------------------------
762  //------------------------------------------------------------------------
763  bool IsSecure() const;
764 
765  //------------------------------------------------------------------------
773  //------------------------------------------------------------------------
774  bool SetProperty( const std::string &name, const std::string &value );
775 
776  //------------------------------------------------------------------------
784  //------------------------------------------------------------------------
785  bool GetProperty( const std::string &name, std::string &value ) const;
786 
787  private:
788 
789  template<bool HasHndl>
790  friend class CheckpointImpl;
791 
792  template<bool HasHndl>
793  friend class ChkptWrtImpl;
794 
795  template <bool HasHndl>
796  friend class ChkptWrtVImpl;
797 
798  //------------------------------------------------------------------------
808  //------------------------------------------------------------------------
809  XRootDStatus Checkpoint( kXR_char code,
810  ResponseHandler *handler,
811  uint16_t timeout = 0 );
812 
813  //------------------------------------------------------------------------
823  //------------------------------------------------------------------------
824  XRootDStatus ChkptWrt( uint64_t offset,
825  uint32_t size,
826  const void *buffer,
827  ResponseHandler *handler,
828  uint16_t timeout = 0 );
829 
830  //------------------------------------------------------------------------
840  //------------------------------------------------------------------------
841  XRootDStatus ChkptWrtV( uint64_t offset,
842  const struct iovec *iov,
843  int iovcnt,
844  ResponseHandler *handler,
845  uint16_t timeout = 0 );
846 
847  FileImpl *pImpl;
848  FilePlugIn *pPlugIn;
849  bool pEnablePlugIns;
850  };
851 }
852 
853 #endif // __XRD_CL_FILE_HH__
unsigned char kXR_char
Definition: XPtypes.hh:65
#define XRD_WARN_UNUSED_RESULT
int Mode
Binary blob representation.
Definition: XrdClBuffer.hh:34
Checkpoint operation (.
Checkpointed write operation (.
Checkpointed WriteV operation (.
Fcntl operation (.
An interface for file plug-ins.
A file.
Definition: XrdClFile.hh:46
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:206
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:151
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:764
bool IsSecure() const
Check if the file is using an encrypted connection.
Definition: XrdClFile.cc:857
@ EnableVirtRedirect
Definition: XrdClFile.hh:51
@ DisableVirtRedirect
Definition: XrdClFile.hh:52
bool IsOpen() const
Check if the file is open.
Definition: XrdClFile.cc:846
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:440
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:665
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:468
XRootDStatus Open(const std::string &url, OpenFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:99
bool GetProperty(const std::string &name, std::string &value) const
Definition: XrdClFile.cc:878
XRootDStatus GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:698
XRootDStatus DelXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:731
File(bool enablePlugIns=true)
Constructor.
Definition: XrdClFile.cc:59
XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:525
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:286
XRootDStatus PgRead(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:245
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:177
virtual ~File()
Destructor.
Definition: XrdClFile.cc:79
bool SetProperty(const std::string &name, const std::string &value)
Definition: XrdClFile.cc:867
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:414
XRootDStatus TryOtherServer(uint16_t timeout=0)
Definition: XrdClFile.cc:838
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
Definition: XrdClFile.cc:380
XRootDStatus ReadV(uint64_t offset, struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
Definition: XrdClFile.cc:565
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFile.cc:498
Handle an async response.
Object stat info.
Visa operation (.
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
std::vector< ChunkInfo > ChunkList
List of chunks.
none object for initializing empty Optional
Access mode.
Mode
Access mode.
Open flags, may be or'd when appropriate.
Flags
Open flags, may be or'd when appropriate.
Extended attribute operation status.
Extended attributes with status.