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 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
451 void *buffer,
452 ResponseHandler *handler,
453 uint16_t timeout = 0 )
455
456 //------------------------------------------------------------------------
472 //------------------------------------------------------------------------
474 void *buffer,
475 VectorReadInfo *&vReadInfo,
476 uint16_t timeout = 0 )
478
479 //------------------------------------------------------------------------
487 //------------------------------------------------------------------------
489 ResponseHandler *handler,
490 uint16_t timeout = 0 )
492
493 //------------------------------------------------------------------------
500 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
584 ResponseHandler *handler,
585 uint16_t timeout = 0 )
587
588 //------------------------------------------------------------------------
597 //------------------------------------------------------------------------
599 Buffer *&response,
600 uint16_t timeout = 0 )
602
603 //------------------------------------------------------------------------
612 //------------------------------------------------------------------------
614 uint16_t timeout = 0 )
616
617 //------------------------------------------------------------------------
624 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
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;
850 };
851}
852
853#endif // __XRD_CL_FILE_HH__
unsigned char kXR_char
Definition XPtypes.hh:65
#define XRD_WARN_UNUSED_RESULT
Definition XrdOucCompiler.hh:31
Binary blob representation.
Definition XrdClBuffer.hh:34
Checkpoint operation (.
Definition XrdClCheckpointOperation.hh:29
Checkpointed write operation (.
Definition XrdClCheckpointOperation.hh:84
Checkpointed WriteV operation (.
Definition XrdClCheckpointOperation.hh:144
Fcntl operation (.
Definition XrdClFileOperations.hh:884
An interface for file plug-ins.
Definition XrdClPlugInInterface.hh:39
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
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
bool IsSecure() const
Check if the file is using an encrypted connection.
virtual ~File()
Destructor.
XRootDStatus ChkptWrtV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
VirtRedirect
Definition XrdClFile.hh:50
@ EnableVirtRedirect
Definition XrdClFile.hh:51
@ DisableVirtRedirect
Definition XrdClFile.hh:52
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 Checkpoint(kXR_char code, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
File(VirtRedirect virtRedirect, bool enablePlugIns=true)
Constructor.
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
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 WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
FileImpl * pImpl
Definition XrdClFile.hh:847
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
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
FilePlugIn * pPlugIn
Definition XrdClFile.hh:848
bool SetProperty(const std::string &name, const std::string &value)
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
bool pEnablePlugIns
Definition XrdClFile.hh:849
XRootDStatus TryOtherServer(uint16_t timeout=0)
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
XRootDStatus ReadV(uint64_t offset, struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus ChkptWrt(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0)
Definition XrdClOptional.hh:44
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
Object stat info.
Definition XrdClXRootDResponses.hh:400
Vector read info.
Definition XrdClXRootDResponses.hh:1061
Visa operation (.
Definition XrdClFileOperations.hh:929
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdClAction.hh:34
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition XrdClXRootDResponses.hh:289
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition XrdClXRootDResponses.hh:1055
Definition XrdOucJson.hh:4517
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:295
Extended attributes with status.
Definition XrdClXRootDResponses.hh:313
Definition XrdOucIOVec.hh:65