summaryrefslogtreecommitdiff
path: root/src/chunked.hh
blob: 511ae55f1ee4f1f3fd9a9c21a7f6d9fd73f98853 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// -*- mode: c++; c-basic-offset: 2; -*-

#ifndef CHUNKED_HH
#define CHUNKED_HH

#include <cstddef>
#include <functional>

class Chunked {
public:
  virtual ~Chunked() { }

  typedef std::function<void(void const* data, size_t avail)> DataCallback;

  static Chunked* create();
  static Chunked* create(DataCallback const& callback);

  virtual size_t add(void const* data, size_t avail) = 0;
  virtual bool good() const = 0;
  virtual bool eof() const = 0;

protected:
  Chunked() {}
  Chunked(Chunked const&) = delete;
};

#endif  // CHUNKED_HH