CernVM-FS  2.12.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 #include "util/string.h"
16 
17 namespace cvmfs {
18 
27 class MemSink : public Sink {
28  public:
29  MemSink() : Sink(true), size_(0), pos_(0),
30  data_(NULL), max_size_(kMaxMemSize) { }
31  explicit MemSink(size_t size);
32  virtual ~MemSink() { FreeData(); }
33 
43  virtual int64_t Write(const void *buf, uint64_t sz);
44 
51  virtual int Reset();
52 
62  virtual int Purge() {
63  return Reset();
64  }
65 
69  virtual bool IsValid();
70 
76  virtual int Flush() {
77  return 0;
78  }
79 
96  virtual bool Reserve(size_t size);
97 
104  virtual bool RequiresReserve() {
105  return true;
106  }
107 
111  virtual std::string Describe();
112 
117  void Adopt(size_t size, size_t pos, unsigned char *data,
118  bool is_owner = true);
119 
120  size_t size() { return size_; }
121  size_t pos() { return pos_; }
122  unsigned char* data() { return data_; }
123 
127  static const size_t kMaxMemSize = 1024ul * 1024ul;
128 
129  private:
130  void FreeData() {
131  if (is_owner_) {
132  free(data_);
133  }
134  }
135 
136  size_t size_;
137  size_t pos_;
138  unsigned char *data_;
139  const size_t max_size_;
140 };
141 
142 } // namespace cvmfs
143 
144 #endif // CVMFS_NETWORK_SINK_MEM_H_
virtual std::string Describe()
Definition: sink_mem.cc:112
size_t pos_
Definition: sink_mem.h:137
unsigned char * data()
Definition: sink_mem.h:122
virtual ~MemSink()
Definition: sink_mem.h:32
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:120
const size_t max_size_
Definition: sink_mem.h:139
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:136
virtual int Purge()
Definition: sink_mem.h:62
unsigned char * data_
Definition: sink_mem.h:138
virtual int Flush()
Definition: sink_mem.h:76
void FreeData()
Definition: sink_mem.h:130
virtual bool RequiresReserve()
Definition: sink_mem.h:104
size_t pos()
Definition: sink_mem.h:121
virtual int Reset()
Definition: sink_mem.cc:52
bool is_owner_
Definition: sink.h:99
static const size_t kMaxMemSize
Definition: sink_mem.h:127