Zero  0.1.0
iterator.h
Go to the documentation of this file.
1 #ifndef __ITERATOR_H
2 #define __ITERATOR_H
3 
4 #include "thread_wrapper.h"
5 #include "sm_base.h"
6 #include "generic_page.h"
7 
8 #include <fstream>
9 
10 #include "ringbuffer.h"
11 
13 public:
14  static const size_t PAGE_SIZE;
15 
16  PageIterator(string inPath, string outPath,
17  unsigned ioSizeInPages = 128);
18 
19  PageIterator(string inPath, string outPath, AsyncRingBuffer* buffer,
20  unsigned ioSizeInPages = 128);
21 
22  virtual ~PageIterator();
23 
24  generic_page* next();
25 
26  bool hasNext();
27 
28  long getCount() {
29  return count;
30  }
31 
32  void writePage(char* buf, size_t index);
33 
34  virtual void run();
35 
36  // for debug
37  void seek(size_t pageIndex);
38 
39 private:
40  string inPath;
41 
42  string outPath;
43 
44  size_t blockSize;
45 
46  ifstream in;
47 
48  ofstream out;
49 
50  long count;
51 
52  off_t fpos;
53 
54  size_t bpos;
55 
56  size_t bytesRead;
57 
59 
60  char* buf;
61 
63 
65 
67 
68  void openOutput();
69 
70  void readBlock(char* b);
71 
72  void writeBlock(char* b);
73 };
74 
75 #endif // __ITERATOR_H
Definition: ringbuffer.h:38
bool hasNext()
Definition: iterator.cpp:91
char * buf
Definition: iterator.h:60
int blocksRead
Definition: iterator.h:58
long getCount()
Definition: iterator.h:28
void seek(size_t pageIndex)
Definition: iterator.cpp:146
Definition: thread_wrapper.h:16
A generic page view: any Zero page can be viewed as being of this type but it only exposes fields sha...
Definition: generic_page.h:121
virtual ~PageIterator()
Definition: iterator.cpp:41
void writeBlock(char *b)
Definition: iterator.cpp:79
ofstream out
Definition: iterator.h:48
AsyncRingBuffer * asyncBuf
Definition: iterator.h:66
long count
Definition: iterator.h:50
PageID prevPageNo
Definition: iterator.h:64
off_t fpos
Definition: iterator.h:52
static const size_t PAGE_SIZE
Definition: iterator.h:14
Definition: iterator.h:12
void openOutput()
Definition: iterator.cpp:53
generic_page * next()
Definition: iterator.cpp:99
uint32_t PageID
Definition: basics.h:45
void writePage(char *buf, size_t index)
Definition: iterator.cpp:86
PageIterator(string inPath, string outPath, unsigned ioSizeInPages=128)
Definition: iterator.cpp:8
size_t bpos
Definition: iterator.h:54
size_t blockSize
Definition: iterator.h:44
ifstream in
Definition: iterator.h:46
void readBlock(char *b)
Definition: iterator.cpp:64
string inPath
Definition: iterator.h:40
generic_page currentPage
Definition: iterator.h:62
string outPath
Definition: iterator.h:42
virtual void run()
Definition: iterator.cpp:153
size_t bytesRead
Definition: iterator.h:56