CMS 3D CMS Logo

File.h
Go to the documentation of this file.
1 #ifndef STORAGE_FACTORY_FILE_H
2 #define STORAGE_FACTORY_FILE_H
3 
8 #include <string>
9 
11 class File : public IOChannel, public Storage {
12 public:
13  File(void);
14  File(IOFD fd, bool autoclose = true);
15  File(const char *name, int flags = IOFlags::OpenRead, int perms = 0666);
16  File(const std::string &name, int flags = IOFlags::OpenRead, int perms = 0666);
17  ~File(void) override;
18  // implicit copy constructor
19  // implicit assignment operator
20 
21  virtual void create(const char *name, bool exclusive = false, int perms = 0666);
22  virtual void create(const std::string &name, bool exclusive = false, int perms = 0666);
23  virtual void open(const char *name, int flags = IOFlags::OpenRead, int perms = 0666);
24  virtual void open(const std::string &name, int flags = IOFlags::OpenRead, int perms = 0666);
25  virtual void attach(IOFD fd);
26 
27  using Storage::position;
28  using Storage::read;
29  using Storage::readv;
30  using Storage::write;
31  using Storage::writev;
32 
33  bool prefetch(const IOPosBuffer *what, IOSize n) override;
34  IOSize read(void *into, IOSize n) override;
35  IOSize read(void *into, IOSize n, IOOffset pos) override;
36  IOSize readv(IOBuffer *into, IOSize length) override;
37 
38  IOSize write(const void *from, IOSize n) override;
39  IOSize write(const void *from, IOSize n, IOOffset pos) override;
40  IOSize writev(const IOBuffer *from, IOSize length) override;
41 
42  IOOffset size(void) const override;
43  IOOffset position(IOOffset offset, Relative whence = SET) override;
44 
45  void resize(IOOffset size) override;
46 
47  void flush(void) override;
48  void close(void) override;
49  virtual void abort(void);
50 
51  virtual void setAutoClose(bool closeit);
52 
53 private:
54  enum { InternalAutoClose = 4096 }; //< Close on delete
55 
56  File(IOFD fd, unsigned flags);
57 
58  File *duplicate(bool copy) const;
59  File *duplicate(File *child) const;
60  static IOFD sysduplicate(IOFD fd);
61  static void sysopen(const char *name, int flags, int perms, IOFD &newfd, unsigned &newflags);
62  static bool sysclose(IOFD fd, int *error = nullptr);
63 
64  unsigned m_flags;
65 };
66 
67 #endif // STORAGE_FACTORY_FILE_H
virtual void setAutoClose(bool closeit)
Definition: File.cc:98
IOSize writev(const IOBuffer *from, IOSize length) override
Definition: File.cc:225
unsigned m_flags
Definition: File.h:64
virtual IOSize readv(IOPosBuffer *into, IOSize buffers)
Definition: Storage.cc:24
static void sysopen(const char *name, int flags, int perms, IOFD &newfd, unsigned &newflags)
Definition: UnixFile.cc:17
virtual void create(const char *name, bool exclusive=false, int perms=0666)
Definition: File.cc:131
virtual void attach(IOFD fd)
Definition: File.cc:178
IOSize write(const void *from, IOSize n) override
Definition: File.cc:209
IOOffset size(void) const override
Definition: UnixFile.cc:90
Relative
Definition: Storage.h:22
virtual void open(const char *name, int flags=IOFlags::OpenRead, int perms=0666)
Definition: File.cc:156
virtual IOSize write(const void *from, IOSize n, IOOffset pos)
Definition: Storage.cc:44
virtual void abort(void)
Definition: File.cc:254
static bool sysclose(IOFD fd, int *error=nullptr)
Definition: UnixFile.cc:135
virtual IOOffset position(void) const
Definition: Storage.cc:72
void close(void) override
Definition: File.cc:241
IOSize readv(IOBuffer *into, IOSize length) override
Definition: File.cc:206
File(void)
Definition: File.cc:57
static IOFD sysduplicate(IOFD fd)
Definition: UnixFile.cc:9
int read(void)
Definition: IOInput.cc:52
void flush(void) override
Definition: UnixFile.cc:122
void resize(IOOffset size) override
Definition: UnixFile.cc:114
~File(void) override
Definition: File.cc:87
int64_t IOOffset
Definition: IOTypes.h:19
int IOFD
Definition: IOTypes.h:22
File * duplicate(bool copy) const
Definition: File.cc:110
size_t IOSize
Definition: IOTypes.h:14
virtual IOFD fd(void) const
Definition: IOChannel.cc:69
Definition: File.h:11
bool prefetch(const IOPosBuffer *what, IOSize n) override
Definition: File.cc:185
virtual IOSize writev(const IOPosBuffer *from, IOSize buffers)
Definition: Storage.cc:57