XRootD
Loading...
Searching...
No Matches
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
32#include <cstdint>
33#include <string>
34#include <vector>
35#include <sys/uio.h>
36
37namespace XrdCl
38{
39 struct FileImpl;
40 class FilePlugIn;
41
42 //----------------------------------------------------------------------------
44 //----------------------------------------------------------------------------
45 class File
46 {
47 public:
48
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
XrdOucString File
Binary blob representation.
An interface for file plug-ins.
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
friend class ChkptWrtImpl
Definition XrdClFile.hh:793
friend class CheckpointImpl
Definition XrdClFile.hh:790
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
friend class ChkptWrtVImpl
Definition XrdClFile.hh:796
bool GetProperty(const std::string &name, std::string &value) const
Definition XrdClFile.cc:878
File(bool enablePlugIns=true)
Constructor.
Definition XrdClFile.cc:59
virtual ~File()
Destructor.
Definition XrdClFile.cc:79
bool SetProperty(const std::string &name, const std::string &value)
Definition XrdClFile.cc:867
XRootDStatus TryOtherServer(uint16_t timeout=0)
Definition XrdClFile.cc:838
XRootDStatus ReadV(uint64_t offset, struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
Definition XrdClFile.cc:565
Handle an async response.
Object stat info.
VectorWriteImpl< false > VectorWrite(Ctx< File > file, Arg< ChunkList > chunks, uint16_t timeout=0)
Factory for creating VectorWriteImpl objects.
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
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.
SyncImpl< false > Sync(Ctx< File > file, uint16_t timeout=0)
Factory for creating SyncImpl objects.
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
CloseImpl< false > Close(Ctx< File > file, uint16_t timeout=0)
Factory for creating CloseImpl objects.
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size, uint16_t timeout)
FcntlImpl< false > Fcntl
PgReadImpl< false > PgRead(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
WriteVImpl< false > WriteV(Ctx< File > file, Arg< uint64_t > offset, Arg< std::vector< iovec > > iov, uint16_t timeout=0)
Factory for creating WriteVImpl objects.
VisaImpl< false > Visa
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
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.
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
PgWriteImpl< false > PgWrite(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, Arg< std::vector< uint32_t > > cksums, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
std::vector< ChunkInfo > ChunkList
List of chunks.
VectorReadImpl< false > VectorRead(Ctx< File > file, Arg< ChunkList > chunks, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating VectorReadImpl objects.
OpenImpl< false > Open(Ctx< File > file, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Response NullRef< Response >::value
none object for initializing empty Optional
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.