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
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
struct stat Stat
Definition XrdCks.cc:49
#define XRD_WARN_UNUSED_RESULT
int Mode
Binary blob representation.
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
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
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
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.