CernVM-FS  2.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sink_mem.h
Go to the documentation of this file.
1 
5 #ifndef CVMFS_NETWORK_SINK_MEM_H_
6 #define CVMFS_NETWORK_SINK_MEM_H_
7 
8 #include <cassert>
9 #include <cstring>
10 #include <string>
11 
12 #include "sink.h"
13 #include "util/posix.h"
14 #include "util/smalloc.h"
15 
16 namespace cvmfs {
17 
26 class MemSink : public Sink {
27  public:
29  : Sink(true), size_(0), pos_(0), data_(NULL), max_size_(kMaxMemSize) { }
30  explicit MemSink(size_t size);
31  virtual ~MemSink() { FreeData(); }
32 
42  virtual int64_t Write(const void *buf, uint64_t sz);
43 
50  virtual int Reset();
51 
61  virtual int Purge() { return Reset(); }
62 
66  virtual bool IsValid();
67 
73  virtual int Flush() { return 0; }
74 
91  virtual bool Reserve(size_t size);
92 
99  virtual bool RequiresReserve() { return true; }
100 
104  virtual std::string Describe();
105 
110  void Adopt(size_t size, size_t pos, unsigned char *data,
111  bool is_owner = true);
112 
113  size_t size() { return size_; }
114  size_t pos() { return pos_; }
115  unsigned char *data() { return data_; }
116 
120  static const size_t kMaxMemSize = 1024ul * 1024ul;
121 
122  private:
123  void FreeData() {
124  if (is_owner_) {
125  free(data_);
126  }
127  }
128 
129  size_t size_;
130  size_t pos_;
131  unsigned char *data_;
132  const size_t max_size_;
133 };
134 
135 } // namespace cvmfs
136 
137 #endif // CVMFS_NETWORK_SINK_MEM_H_
virtual std::string Describe()
Definition: sink_mem.cc:112
size_t pos_
Definition: sink_mem.h:130
unsigned char * data()
Definition: sink_mem.h:115
virtual ~MemSink()
Definition: sink_mem.h:31
virtual bool Reserve(size_t size)
Definition: sink_mem.cc:88
virtual bool IsValid()
Definition: sink_mem.cc:67
size_t size()
Definition: sink_mem.h:113
const size_t max_size_
Definition: sink_mem.h:132
virtual int64_t Write(const void *buf, uint64_t sz)
Definition: sink_mem.cc:30
void Adopt(size_t size, size_t pos, unsigned char *data, bool is_owner=true)
Definition: sink_mem.cc:123
size_t size_
Definition: sink_mem.h:129
virtual int Purge()
Definition: sink_mem.h:61
unsigned char * data_
Definition: sink_mem.h:131
virtual int Flush()
Definition: sink_mem.h:73
void FreeData()
Definition: sink_mem.h:123
virtual bool RequiresReserve()
Definition: sink_mem.h:99
size_t pos()
Definition: sink_mem.h:114
virtual int Reset()
Definition: sink_mem.cc:52
bool is_owner_
Definition: sink.h:100
static const size_t kMaxMemSize
Definition: sink_mem.h:120