CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sink_file.h
Go to the documentation of this file.
1 
5 #ifndef CVMFS_NETWORK_SINK_FILE_H_
6 #define CVMFS_NETWORK_SINK_FILE_H_
7 
8 #include <cerrno>
9 #include <cstdio>
10 #include <string>
11 
12 #include "sink.h"
13 #include "util/posix.h"
14 
15 namespace cvmfs {
16 
25 class FileSink : public Sink {
26  public:
27  explicit FileSink(FILE *destination_file)
28  : Sink(false), file_(destination_file) { }
29  FileSink(FILE *destination_file, bool is_owner)
30  : Sink(is_owner), file_(destination_file) { }
31 
32  virtual ~FileSink() {
33  if (is_owner_ && file_) {
34  (void)fclose(file_);
35  }
36  }
37 
44  virtual int64_t Write(const void *buf, uint64_t sz);
45 
52  virtual int Reset();
53 
54  virtual int Purge();
55 
59  virtual bool IsValid() { return file_ != NULL; }
60 
66  virtual int Flush() { return fflush(file_) == 0 ? 0 : -errno; }
67 
84  virtual bool Reserve(size_t /*size*/) { return true; }
85 
92  virtual bool RequiresReserve() { return false; }
93 
97  virtual std::string Describe();
98 
103  void Adopt(FILE *file, bool is_owner = true);
104 
105  FILE *file() { return file_; }
106 
107 
108  private:
109  FILE *file_;
110 };
111 
112 } // namespace cvmfs
113 
114 #endif // CVMFS_NETWORK_SINK_FILE_H_
FileSink(FILE *destination_file, bool is_owner)
Definition: sink_file.h:29
virtual int Purge()
Definition: sink_file.cc:54
virtual std::string Describe()
Definition: sink_file.cc:71
virtual bool IsValid()
Definition: sink_file.h:59
virtual bool RequiresReserve()
Definition: sink_file.h:92
virtual int Flush()
Definition: sink_file.h:66
void Adopt(FILE *file, bool is_owner=true)
Definition: sink_file.cc:76
FILE * file()
Definition: sink_file.h:105
virtual int64_t Write(const void *buf, uint64_t sz)
Definition: sink_file.cc:19
virtual bool Reserve(size_t)
Definition: sink_file.h:84
virtual int Reset()
Definition: sink_file.cc:38
FileSink(FILE *destination_file)
Definition: sink_file.h:27
bool is_owner_
Definition: sink.h:100
virtual ~FileSink()
Definition: sink_file.h:32